generic: add fstests for idmapped mounts
authorChristian Brauner <christian.brauner@ubuntu.com>
Mon, 12 Apr 2021 11:57:04 +0000 (13:57 +0200)
committerEryu Guan <guaneryu@gmail.com>
Sun, 18 Apr 2021 12:53:53 +0000 (20:53 +0800)
commit0d1af68e1a9d6738178d0054d121ff6962c7fead
treef08fca9938bfdbce2f3c029419a480df94a205b6
parenta7f90c1433f383e337d67f310ec7878781108ec4
generic: add fstests for idmapped mounts

Add a test suite to verify the behavior of idmapped mounts. The test
suite also includes a range of vfs tests to verify that no regressions
are introduced by idmapped mounts. The following tests are currently
available with more to come in the future:

01. posix acls on regular and idmapped mounts
02. create operations in user namespace
03. device node creation in user namespace
04. expected ownership on idmapped mounts
05. fscaps on regular mounts
06. fscaps on idmapped mounts
07. fscaps on idmapped mounts in user namespace
08. fscaps on idmapped mounts in user namespace
    with different id mappings
09. mapped fsids
10. unmapped fsids
11. cross mount hardlink
12. cross idmapped mount hardlink
13. hardlinks from idmapped mounts
14. hardlinks from idmapped mounts in user namespace
15. io_uring
16. io_uring in user namespace
17. io_uring from idmapped mounts
18. io_uring from idmapped mounts in user namespace
19. io_uring from idmapped mounts with unmapped ids
20. io_uring from idmapped mounts with unmapped ids in user namespace
21. following protected symlinks on regular mounts
22. following protected symlinks on idmapped mounts
23. following protected symlinks on idmapped mounts in user namespace
24. cross mount rename
25. cross idmapped mount rename
26. rename from idmapped mounts
27. rename from idmapped mounts in user namespace
28. symlink from regular mounts
29. symlink from idmapped mounts
30. symlink from idmapped mounts in user namespace
31. setid binaries on regular mounts
32. setid binaries on idmapped mounts
33. setid binaries on idmapped mounts in user namespace
34. setid binaries on idmapped mounts in user namespace
    with different id mappings
35. sticky bit unlink operations on regular mounts
36. sticky bit unlink operations on idmapped mounts
37. sticky bit unlink operations on idmapped mounts in user namespace
38. sticky bit rename operations on regular mounts
39. sticky bit rename operations on idmapped mounts
40. sticky bit rename operations on idmapped mounts in user namespace
41. create operations in directories with setgid bit set
42. create operations in directories with setgid bit set
    on idmapped mounts
43. create operations in directories with setgid bit set
    on idmapped mounts in user namespace
44. verify create operations and ownership with racing threads idmapping
    a mount
45. setattr truncate operations on regular mounts
46. setattr truncate operations on idmapped mounts
47. setattr truncate operations on idmapped mounts in user namespace

Here's some sample output when running with DEBUG_TRACE defined:

Cc: Amir Goldstein <amir73il@gmail.com>
Cc: Eryu Guan <guan@eryu.me>
Cc: fstests@vger.kernel.org
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
18 files changed:
.gitignore
README
common/rc
configure.ac
include/builddefs.in
m4/Makefile
m4/package_libcap.m4 [new file with mode: 0644]
src/Makefile
src/detached_mounts_propagation.c
src/feature.c
src/idmapped-mounts/Makefile [new file with mode: 0644]
src/idmapped-mounts/idmapped-mounts.c [new file with mode: 0644]
src/idmapped-mounts/missing.h [new file with mode: 0644]
src/idmapped-mounts/utils.c [new file with mode: 0644]
src/idmapped-mounts/utils.h [new file with mode: 0644]
tests/generic/633 [new file with mode: 0755]
tests/generic/633.out [new file with mode: 0644]
tests/generic/group