change_mnt_propagation(): calculate propagation source only if we'll need it
authorAl Viro <viro@zeniv.linux.org.uk>
Fri, 15 Aug 2025 19:23:08 +0000 (15:23 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 19 Aug 2025 16:05:59 +0000 (12:05 -0400)
commitfb924b7b8669503582e003dd7b7340ee49029801
tree1e935a5c7e6407cc9f44153b876cc9919d1a64f1
parentcffd0441872e7f6b1fce5e78fb1c99187a291330
change_mnt_propagation(): calculate propagation source only if we'll need it

We only need it when mount in question was sending events downstream (then
recepients need to switch to new master) or the mount is being turned into
slave (then we need a new master for it).

That wouldn't be a big deal, except that it causes quite a bit of work
when umount_tree() is taking a large peer group out.  Adding a trivial
"don't bother calling propagation_source() unless we are going to use
its results" logics improves the things quite a bit.

We are still doing unnecessary work on bulk removals from propagation graph,
but the full solution for that will have to wait for the next merge window.

Fixes: 955336e204ab "do_make_slave(): choose new master sanely"
Reviewed-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/pnode.c