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). Signed-off-by: Chandan Babu R <chandan.babu@xxxxxxxxxx> --- db/sb.c | 2 ++ include/xfs_mount.h | 2 ++ libxfs/xfs_format.h | 1 + libxfs/xfs_sb.c | 3 +++ 4 files changed, 8 insertions(+) diff --git a/db/sb.c b/db/sb.c index 7510e00f..2d508c26 100644 --- 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; } diff --git a/include/xfs_mount.h b/include/xfs_mount.h index 8139831b..f05eb2af 100644 --- a/include/xfs_mount.h +++ b/include/xfs_mount.h @@ -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) \ diff --git a/libxfs/xfs_format.h b/libxfs/xfs_format.h index b5e9256d..cae7ffd5 100644 --- a/libxfs/xfs_format.h +++ b/libxfs/xfs_format.h @@ -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) /* 64-bit data fork extent counter */ #define XFS_SB_FEAT_INCOMPAT_ALL \ (XFS_SB_FEAT_INCOMPAT_FTYPE| \ XFS_SB_FEAT_INCOMPAT_SPINODES| \ diff --git a/libxfs/xfs_sb.c b/libxfs/xfs_sb.c index 986f9466..7ab13e07 100644 --- a/libxfs/xfs_sb.c +++ b/libxfs/xfs_sb.c @@ -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; } -- 2.30.2