On Wed, May 07, 2025 at 10:15:23PM +0100, Al Viro wrote: > [ > Help with testing and review would be very welcome; it does survive > xfstests and ltp. No visible regressions on kselftests either. > IIRC, Christian mentioned some bunch of mount-related regression > tests somewhere; was that a part of kselftests, or is it something > separate? I've made them all part of: tools/testing/selftests/mount_setattr/ So just run mount_setattr_test that should excercise most of the functionality. In addition simple clone LTP, compile and do: sudo ./kirk -f ltp -r fs_perms_simple fs_bind The crucial part is "fs_bind" which should excercise a slew of mount propagation tests I always run. > ] > > The underlying rules are simple: > * MNT_SHARED should be set iff ->mnt_group_id of new mount ends up > non-zero. > * mounts should be on the same ->mnt_share cyclic list iff they have > the same non-zero ->mnt_group_id value. > * CL_PRIVATE is mutually exclusive with MNT_SHARED, MNT_SLAVE, > MNT_SHARED_TO_SLAVE and MNT_EXPIRE; the whole point of that thing is to > get a clone of old mount that would *not* be on any namespace-related > lists. > > The above allows to make the logics more straightforward; what's more, > it makes the proof that invariants are maintained much simpler. > The variant in mainline is safe (aside of a very narrow race with > unsafe modification of mnt_flags right after we had the mount exposed > in superblock's ->s_mounts; theoretically it can race with ro remount > of the original, but it's not easy to hit), but proof of its correctness > is really unpleasant. > > Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> > --- Looks good, Reviewed-by: Christian Brauner <brauner@xxxxxxxxxx>