[PATCH 8/9] xfs: add fsgeom flag for v5 superblock support.
Eric Sandeen
sandeen at sandeen.net
Wed May 29 10:10:13 CDT 2013
On 5/27/13 1:38 AM, Dave Chinner wrote:
> From: Dave Chinner <dchinner at redhat.com>
>
> Currently userspace has no way of determining that a filesystem is
> CRC enabled. Add a flag to the XFS_IOC_FSGEOMETRY ioctl output to
> indicate that the filesystem has v5 superblock support enabled.
> This will allow xfs_info to correctly report the state of the
> filesystem.
Looks fine,
Reviewed-by: Eric Sandeen <sandeen at redhat.com>
Ben, having this in place for for the next point release will let
userspace work & testing proceed w/o the need for a patched
kernel... if you could consider pulling it in that'd be great.
Dave, just out of curiosity, most other features sort of match between
the "_has_*" and the flag names, is there a reason for the
crc <-> sbv5 difference? Just semantics, but just curious.
(i.e. xfs_sb_version_hasprojid32bit checks XFS_SB_VERSION2_PROJID32BIT,
but xfs_sb_version_hascrc checks XFS_SB_VERSION_5)
Answering my own question maybe, I guess SB_VERSION_5 was conceived
with crc already in place, so there's no need for a feature flag on
top of the sb version, right...?
-Eric
> Signed-off-by: Dave Chinner <dchinner at redhat.com>
> ---
> fs/xfs/xfs_fs.h | 1 +
> fs/xfs/xfs_fsops.c | 4 +++-
> 2 files changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/fs/xfs/xfs_fs.h b/fs/xfs/xfs_fs.h
> index 6dda3f9..d046955 100644
> --- a/fs/xfs/xfs_fs.h
> +++ b/fs/xfs/xfs_fs.h
> @@ -236,6 +236,7 @@ typedef struct xfs_fsop_resblks {
> #define XFS_FSOP_GEOM_FLAGS_PROJID32 0x0800 /* 32-bit project IDs */
> #define XFS_FSOP_GEOM_FLAGS_DIRV2CI 0x1000 /* ASCII only CI names */
> #define XFS_FSOP_GEOM_FLAGS_LAZYSB 0x4000 /* lazy superblock counters */
> +#define XFS_FSOP_GEOM_FLAGS_V5SB 0x8000 /* version 5 superblock */
>
>
> /*
> diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c
> index 87595b2..3c3644e 100644
> --- a/fs/xfs/xfs_fsops.c
> +++ b/fs/xfs/xfs_fsops.c
> @@ -99,7 +99,9 @@ xfs_fs_geometry(
> (xfs_sb_version_hasattr2(&mp->m_sb) ?
> XFS_FSOP_GEOM_FLAGS_ATTR2 : 0) |
> (xfs_sb_version_hasprojid32bit(&mp->m_sb) ?
> - XFS_FSOP_GEOM_FLAGS_PROJID32 : 0);
> + XFS_FSOP_GEOM_FLAGS_PROJID32 : 0) |
> + (xfs_sb_version_hascrc(&mp->m_sb) ?
> + XFS_FSOP_GEOM_FLAGS_V5SB : 0);
> geo->logsectsize = xfs_sb_version_hassector(&mp->m_sb) ?
> mp->m_sb.sb_logsectsize : BBSIZE;
> geo->rtsectsize = mp->m_sb.sb_blocksize;
>
More information about the xfs
mailing list