Linux XFS filesystem development
 help / color / mirror / Atom feed
* [PATCH] xfs: check v5 superblock features early
@ 2026-07-28  8:04 Christoph Hellwig
  2026-07-28 15:26 ` Darrick J. Wong
  0 siblings, 1 reply; 4+ messages in thread
From: Christoph Hellwig @ 2026-07-28  8:04 UTC (permalink / raw)
  To: cem; +Cc: darrick.wong, linux-xfs

When working on a new features that reuses the existing pad in the
superblock, I noticed that mounting such a file system on an old kernel
logs a rather confusing warning:

    XFS (vdc): Metadir superblock padding fields must be zero.

This is because we only validate the various feature fields in v5
superblocks after the common superblock validation helper is called.

Fix this by calling the feature validation first.  To make this more
obvious, rename xfs_validate_sb_read to xfs_validate_sb_features and only
call it for v5 file systems.

Fixes: eca383fcd63b ("xfs: refactor superblock verifiers")
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 fs/xfs/libxfs/xfs_sb.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/fs/xfs/libxfs/xfs_sb.c b/fs/xfs/libxfs/xfs_sb.c
index 47322adb7690..e3fc19440e0f 100644
--- a/fs/xfs/libxfs/xfs_sb.c
+++ b/fs/xfs/libxfs/xfs_sb.c
@@ -189,15 +189,12 @@ xfs_sb_version_to_features(
 	return features;
 }
 
-/* Check all the superblock fields we care about when reading one in. */
+/* Check for compatible v5 superblock features when reading a superblock */
 STATIC int
-xfs_validate_sb_read(
+xfs_validate_sb_features(
 	struct xfs_mount	*mp,
 	struct xfs_sb		*sbp)
 {
-	if (!xfs_sb_is_v5(sbp))
-		return 0;
-
 	/*
 	 * Version 5 superblock feature mask validation. Reject combinations
 	 * the kernel cannot support up front before checking anything else.
@@ -1118,10 +1115,12 @@ xfs_sb_read_verify(
 	 * because _verify_common checks the on-disk values.
 	 */
 	__xfs_sb_from_disk(&sb, dsb, false);
+	if (xfs_sb_is_v5(&sb)) {
+		error = xfs_validate_sb_features(mp, &sb);
+		if (error)
+			goto out_error;
+	}
 	error = xfs_validate_sb_common(mp, bp, &sb);
-	if (error)
-		goto out_error;
-	error = xfs_validate_sb_read(mp, &sb);
 
 out_error:
 	if (error == -EFSCORRUPTED || error == -EFSBADCRC)
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-07-28 15:47 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-28  8:04 [PATCH] xfs: check v5 superblock features early Christoph Hellwig
2026-07-28 15:26 ` Darrick J. Wong
2026-07-28 15:42   ` Christoph Hellwig
2026-07-28 15:47     ` Darrick J. Wong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox