Re: [PATCH 03/28] xfs: define the on-disk format for the metadir feature

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

 



On Tue, Oct 15, 2024 at 11:25:41AM -0700, Darrick J. Wong wrote:
> > > diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h
> > > index be7d4b26aaea3f..4b36dc2c9bf48b 100644
> > > --- a/fs/xfs/xfs_inode.h
> > > +++ b/fs/xfs/xfs_inode.h
> > > @@ -65,6 +65,7 @@ typedef struct xfs_inode {
> > >  		uint16_t	i_flushiter;	/* incremented on flush */
> > >  	};
> > >  	uint8_t			i_forkoff;	/* attr fork offset >> 3 */
> > > +	enum xfs_metafile_type	i_metatype;	/* XFS_METAFILE_* */
> > >  	uint16_t		i_diflags;	/* XFS_DIFLAG_... */
> > >  	uint64_t		i_diflags2;	/* XFS_DIFLAG2_... */
> > >  	struct timespec64	i_crtime;	/* time created */
> > > @@ -276,10 +277,23 @@ static inline bool xfs_is_reflink_inode(const struct xfs_inode *ip)
> > >  	return ip->i_diflags2 & XFS_DIFLAG2_REFLINK;
> > >  }
> > >  
> > > +static inline bool xfs_is_metadir_inode(const struct xfs_inode *ip)
> > > +{
> > > +	return ip->i_diflags2 & XFS_DIFLAG2_METADATA;
> > > +}
> > > +
> > >  static inline bool xfs_is_metadata_inode(const struct xfs_inode *ip)
> > 
> > Oh, that's going to get confusing. "is_metadir" checks the inode
> > METADATA flag, and is "is_metadata" checks the superblock METADIR
> > flag....
> > 
> > Can we change this to higher level function to
> > xfs_inode_is_internal() or something else that is not easily
> > confused with checking an inode flag?
> 
> But there's already xfs_internal_inum, which only covers sb-rooted
> metadata inodes.  I guess first we have to rename that to xfs_is_sb_inum
> in a separate patch, and then this one can add xfs_inode_is_internal.

Fine by me.

> > > diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
> > > index 457c2d70968d9a..59953278964de9 100644
> > > --- a/fs/xfs/xfs_super.c
> > > +++ b/fs/xfs/xfs_super.c
> > > @@ -1733,6 +1733,10 @@ xfs_fs_fill_super(
> > >  		mp->m_features &= ~XFS_FEAT_DISCARD;
> > >  	}
> > >  
> > > +	if (xfs_has_metadir(mp))
> > > +		xfs_warn(mp,
> > > +"EXPERIMENTAL metadata directory feature in use. Use at your own risk!");
> > > +
> > 
> > We really need a 'xfs_mark_experimental(mp, "Metadata directory")'
> > function to format all these experimental feature warnings the same
> > way....
> 
> We already have xfs_warn_mount for functionality that isn't sb feature
> bits.  Maybe xfs_warn_feat?

xfs_warn_mount() is only used for experimental warnings, so maybe we
should simply rename that xfs_mark_experiental().  Then we can use
it's inherent "warn once" behaviour for all the places where we
issue an experimental warning regardless of how the experimental
feature is enabled/detected. 

This means we'd have a single location that formats all experimental
feature warnings the same way. Having a single function explicitly
for this makes it trivial to audit and manage all the experimental
features supported by a given kernel version because we are no
longer reliant on grepping for custom format strings to find
experimental features.

It also means that adding a kernel taint flag indicating that the
kernel is running experimental code is trivial to do...

-Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx




[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