Re: [PATCH v6 04/11] fstests: add _require_unique_f_fsid() helper
"Darrick J. Wong" <[email protected]>
| 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 | <20260529043056.GE6070@frogsfrogsfrogs> |
On Thu, May 28, 2026 at 12:05:35PM +0800, Anand Jain wrote: > 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 | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/common/rc b/common/rc > index 937f478963b4..5446552aed92 100644 > --- a/common/rc > +++ b/common/rc > @@ -6314,6 +6314,27 @@ _require_fanotify_ioerrors() > _notrun "$FSTYP does not support fanotify ioerrors" > } > > +# Ext4 derives f_fsid from the superblock UUID, meaning clones share the > +# same f_fsid until their UUIDs diverge. Conversely, XFS, Btrfs, > +# and F2FS ensure f_fsid remains unique per filesystem instance (often by > +# deriving it from the UUID and underlying block device.) > +# > +# Across all filesystems, a UUID collision causes libblkid tools to return > +# non-deterministic device mappings. It is ultimately the responsibility "device mappings", as in /dev/disk/by-id/$UUID ? > +# of the userspace utility or use-case to enforce uniqueness when a clone > +# diverges. For details, see mailing list thread discussions titled: > +# "ext4: derive f_fsid from block device to avoid collisions". How about providing a direct lore link? --D > +_require_unique_f_fsid() > +{ > + # 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. > + if [ "$FSTYP" == "ext4" ]; then > + _notrun "Target filesystem ($FSTYP) does not guarantee unique f_fsid on clones." > + fi > +} > + > + > # 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 > >