libxfs: resync with the userspace libxfs
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@oracle.com> Reviewed-by: Eric Sandeen <sandeen@redhat.com>
This commit is contained in:
@@ -4561,7 +4561,7 @@ xfs_bmapi_convert_delalloc(
|
|||||||
struct xfs_mount *mp = ip->i_mount;
|
struct xfs_mount *mp = ip->i_mount;
|
||||||
xfs_fileoff_t offset_fsb = XFS_B_TO_FSBT(mp, offset);
|
xfs_fileoff_t offset_fsb = XFS_B_TO_FSBT(mp, offset);
|
||||||
struct xfs_bmalloca bma = { NULL };
|
struct xfs_bmalloca bma = { NULL };
|
||||||
u16 flags = 0;
|
uint16_t flags = 0;
|
||||||
struct xfs_trans *tp;
|
struct xfs_trans *tp;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
|
@@ -724,3 +724,24 @@ xfs_dir2_namecheck(
|
|||||||
/* There shouldn't be any slashes or nulls here */
|
/* There shouldn't be any slashes or nulls here */
|
||||||
return !memchr(name, '/', length) && !memchr(name, 0, length);
|
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);
|
||||||
|
}
|
||||||
|
@@ -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_removename(struct xfs_da_args *args);
|
||||||
extern int xfs_dir2_sf_replace(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);
|
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 */
|
/* xfs_dir2_readdir.c */
|
||||||
extern int xfs_readdir(struct xfs_trans *tp, struct xfs_inode *dp,
|
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);
|
return round_up(len, XFS_DIR2_DATA_ALIGN);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline xfs_dahash_t
|
xfs_dahash_t xfs_dir2_hashname(struct xfs_mount *mp, struct xfs_name *name);
|
||||||
xfs_dir2_hashname(
|
enum xfs_dacmp xfs_dir2_compname(struct xfs_da_args *args,
|
||||||
struct xfs_mount *mp,
|
const unsigned char *name, int len);
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* __XFS_DIR2_PRIV_H__ */
|
#endif /* __XFS_DIR2_PRIV_H__ */
|
||||||
|
@@ -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_toino4(xfs_da_args_t *args);
|
||||||
static void xfs_dir2_sf_toino8(xfs_da_args_t *args);
|
static void xfs_dir2_sf_toino8(xfs_da_args_t *args);
|
||||||
|
|
||||||
static int
|
int
|
||||||
xfs_dir2_sf_entsize(
|
xfs_dir2_sf_entsize(
|
||||||
struct xfs_mount *mp,
|
struct xfs_mount *mp,
|
||||||
struct xfs_dir2_sf_hdr *hdr,
|
struct xfs_dir2_sf_hdr *hdr,
|
||||||
@@ -84,7 +84,7 @@ xfs_dir2_sf_get_ino(
|
|||||||
return get_unaligned_be64(from) & XFS_MAXINUMBER;
|
return get_unaligned_be64(from) & XFS_MAXINUMBER;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
xfs_dir2_sf_put_ino(
|
xfs_dir2_sf_put_ino(
|
||||||
struct xfs_mount *mp,
|
struct xfs_mount *mp,
|
||||||
struct xfs_dir2_sf_hdr *hdr,
|
struct xfs_dir2_sf_hdr *hdr,
|
||||||
@@ -145,7 +145,7 @@ xfs_dir2_sf_get_ftype(
|
|||||||
return XFS_DIR3_FT_UNKNOWN;
|
return XFS_DIR3_FT_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
xfs_dir2_sf_put_ftype(
|
xfs_dir2_sf_put_ftype(
|
||||||
struct xfs_mount *mp,
|
struct xfs_mount *mp,
|
||||||
struct xfs_dir2_sf_entry *sfep,
|
struct xfs_dir2_sf_entry *sfep,
|
||||||
|
Reference in New Issue
Block a user