fstests: tests for cloned filesystem validation and f_fsid
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest21 patches 1 replyIn review
Patches in v1 No applies recorded yet
Reviews trailers per patch
2 of 21 patches have a Reviewed-by or Acked-by.
| Patch | Darrick J. Wong | Zorro Lang |
|---|---|---|
| 1/21 | ||
| 2/21 | ||
| 3/21 | R-b | |
| 4/21 | R-b | R-b |
| 5/21 | ||
| 6/21 | ||
| 7/21 | ||
| 8/21 | ||
| 9/21 | ||
| 10/21 | ||
| 11/21 | ||
| 12/21 | ||
| 13/21 | ||
| 14/21 | ||
| 15/21 | ||
| 16/21 | ||
| 17/21 | ||
| 18/21 | ||
| 19/21 | ||
| 20/21 | ||
| 21/21 |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [PATCH 0/21] fstests: tests for cloned filesystem validation and f_fsid
This series continues the work from the earlier "test coverage for cloned filesystem ids" series (last posted as v8 [1]) and has been tested against the major filesystems: Btrfs, XFS, ext4, and f2fs.
Although this version incorporates the review feedback received on v8, it expands substantially with additional infrastructure helpers, an extra test case to cover the recent regression report, and migration/cleanup of existing generic/744. Because the patch count grew from 13 to 21 patches, disrupting the previous patch numbering and scope, I have reset the versioning and updated the subject line to better reflect the broader validation coverage.
The core motivation remains identical: testing that mounting a block-level cloned filesystem concurrently with the original filesystem behaves correctly across filesystems and VFS subsystems (fanotify, statfs/f_fsid, libblkid resolution, IMA measurement, exportfs file handles, and metadata_uuid handling).
Summary of major changes since v8:
- Added 1 new regression test case to verify statfs f_fsid derivation against FS UUID.
- Dropped the test case verifying f_fsid persistence across mount cycles on cloned filesystems, as this assumption is no longer valid following the Btrfs kernel regression fix [2].
- Introduced common helpers:
. _require_security_ima() and _require_metadata_uuid().
. _scratch_mkfs_uuid() and helpers for f_fsid verification.
- Migrated generic/744 to utilize the new common clone helpers.
- Worked on the review comments.
Details of changes:
- _create_cloned_loop_devs():
. Renamed from _loop_image_create_clone() to _create_cloned_loop_devs(). . Relocated backing image files from "$TEST_DIR/${seq}.*" to a dedicated
directory "$TEST_DIR/${seq}/*". . Added internal call to _require_clone_mount().
. Switched from _create_loop_device() to _create_loop_device_like_bdev()
to guarantee identical logical/physical sector sizes (512 vs 4096) between the original and cloned loop devices.
. Used an intermediate local setup step to ensure consistent Direct I/O
attributes across both loop devices (preventing the first device from enabling DIO while the cloned device fell back to buffered mode).
. Added device geometry and DIO attribute dump to $seqres.full for debugging. . Renamed teardown helper _loop_image_destroy() to _destroy_cloned_loop_devs().
- _clone_mount_options():
. Renamed from _clone_mount_option() to _clone_mount_options().
- _require_metadata_uuid():
. Factored out prerequisite checks from _change_metadata_uuid() into a new
dedicated helper _require_metadata_uuid() and invoked it accordingly.
- _require_clone_mount():
. Introduced new helper to check kernel support for concurrent clone mounts. . Removed obsolete _require_duplicate_fsid() in favor of _require_clone_mount().
- _require_security_ima():
. Introduced new helper to check securityfs and IMA policy availability.
- _create_loop_device_like_bdev():
. Removed unused local variable 'dev'.
- Test Cases common update:
- Adjusted test groups: replaced 'clone' with 'tempfsid'.
- Standardized test exits: replaced open-coded "status=0; exit" with "_exit 0".
- Dropped stale "_require_block_device $TEST_DEV" checks left over from before migrating tests to loop devices.
- Percolated helper renames across all tests:
. _loop_image_create_clone -> _create_cloned_loop_devs
. _loop_image_destroy -> _destroy_cloned_loop_devs
. _clone_mount_option -> _clone_mount_options- Added cleanup of "$TEST_DIR/$seq" in test exit/cleanup handlers.
- Test Cases Individual Updates:
- generic/744:
. Replaced _require_duplicate_fsid with _require_clone_mount().
. Migrated to common _create_cloned_loop_devs() and _clone_mount_options().
- generic/902:
. New regression test case added to verify statfs f_fsid derivation against filesystem UUID.
- generic/903:
. Added --noheadings flag to findmnt queries for cleaner output parsing.
- generic/904:
. Dropped 'auto' and 'quick' from test groups due to runtime and policy requirements. . Updated referenced kernel commit IDs.
[1] https://lore.kernel.org/fstests/[email protected]
[2] 72de4807ba84 ("btrfs: derive f_fsid with dev_t only when temp_fsid is active")
Anand Jain (21):
fstests: introduce _require_clone_mount() helper
fstests: introduce _create_cloned_loop_devs() helper
fstests: add _clone_mount_options() helper
fstests: add FSNOTIFYWAIT_PROG
fstests: add _require_fanotify_function
fstests: add _require_unique_f_fsid() helper
fstests: add SEMANAGE_PROG
fstests: verify fanotify isolation on cloned filesystems
fstests: introduce helper _scratch_mkfs_uuid()
fstests: add helpers to verify the expected f_fsid
fstests: verify statfs f_fsid is derived from the filesystem UUID
fstests: verify libblkid resolution of duplicate UUIDs
fstests: introduce _require_security_ima() helper
fstests: verify IMA isolation on cloned filesystems
fstests: verify exportfs file handles on cloned filesystems
fstests: introduce _require_metadata_uuid() helper
fstests: add _change_metadata_uuid helper
fstests: test UUID consistency for clones with metadata_uuid
fstests: generic/744: use new helper _require_clone_mount()
fstests: generic/744: migrate to _create_cloned_loop_devs()
fstests: _create_loop_device_like_bdev() remove unused variable
common/config | 2 + common/rc | 262 +++++++++++++++++++++++++++++++++++++++--- tests/generic/744 | 72 +++++------- tests/generic/901 | 142 +++++++++++++++++++++++ tests/generic/901.out | 7 ++ tests/generic/902 | 38 ++++++ tests/generic/902.out | 2 + tests/generic/903 | 71 ++++++++++++ tests/generic/903.out | 6 + tests/generic/904 | 113 ++++++++++++++++++ tests/generic/904.out | 10 ++ tests/generic/905 | 79 +++++++++++++ tests/generic/905.out | 2 + tests/generic/906 | 74 ++++++++++++ tests/generic/906.out | 6 + 15 files changed, 827 insertions(+), 59 deletions(-) create mode 100644 tests/generic/901 create mode 100644 tests/generic/901.out create mode 100644 tests/generic/902 create mode 100644 tests/generic/902.out create mode 100644 tests/generic/903 create mode 100644 tests/generic/903.out create mode 100644 tests/generic/904 create mode 100644 tests/generic/904.out create mode 100644 tests/generic/905 create mode 100644 tests/generic/905.out create mode 100644 tests/generic/906 create mode 100644 tests/generic/906.out
Signature · 1 line
2.43.0