]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: Introduce XFS_SB_FEAT_INCOMPAT_NREXT64 and associated per-fs feature bit
authorChandan Babu R <chandan.babu@oracle.com>
Wed, 22 Jun 2022 19:28:52 +0000 (14:28 -0500)
committerEric Sandeen <sandeen@sandeen.net>
Wed, 22 Jun 2022 19:28:52 +0000 (14:28 -0500)
Source kernel commit: 919819f5e18097e6e888764c30625b1288d416c5

XFS_SB_FEAT_INCOMPAT_NREXT64 incompat feature bit will be set on filesystems
which support large per-inode extent counters. This commit defines the new
incompat feature bit and the corresponding per-fs feature bit (along with
inline functions to work on it).

Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
db/sb.c
include/xfs_mount.h
libxfs/xfs_format.h
libxfs/xfs_sb.c

diff --git a/db/sb.c b/db/sb.c
index 7510e00f5cfe32f32eafe2283cb92c5f40e248a9..2d508c26a3b7d2ad04de26634b6a16706fb15dca 100644 (file)
--- a/db/sb.c
+++ b/db/sb.c
@@ -704,6 +704,8 @@ version_string(
                strcat(s, ",BIGTIME");
        if (xfs_has_needsrepair(mp))
                strcat(s, ",NEEDSREPAIR");
+       if (xfs_has_large_extent_counts(mp))
+               strcat(s, ",NREXT64");
        return s;
 }
 
index 2bd1332161bda7cb0c9f824b341c676766e2298a..bc99a4eac066643f0b2c3c7d096ee73cb0fcf507 100644 (file)
@@ -154,6 +154,7 @@ typedef struct xfs_mount {
 #define XFS_FEAT_INOBTCNT      (1ULL << 23)    /* inobt block counts */
 #define XFS_FEAT_BIGTIME       (1ULL << 24)    /* large timestamps */
 #define XFS_FEAT_NEEDSREPAIR   (1ULL << 25)    /* needs xfs_repair */
+#define XFS_FEAT_NREXT64       (1ULL << 26)    /* large extent counters */
 
 #define __XFS_HAS_FEAT(name, NAME) \
 static inline bool xfs_has_ ## name (struct xfs_mount *mp) \
@@ -197,6 +198,7 @@ __XFS_HAS_FEAT(realtime, REALTIME)
 __XFS_HAS_FEAT(inobtcounts, INOBTCNT)
 __XFS_HAS_FEAT(bigtime, BIGTIME)
 __XFS_HAS_FEAT(needsrepair, NEEDSREPAIR)
+__XFS_HAS_FEAT(large_extent_counts, NREXT64)
 
 /* Kernel mount features that we don't support */
 #define __XFS_UNSUPP_FEAT(name) \
index b5e9256d6d328a86e7d57a6b67c473cc6ba6ddec..64ff0c310696e5a531ecdb10ca50658234363826 100644 (file)
@@ -372,6 +372,7 @@ xfs_sb_has_ro_compat_feature(
 #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_ALL \
                (XFS_SB_FEAT_INCOMPAT_FTYPE|    \
                 XFS_SB_FEAT_INCOMPAT_SPINODES| \
index 986f9466d3525b620c8c4c8ae8e85ace9f8f918f..7ab13e07eeb4c857ebb1a15663451f63c4c52959 100644 (file)
@@ -122,6 +122,9 @@ xfs_sb_version_to_features(
                features |= XFS_FEAT_BIGTIME;
        if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR)
                features |= XFS_FEAT_NEEDSREPAIR;
+       if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_NREXT64)
+               features |= XFS_FEAT_NREXT64;
+
        return features;
 }