This patch replaces the attribute name and length parameters with a single struct xfs_name parameter. This helps to clean up the numbers of parameters being passed around and pre-simplifies the code some. Signed-off-by: Allison Collins <allison.henderson@xxxxxxxxxx> --- db/attrset.c | 11 ++++++++--- libxfs/libxfs_priv.h | 12 +++++------- libxfs/xfs_attr.c | 22 +++++++++------------- libxfs/xfs_attr.h | 12 +++++------- libxfs/xfs_types.c | 11 +++++++++++ libxfs/xfs_types.h | 1 + 6 files changed, 39 insertions(+), 30 deletions(-) diff --git a/db/attrset.c b/db/attrset.c index 5c0ec6e9..4da85cb 100644 --- a/db/attrset.c +++ b/db/attrset.c @@ -16,6 +16,7 @@ #include "field.h" #include "inode.h" #include "malloc.h" +#include "xfs_types.h" static int attr_set_f(int argc, char **argv); static int attr_remove_f(int argc, char **argv); @@ -68,6 +69,7 @@ attr_set_f( { xfs_inode_t *ip = NULL; char *name, *value, *sp; + struct xfs_name xname; int c, valuelen = 0, flags = 0; if (cur_typ == NULL) { @@ -146,8 +148,9 @@ attr_set_f( goto out; } - if (libxfs_attr_set(ip, (unsigned char *)name, strlen(name), - (unsigned char *)value, valuelen, flags)) { + xfs_name_init(&xname, name); + if (libxfs_attr_set(ip, &xname, (unsigned char *)value, valuelen, + flags)) { dbprintf(_("failed to set attr %s on inode %llu\n"), name, (unsigned long long)iocur_top->ino); goto out; @@ -172,6 +175,7 @@ attr_remove_f( { xfs_inode_t *ip = NULL; char *name; + struct xfs_name xname; int c, flags = 0; if (cur_typ == NULL) { @@ -222,7 +226,8 @@ attr_remove_f( goto out; } - if (libxfs_attr_remove(ip, (unsigned char *)name, strlen(name), flags)) { + xfs_name_init(&xname, name); + if (libxfs_attr_remove(ip, &xname, flags)) { dbprintf(_("failed to remove attr %s from inode %llu\n"), name, (unsigned long long)iocur_top->ino); goto out; diff --git a/libxfs/libxfs_priv.h b/libxfs/libxfs_priv.h index c25c5de..f8637e8c 100644 --- a/libxfs/libxfs_priv.h +++ b/libxfs/libxfs_priv.h @@ -609,13 +609,11 @@ static inline int test_and_set_bit(int nr, volatile unsigned long *addr) /* Keep static checkers quiet about nonstatic functions by exporting */ int xfs_inode_hasattr(struct xfs_inode *ip); int xfs_attr_get_ilocked(struct xfs_inode *ip, struct xfs_da_args *args); -int xfs_attr_get(struct xfs_inode *ip, const unsigned char *name, - size_t namelen, unsigned char **value, int *valuelenp, - int flags); -int xfs_attr_set(struct xfs_inode *dp, const unsigned char *name, - size_t namelen, unsigned char *value, int valuelen, int flags); -int xfs_attr_remove(struct xfs_inode *dp, const unsigned char *name, - size_t namelen, int flags); +int xfs_attr_get(struct xfs_inode *ip, struct xfs_name *name, + unsigned char **value, int *valuelenp, int flags); +int xfs_attr_set(struct xfs_inode *dp, struct xfs_name *name, + unsigned char *value, int valuelen, int flags); +int xfs_attr_remove(struct xfs_inode *dp, struct xfs_name *name, int flags); int xfs_rtbuf_get(struct xfs_mount *mp, struct xfs_trans *tp, xfs_rtblock_t block, int issum, struct xfs_buf **bpp); int xfs_rtcheck_range(struct xfs_mount *mp, struct xfs_trans *tp, diff --git a/libxfs/xfs_attr.c b/libxfs/xfs_attr.c index 925094d..6e1f3a1 100644 --- a/libxfs/xfs_attr.c +++ b/libxfs/xfs_attr.c @@ -60,8 +60,7 @@ STATIC int xfs_attr_args_init( struct xfs_da_args *args, struct xfs_inode *dp, - const unsigned char *name, - size_t namelen, + struct xfs_name *name, int flags) { @@ -73,8 +72,8 @@ xfs_attr_args_init( args->whichfork = XFS_ATTR_FORK; args->dp = dp; args->flags = flags; - args->name = name; - args->namelen = namelen; + args->name = name->name; + args->namelen = name->len; if (args->namelen >= MAXNAMELEN) return -EFAULT; /* match IRIX behaviour */ @@ -138,8 +137,7 @@ xfs_attr_get_ilocked( int xfs_attr_get( struct xfs_inode *ip, - const unsigned char *name, - size_t namelen, + struct xfs_name *name, unsigned char **value, int *valuelenp, int flags) @@ -155,7 +153,7 @@ xfs_attr_get( if (XFS_FORCED_SHUTDOWN(ip->i_mount)) return -EIO; - error = xfs_attr_args_init(&args, ip, name, namelen, flags); + error = xfs_attr_args_init(&args, ip, name, flags); if (error) return error; @@ -338,8 +336,7 @@ xfs_attr_remove_args( int xfs_attr_set( struct xfs_inode *dp, - const unsigned char *name, - size_t namelen, + struct xfs_name *name, unsigned char *value, int valuelen, int flags) @@ -355,7 +352,7 @@ xfs_attr_set( if (XFS_FORCED_SHUTDOWN(dp->i_mount)) return -EIO; - error = xfs_attr_args_init(&args, dp, name, namelen, flags); + error = xfs_attr_args_init(&args, dp, name, flags); if (error) return error; @@ -443,8 +440,7 @@ out_trans_cancel: int xfs_attr_remove( struct xfs_inode *dp, - const unsigned char *name, - size_t namelen, + struct xfs_name *name, int flags) { struct xfs_mount *mp = dp->i_mount; @@ -456,7 +452,7 @@ xfs_attr_remove( if (XFS_FORCED_SHUTDOWN(dp->i_mount)) return -EIO; - error = xfs_attr_args_init(&args, dp, name, namelen, flags); + error = xfs_attr_args_init(&args, dp, name, flags); if (error) return error; diff --git a/libxfs/xfs_attr.h b/libxfs/xfs_attr.h index 106a2f2..44dd07a 100644 --- a/libxfs/xfs_attr.h +++ b/libxfs/xfs_attr.h @@ -144,14 +144,12 @@ int xfs_attr_list_int_ilocked(struct xfs_attr_list_context *); int xfs_attr_list_int(struct xfs_attr_list_context *); int xfs_inode_hasattr(struct xfs_inode *ip); int xfs_attr_get_ilocked(struct xfs_inode *ip, struct xfs_da_args *args); -int xfs_attr_get(struct xfs_inode *ip, const unsigned char *name, - size_t namelen, unsigned char **value, int *valuelenp, - int flags); -int xfs_attr_set(struct xfs_inode *dp, const unsigned char *name, - size_t namelen, unsigned char *value, int valuelen, int flags); +int xfs_attr_get(struct xfs_inode *ip, struct xfs_name *name, + unsigned char **value, int *valuelenp, int flags); +int xfs_attr_set(struct xfs_inode *dp, struct xfs_name *name, + unsigned char *value, int valuelen, int flags); int xfs_attr_set_args(struct xfs_da_args *args); -int xfs_attr_remove(struct xfs_inode *dp, const unsigned char *name, - size_t namelen, int flags); +int xfs_attr_remove(struct xfs_inode *dp, struct xfs_name *name, int flags); int xfs_attr_remove_args(struct xfs_da_args *args); int xfs_attr_list(struct xfs_inode *dp, char *buffer, int bufsize, int flags, struct attrlist_cursor_kern *cursor); diff --git a/libxfs/xfs_types.c b/libxfs/xfs_types.c index fa11372..363e5050 100644 --- a/libxfs/xfs_types.c +++ b/libxfs/xfs_types.c @@ -12,6 +12,17 @@ #include "xfs_bit.h" #include "xfs_mount.h" +/* Initialize a struct xfs_name with a null terminated string name */ +void +xfs_name_init( + struct xfs_name *xname, + const char *name) +{ + xname->name = (unsigned char *)name; + xname->len = strlen(name); + xname->type = 0; +} + /* Find the size of the AG, in blocks. */ xfs_agblock_t xfs_ag_block_count( diff --git a/libxfs/xfs_types.h b/libxfs/xfs_types.h index 300b3e9..ecb2c58 100644 --- a/libxfs/xfs_types.h +++ b/libxfs/xfs_types.h @@ -182,6 +182,7 @@ enum xfs_ag_resv_type { */ struct xfs_mount; +void xfs_name_init(struct xfs_name *xname, const char *name); xfs_agblock_t xfs_ag_block_count(struct xfs_mount *mp, xfs_agnumber_t agno); bool xfs_verify_agbno(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno); -- 2.7.4