On Thu, Sep 19, 2013 at 04:05:24PM -0500, Mark Tinguely wrote: > Add xfsprog superblock v4 support for the directory inode type > in xfs_sb.h. > > This support adds a feature bit for version 4 superblocks and > leaves the original superblock 5 incompatibility bit. > > Signed-off-by: Mark Tinguely <tinguely@xxxxxxx> > --- > include/xfs_sb.h | 20 ++++++++++++-------- > include/xfs_sb.h | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > Index: b/include/xfs_sb.h > =================================================================== > --- a/include/xfs_sb.h > +++ b/include/xfs_sb.h > @@ -84,11 +84,13 @@ struct xfs_trans; > #define XFS_SB_VERSION2_PARENTBIT 0x00000010 /* parent pointers */ > #define XFS_SB_VERSION2_PROJID32BIT 0x00000080 /* 32 bit project id */ > #define XFS_SB_VERSION2_CRCBIT 0x00000100 /* metadata CRCs */ > +#define XFS_SB_VERSION2_FTYPE 0x00000200 /* inode type in dir */ > > #define XFS_SB_VERSION2_OKREALFBITS \ > (XFS_SB_VERSION2_LAZYSBCOUNTBIT | \ > XFS_SB_VERSION2_ATTR2BIT | \ > - XFS_SB_VERSION2_PROJID32BIT) > + XFS_SB_VERSION2_PROJID32BIT | \ > + XFS_SB_VERSION2_FTYPE) > #define XFS_SB_VERSION2_OKSASHFBITS \ > (0) > #define XFS_SB_VERSION2_OKREALBITS \ > @@ -631,8 +633,10 @@ static inline int xfs_sb_version_has_pqu > > static inline int xfs_sb_version_hasftype(struct xfs_sb *sbp) > { > - return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 && > - xfs_sb_has_incompat_feature(sbp, XFS_SB_FEAT_INCOMPAT_FTYPE); > + return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 && > + xfs_sb_has_incompat_feature(sbp, XFS_SB_FEAT_INCOMPAT_FTYPE)) || > + (xfs_sb_version_hasmorebits(sbp) && > + (sbp->sb_features2 & XFS_SB_VERSION2_FTYPE)); This is kinda inefficient. Seeing as I didn't review the kernel version, I'll review it now. Expand it out: return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 && xfs_sb_has_incompat_feature(sbp, XFS_SB_FEAT_INCOMPAT_FTYPE)) || ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) || (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && (sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT))) && (sbp->sb_features2 & XFS_SB_VERSION2_FTYPE)); so, really, the check could be refined to: return XFS_SB_VERSION_NUM(sbp) >= XFS_SB_VERSION_4 && (xfs_sb_has_incompat_feature(sbp, XFS_SB_FEAT_INCOMPAT_FTYPE) || ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && (sbp->sb_features2 & XFS_SB_VERSION2_FTYPE))); Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs