]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
fs/xfs: Add new superblock features added in Linux 6.12/6.13
authorDarrick J. Wong <djwong@kernel.org>
Mon, 3 Feb 2025 23:41:22 +0000 (15:41 -0800)
committerDaniel Kiper <daniel.kiper@oracle.com>
Wed, 26 Feb 2025 19:44:36 +0000 (20:44 +0100)
The Linux port of XFS added a few new features in 2024. The existing
GRUB driver doesn't attempt to read or write any of the new metadata,
so, all three can be added to the incompat allowlist.

On the occasion align XFS_SB_FEAT_INCOMPAT_NREXT64 value.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
grub-core/fs/xfs.c

index ab12814974721c4750c3169f59fe34f60cc42f03..33e16bde5f30dcb8a9cc8e21eb2683faaa07e590 100644 (file)
@@ -88,7 +88,10 @@ GRUB_MOD_LICENSE ("GPLv3+");
 #define XFS_SB_FEAT_INCOMPAT_META_UUID  (1 << 2)        /* metadata UUID */
 #define XFS_SB_FEAT_INCOMPAT_BIGTIME    (1 << 3)        /* large timestamps */
 #define XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR (1 << 4)       /* needs xfs_repair */
-#define XFS_SB_FEAT_INCOMPAT_NREXT64 (1 << 5)           /* large extent counters */
+#define XFS_SB_FEAT_INCOMPAT_NREXT64    (1 << 5)        /* large extent counters */
+#define XFS_SB_FEAT_INCOMPAT_EXCHRANGE  (1 << 6)        /* exchangerange supported */
+#define XFS_SB_FEAT_INCOMPAT_PARENT     (1 << 7)        /* parent pointers */
+#define XFS_SB_FEAT_INCOMPAT_METADIR    (1 << 8)        /* metadata dir tree */
 
 /*
  * Directory entries with ftype are explicitly handled by GRUB code.
@@ -98,6 +101,15 @@ GRUB_MOD_LICENSE ("GPLv3+");
  *
  * We do not currently verify metadata UUID, so it is safe to read filesystems
  * with the XFS_SB_FEAT_INCOMPAT_META_UUID feature.
+ *
+ * We do not currently replay the log, so it is safe to read filesystems
+ * with the XFS_SB_FEAT_INCOMPAT_EXCHRANGE feature.
+ *
+ * We do not currently read directory parent pointers, so it is safe to read
+ * filesystems with the XFS_SB_FEAT_INCOMPAT_PARENT feature.
+ *
+ * We do not currently look at realtime or quota metadata, so it is safe to
+ * read filesystems with the XFS_SB_FEAT_INCOMPAT_METADIR feature.
  */
 #define XFS_SB_FEAT_INCOMPAT_SUPPORTED \
        (XFS_SB_FEAT_INCOMPAT_FTYPE | \
@@ -105,7 +117,10 @@ GRUB_MOD_LICENSE ("GPLv3+");
         XFS_SB_FEAT_INCOMPAT_META_UUID | \
         XFS_SB_FEAT_INCOMPAT_BIGTIME | \
         XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR | \
-        XFS_SB_FEAT_INCOMPAT_NREXT64)
+        XFS_SB_FEAT_INCOMPAT_NREXT64 | \
+        XFS_SB_FEAT_INCOMPAT_EXCHRANGE | \
+        XFS_SB_FEAT_INCOMPAT_PARENT | \
+        XFS_SB_FEAT_INCOMPAT_METADIR)
 
 struct grub_xfs_sblock
 {