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 --- 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/20260409131238.GC18443@macsyma-wired.lan/ +_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