On 12/16/19 8:35 PM, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > Prepare to resync the userspace libxfs with the kernel libxfs. There > were a few things I missed -- a couple of static inline directory > functions that have to be exported for xfs_repair; a couple of directory > naming functions that make porting much easier if they're /not/ static > inline; and a u16 usage that should have been uint16_t. > > None of these things are bugs in their own right; this just makes > porting xfsprogs easier. > > Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> This all seems fine - I'm wondering about prototypes in xfs_dir2_priv.h vs xfs_dir2.h - at this point I'm not sure why we have the two, help? But whatevs, if that needs cleanup it can come later. Reviewed-by: Eric Sandeen <sandeen@xxxxxxxxxx> > --- > fs/xfs/libxfs/xfs_bmap.c | 2 +- > fs/xfs/libxfs/xfs_dir2.c | 21 +++++++++++++++++++++ > fs/xfs/libxfs/xfs_dir2_priv.h | 29 +++++++++-------------------- > fs/xfs/libxfs/xfs_dir2_sf.c | 6 +++--- > 4 files changed, 34 insertions(+), 24 deletions(-) > > diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c > index 4a802b3abe77..4c2e046fbfad 100644 > --- a/fs/xfs/libxfs/xfs_bmap.c > +++ b/fs/xfs/libxfs/xfs_bmap.c > @@ -4561,7 +4561,7 @@ xfs_bmapi_convert_delalloc( > struct xfs_mount *mp = ip->i_mount; > xfs_fileoff_t offset_fsb = XFS_B_TO_FSBT(mp, offset); > struct xfs_bmalloca bma = { NULL }; > - u16 flags = 0; > + uint16_t flags = 0; > struct xfs_trans *tp; > int error; > > diff --git a/fs/xfs/libxfs/xfs_dir2.c b/fs/xfs/libxfs/xfs_dir2.c > index 0aa87cbde49e..dd6fcaaea318 100644 > --- a/fs/xfs/libxfs/xfs_dir2.c > +++ b/fs/xfs/libxfs/xfs_dir2.c > @@ -724,3 +724,24 @@ xfs_dir2_namecheck( > /* There shouldn't be any slashes or nulls here */ > return !memchr(name, '/', length) && !memchr(name, 0, length); > } > + > +xfs_dahash_t > +xfs_dir2_hashname( > + struct xfs_mount *mp, > + struct xfs_name *name) > +{ > + if (unlikely(xfs_sb_version_hasasciici(&mp->m_sb))) > + return xfs_ascii_ci_hashname(name); > + return xfs_da_hashname(name->name, name->len); > +} > + > +enum xfs_dacmp > +xfs_dir2_compname( > + struct xfs_da_args *args, > + const unsigned char *name, > + int len) > +{ > + if (unlikely(xfs_sb_version_hasasciici(&args->dp->i_mount->m_sb))) > + return xfs_ascii_ci_compname(args, name, len); > + return xfs_da_compname(args, name, len); > +} > diff --git a/fs/xfs/libxfs/xfs_dir2_priv.h b/fs/xfs/libxfs/xfs_dir2_priv.h > index c031c53d0f0d..01ee0b926572 100644 > --- a/fs/xfs/libxfs/xfs_dir2_priv.h > +++ b/fs/xfs/libxfs/xfs_dir2_priv.h > @@ -175,6 +175,12 @@ extern int xfs_dir2_sf_lookup(struct xfs_da_args *args); > extern int xfs_dir2_sf_removename(struct xfs_da_args *args); > extern int xfs_dir2_sf_replace(struct xfs_da_args *args); > extern xfs_failaddr_t xfs_dir2_sf_verify(struct xfs_inode *ip); > +int xfs_dir2_sf_entsize(struct xfs_mount *mp, > + struct xfs_dir2_sf_hdr *hdr, int len); > +void xfs_dir2_sf_put_ino(struct xfs_mount *mp, struct xfs_dir2_sf_hdr *hdr, > + struct xfs_dir2_sf_entry *sfep, xfs_ino_t ino); > +void xfs_dir2_sf_put_ftype(struct xfs_mount *mp, > + struct xfs_dir2_sf_entry *sfep, uint8_t ftype); > > /* xfs_dir2_readdir.c */ > extern int xfs_readdir(struct xfs_trans *tp, struct xfs_inode *dp, > @@ -194,25 +200,8 @@ xfs_dir2_data_entsize( > return round_up(len, XFS_DIR2_DATA_ALIGN); > } > > -static inline xfs_dahash_t > -xfs_dir2_hashname( > - struct xfs_mount *mp, > - struct xfs_name *name) > -{ > - if (unlikely(xfs_sb_version_hasasciici(&mp->m_sb))) > - return xfs_ascii_ci_hashname(name); > - return xfs_da_hashname(name->name, name->len); > -} > - > -static inline enum xfs_dacmp > -xfs_dir2_compname( > - struct xfs_da_args *args, > - const unsigned char *name, > - int len) > -{ > - if (unlikely(xfs_sb_version_hasasciici(&args->dp->i_mount->m_sb))) > - return xfs_ascii_ci_compname(args, name, len); > - return xfs_da_compname(args, name, len); > -} > +xfs_dahash_t xfs_dir2_hashname(struct xfs_mount *mp, struct xfs_name *name); > +enum xfs_dacmp xfs_dir2_compname(struct xfs_da_args *args, > + const unsigned char *name, int len); > > #endif /* __XFS_DIR2_PRIV_H__ */ > diff --git a/fs/xfs/libxfs/xfs_dir2_sf.c b/fs/xfs/libxfs/xfs_dir2_sf.c > index 8b94d33d232f..7b7f6fb2ea3b 100644 > --- a/fs/xfs/libxfs/xfs_dir2_sf.c > +++ b/fs/xfs/libxfs/xfs_dir2_sf.c > @@ -37,7 +37,7 @@ static void xfs_dir2_sf_check(xfs_da_args_t *args); > static void xfs_dir2_sf_toino4(xfs_da_args_t *args); > static void xfs_dir2_sf_toino8(xfs_da_args_t *args); > > -static int > +int > xfs_dir2_sf_entsize( > struct xfs_mount *mp, > struct xfs_dir2_sf_hdr *hdr, > @@ -84,7 +84,7 @@ xfs_dir2_sf_get_ino( > return get_unaligned_be64(from) & XFS_MAXINUMBER; > } > > -static void > +void > xfs_dir2_sf_put_ino( > struct xfs_mount *mp, > struct xfs_dir2_sf_hdr *hdr, > @@ -145,7 +145,7 @@ xfs_dir2_sf_get_ftype( > return XFS_DIR3_FT_UNKNOWN; > } > > -static void > +void > xfs_dir2_sf_put_ftype( > struct xfs_mount *mp, > struct xfs_dir2_sf_entry *sfep, >