[PATCH v8 05/13] fstests: add _require_unique_f_fsid() helper
Anand Jain <[email protected]> Sat, 25 Jul 2026 15:39:02 +0800
| Newsgroups | org.kernel.vger.fstests,net.sourceforge.lists.linux-f2fs-devel,org.kernel.vger.linux-btrfs,org.kernel.vger.linux-ext4,org.kernel.vger.linux-xfs |
|---|---|
| Message-ID | <878a21ea507cb955ed414072c82ab5e5493b8ae0.1784949155.git.asj@kernel.org> |
Add a helper to check if the target filesystem supports unique f_fsid tracking across cloned or snapshot instances. Certain filesystems like XFS, Btrfs, and F2FS ensure unique f_fsid identifiers per filesystem instance. However, Ext4 derives its f_fsid directly from its superblock UUID, which leads to identical f_fsid values on cloned images until the UUID is manually modified by userspace. Introduce _require_unique_f_fsid() to allow test cases requiring strict f_fsid uniqueness to skip gracefully on unsupported filesystems. Signed-off-by: Anand Jain <[email protected]> --- common/rc | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/common/rc b/common/rc index 21b516accdf7..f73251365a60 100644 --- a/common/rc +++ b/common/rc @@ -6356,6 +6356,33 @@ _require_fanotify_ioerrors() _notrun "$FSTYP does not support fanotify ioerrors" } +# Skip the test if the filesystem does not enforce unique f_fsids +# natively. Checking this dynamically requires recreating a clone +# layout, so we use a static lookup based on FSTYP. +# +# Across all filesystems, a UUID collision causes libblkid tools to return +# non-deterministic device mappings. It is ultimately the responsibility +# of the userspace utility or use-case to enforce uniqueness when a clone +# diverges. For details, see mailing list thread discussions: +# Link: https://lore.kernel.org/linux-ext4/[email protected]/ +_require_unique_f_fsid() +{ + case "$FSTYP" in + ext*) + # Ext4 derives f_fsid from the superblock UUID, meaning + # clones share the same f_fsid until their UUIDs + # diverge. + _notrun "Target filesystem ($FSTYP) does not guarantee unique f_fsid on clones." + ;; + *) + # Conversely, XFS, Btrfs, and F2FS ensure f_fsid remains + # unique per filesystem instance (often by deriving it + # from the UUID and underlying block device.) + ;; + esac +} + + # Computes a percentage of the available space in a filesystem and # returns that quantity in MB. The percentage must not contain a percent # sign ("%"). -- 2.43.0