Re: [PATCH 06/16] xfs: consolidate mount option features in m_features

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jul 14, 2021 at 02:19:02PM +1000, Dave Chinner wrote:
> From: Dave Chinner <dchinner@xxxxxxxxxx>
> 
> This provides separation of mount time feature flags from runtime
> mount flags and mount option state. It also makes the feature
> checks use the same interface as the superblock features. i.e. we
> don't care if the feature is enabled by superblock flags or mount
> options, we just care if it's enabled or not.
> 
> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
> ---
>  fs/xfs/xfs_mount.h | 50 +++++++++++++++++++++++++++++++++++++++++++---
>  1 file changed, 47 insertions(+), 3 deletions(-)
> 
> diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h
> index 8c0f928febac..b0e8c3825ce8 100644
> --- a/fs/xfs/xfs_mount.h
> +++ b/fs/xfs/xfs_mount.h
> @@ -258,6 +258,25 @@ typedef struct xfs_mount {
>  #define XFS_FEAT_BIGTIME	(1ULL << 24)	/* large timestamps */
>  #define XFS_FEAT_NEEDSREPAIR	(1ULL << 25)	/* needs xfs_repair */
>  
> +/* Mount features */
> +#define XFS_FEAT_NOATTR2	(1ULL << 48)	/* disable attr2 creation */
> +#define XFS_FEAT_NOALIGN	(1ULL << 49)	/* ignore alignment */
> +#define XFS_FEAT_ALLOCSIZE	(1ULL << 50)	/* user specified allocation size */
> +#define XFS_FEAT_LARGE_IOSIZE	(1ULL << 51)	/* report large preferred
> +						 * I/O size in stat() */
> +#define XFS_FEAT_WSYNC		(1ULL << 52)	/* synchronous metadata ops */
> +#define XFS_FEAT_DIRSYNC	(1ULL << 53)	/* synchronous directory ops */
> +#define XFS_FEAT_DISCARD	(1ULL << 54)	/* discard unused blocks */
> +#define XFS_FEAT_GRPID		(1ULL << 55)	/* group-ID assigned from directory */
> +#define XFS_FEAT_SMALL_INUMS	(1ULL << 56)	/* user wants 32bit inodes */
> +#define XFS_FEAT_IKEEP		(1ULL << 57)	/* keep empty inode clusters*/
> +#define XFS_FEAT_SWALLOC	(1ULL << 58)	/* stripe width allocation */
> +#define XFS_FEAT_FILESTREAMS	(1ULL << 59)	/* use filestreams allocator */
> +#define XFS_FEAT_DAX_ALWAYS	(1ULL << 60)	/* DAX always enabled */
> +#define XFS_FEAT_DAX_NEVER	(1ULL << 61)	/* DAX never enabled */
> +#define XFS_FEAT_NORECOVERY	(1ULL << 62)	/* no recovery - dirty fs */
> +#define XFS_FEAT_NOUUID		(1ULL << 63)	/* ignore uuid during mount */
> +
>  #define __XFS_HAS_FEAT(name, NAME) \
>  static inline bool xfs_has_ ## name (struct xfs_mount *mp) \
>  { \
> @@ -273,6 +292,7 @@ static inline void xfs_add_ ## name (struct xfs_mount *mp) \
>  	xfs_sb_version_add ## name(&mp->m_sb); \
>  }
>  
> +/* Superblock features */
>  __XFS_ADD_FEAT(attr, ATTR)
>  __XFS_HAS_FEAT(nlink, NLINK)
>  __XFS_ADD_FEAT(quota, QUOTA)
> @@ -296,9 +316,33 @@ __XFS_HAS_FEAT(reflink, REFLINK)
>  __XFS_HAS_FEAT(sparseinodes, SPINODES)
>  __XFS_HAS_FEAT(metauuid, META_UUID)
>  __XFS_HAS_FEAT(realtime, REALTIME)
> -__XFS_HAS_FEAT(inobtcounts, REALTIME)
> -__XFS_HAS_FEAT(bigtime, REALTIME)
> -__XFS_HAS_FEAT(needsrepair, REALTIME)
> +__XFS_HAS_FEAT(inobtcounts, INOBTCNT)
> +__XFS_HAS_FEAT(bigtime, BIGTIME)
> +__XFS_HAS_FEAT(needsrepair, NEEDSREPAIR)

This ought to go in the previous patch.

Otherwise looks fine to me,
Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx>

--D

> +
> +/*
> + * Mount features
> + *
> + * These do not change dynamically - features that can come and go,
> + * such as 32 bit inodes and read-only state, are kept as flags rather than
> + * features.
> + */
> +__XFS_HAS_FEAT(noattr2, NOATTR2)
> +__XFS_HAS_FEAT(noalign, NOALIGN)
> +__XFS_HAS_FEAT(allocsize, ALLOCSIZE)
> +__XFS_HAS_FEAT(large_iosize, LARGE_IOSIZE)
> +__XFS_HAS_FEAT(wsync, WSYNC)
> +__XFS_HAS_FEAT(dirsync, DIRSYNC)
> +__XFS_HAS_FEAT(discard, DISCARD)
> +__XFS_HAS_FEAT(grpid, GRPID)
> +__XFS_HAS_FEAT(small_inums, SMALL_INUMS)
> +__XFS_HAS_FEAT(ikeep, IKEEP)
> +__XFS_HAS_FEAT(swalloc, SWALLOC)
> +__XFS_HAS_FEAT(filestreams, FILESTREAMS)
> +__XFS_HAS_FEAT(dax_always, DAX_ALWAYS)
> +__XFS_HAS_FEAT(dax_never, DAX_NEVER)
> +__XFS_HAS_FEAT(norecovery, NORECOVERY)
> +__XFS_HAS_FEAT(nouuid, NOUUID)
>  
>  /*
>   * Flags for m_flags.
> -- 
> 2.31.1
> 



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux