Hi Linus, /* Summary */ This contains an extension to the move_mount() syscall making it possible to add a single private mount into an existing propagation tree. The use-case comes from the criu folks which have been struggling with restoring complex mount trees for a long time. Variations of this work have been discussed at Plumbers before (e.g., https://www.linuxplumbersconf.org/event/7/contributions/640/). The extension to move_mount() enables criu to restore any set of mount namespaces, mount trees and sharing group trees without introducing yet more complexity into mount propagation itself. The changes required to criu to make use of this and restore complex propagation trees are available at https://github.com/Snorch/criu/commits/mount-v2-poc. A cleaned-up version of this will go up for merging into the main criu repo after this lands. (In case any question come up I'll be on vacation next week so responding might take a while.) /* Testing */ All patches are based on v5.14-rc3 and have been sitting in linux-next. No build failures or warnings were observed. All old and new tests are passing. /* Conflicts */ At the time of creating this PR no merge conflicts were reported from linux-next and no merge conflicts showed up doing a test-merge with current mainline. The following changes since commit ff1176468d368232b684f75e82563369208bc371: Linux 5.14-rc3 (2021-07-25 15:35:14 -0700) are available in the Git repository at: git@xxxxxxxxxxxxxxxxxxx:pub/scm/linux/kernel/git/brauner/linux tags/fs.move_mount.move_mount_set_group.v5.15 for you to fetch changes up to 8374f43123a5957326095d108a12c49ae509624f: tests: add move_mount(MOVE_MOUNT_SET_GROUP) selftest (2021-07-26 14:45:19 +0200) Please consider pulling these changes from the signed fs.move_mount.move_mount_set_group.v5.15 tag. Thanks! Christian ---------------------------------------------------------------- fs.move_mount.move_mount_set_group.v5.15 ---------------------------------------------------------------- Pavel Tikhomirov (2): move_mount: allow to add a mount into an existing group tests: add move_mount(MOVE_MOUNT_SET_GROUP) selftest fs/namespace.c | 77 ++++- include/uapi/linux/mount.h | 3 +- tools/testing/selftests/Makefile | 1 + .../selftests/move_mount_set_group/.gitignore | 1 + .../selftests/move_mount_set_group/Makefile | 7 + .../testing/selftests/move_mount_set_group/config | 1 + .../move_mount_set_group_test.c | 375 +++++++++++++++++++++ 7 files changed, 463 insertions(+), 2 deletions(-) create mode 100644 tools/testing/selftests/move_mount_set_group/.gitignore create mode 100644 tools/testing/selftests/move_mount_set_group/Makefile create mode 100644 tools/testing/selftests/move_mount_set_group/config create mode 100644 tools/testing/selftests/move_mount_set_group/move_mount_set_group_test.c