On Fri, Dec 18, 2020 at 12:29:17AM -0700, Allison Henderson wrote: > This is a clean up patch that merges xfs_delattr_context into > xfs_attr_item. Now that the refactoring is complete and the delayed > operation infastructure is in place, we can combine these to eliminate > the extra struct > > Signed-off-by: Allison Henderson <allison.henderson@xxxxxxxxxx> Nice consolidation! Reviewed-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --D > --- > fs/xfs/libxfs/xfs_attr.c | 138 ++++++++++++++++++++-------------------- > fs/xfs/libxfs/xfs_attr.h | 40 +++++------- > fs/xfs/libxfs/xfs_attr_remote.c | 34 +++++----- > fs/xfs/libxfs/xfs_attr_remote.h | 6 +- > fs/xfs/xfs_attr_item.c | 46 ++++++-------- > 5 files changed, 127 insertions(+), 137 deletions(-) > > diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c > index 6e5a900..badcdae 100644 > --- a/fs/xfs/libxfs/xfs_attr.c > +++ b/fs/xfs/libxfs/xfs_attr.c > @@ -46,7 +46,7 @@ STATIC int xfs_attr_shortform_addname(xfs_da_args_t *args); > * Internal routines when attribute list is one block. > */ > STATIC int xfs_attr_leaf_get(xfs_da_args_t *args); > -STATIC int xfs_attr_leaf_addname(struct xfs_delattr_context *dac); > +STATIC int xfs_attr_leaf_addname(struct xfs_attr_item *attr); > STATIC int xfs_attr_leaf_removename(xfs_da_args_t *args); > STATIC int xfs_attr_leaf_hasname(struct xfs_da_args *args, struct xfs_buf **bp); > > @@ -54,8 +54,8 @@ STATIC int xfs_attr_leaf_hasname(struct xfs_da_args *args, struct xfs_buf **bp); > * Internal routines when attribute list is more than one block. > */ > STATIC int xfs_attr_node_get(xfs_da_args_t *args); > -STATIC int xfs_attr_node_addname(struct xfs_delattr_context *dac); > -STATIC int xfs_attr_node_removename_iter(struct xfs_delattr_context *dac); > +STATIC int xfs_attr_node_addname(struct xfs_attr_item *attr); > +STATIC int xfs_attr_node_removename_iter(struct xfs_attr_item *attr); > STATIC int xfs_attr_node_hasname(xfs_da_args_t *args, > struct xfs_da_state **state); > STATIC int xfs_attr_fillstate(xfs_da_state_t *state); > @@ -276,27 +276,27 @@ xfs_attr_set_shortform( > */ > int > xfs_attr_set_iter( > - struct xfs_delattr_context *dac) > + struct xfs_attr_item *attr) > { > - struct xfs_da_args *args = dac->da_args; > + struct xfs_da_args *args = attr->xattri_da_args; > struct xfs_inode *dp = args->dp; > - struct xfs_buf **leaf_bp = &dac->leaf_bp; > + struct xfs_buf **leaf_bp = &attr->xattri_leaf_bp; > int error = 0; > > /* State machine switch */ > - switch (dac->dela_state) { > + switch (attr->xattri_dela_state) { > case XFS_DAS_FLIP_LFLAG: > case XFS_DAS_FOUND_LBLK: > case XFS_DAS_RM_LBLK: > - return xfs_attr_leaf_addname(dac); > + return xfs_attr_leaf_addname(attr); > case XFS_DAS_FOUND_NBLK: > case XFS_DAS_FLIP_NFLAG: > case XFS_DAS_ALLOC_NODE: > - return xfs_attr_node_addname(dac); > + return xfs_attr_node_addname(attr); > case XFS_DAS_UNINIT: > break; > default: > - ASSERT(dac->dela_state != XFS_DAS_RM_SHRINK); > + ASSERT(attr->xattri_dela_state != XFS_DAS_RM_SHRINK); > break; > } > > @@ -328,7 +328,7 @@ xfs_attr_set_iter( > } > > if (!xfs_bmap_one_block(dp, XFS_ATTR_FORK)) > - return xfs_attr_node_addname(dac); > + return xfs_attr_node_addname(attr); > > error = xfs_attr_leaf_try_add(args, *leaf_bp); > switch (error) { > @@ -351,11 +351,11 @@ xfs_attr_set_iter( > * when we come back, we'll be a node, so we'll fall > * down into the node handling code below > */ > - trace_xfs_das_state_return(dac->dela_state); > + trace_xfs_das_state_return(attr->xattri_dela_state); > return -EAGAIN; > case 0: > - dac->dela_state = XFS_DAS_FOUND_LBLK; > - trace_xfs_das_state_return(dac->dela_state); > + attr->xattri_dela_state = XFS_DAS_FOUND_LBLK; > + trace_xfs_das_state_return(attr->xattri_dela_state); > return -EAGAIN; > } > return error; > @@ -401,13 +401,13 @@ xfs_has_attr( > */ > int > xfs_attr_remove_iter( > - struct xfs_delattr_context *dac) > + struct xfs_attr_item *attr) > { > - struct xfs_da_args *args = dac->da_args; > + struct xfs_da_args *args = attr->xattri_da_args; > struct xfs_inode *dp = args->dp; > > /* If we are shrinking a node, resume shrink */ > - if (dac->dela_state == XFS_DAS_RM_SHRINK) > + if (attr->xattri_dela_state == XFS_DAS_RM_SHRINK) > goto node; > > if (!xfs_inode_hasattr(dp)) > @@ -422,7 +422,7 @@ xfs_attr_remove_iter( > return xfs_attr_leaf_removename(args); > node: > /* If we are not short form or leaf, then proceed to remove node */ > - return xfs_attr_node_removename_iter(dac); > + return xfs_attr_node_removename_iter(attr); > } > > /* > @@ -573,7 +573,7 @@ xfs_attr_item_init( > > new = kmem_zalloc(sizeof(struct xfs_attr_item), KM_NOFS); > new->xattri_op_flags = op_flags; > - new->xattri_dac.da_args = args; > + new->xattri_da_args = args; > > *attr = new; > return 0; > @@ -768,16 +768,16 @@ xfs_attr_leaf_try_add( > */ > STATIC int > xfs_attr_leaf_addname( > - struct xfs_delattr_context *dac) > + struct xfs_attr_item *attr) > { > - struct xfs_da_args *args = dac->da_args; > + struct xfs_da_args *args = attr->xattri_da_args; > struct xfs_buf *bp = NULL; > int error, forkoff; > struct xfs_inode *dp = args->dp; > struct xfs_mount *mp = args->dp->i_mount; > > /* State machine switch */ > - switch (dac->dela_state) { > + switch (attr->xattri_dela_state) { > case XFS_DAS_FLIP_LFLAG: > goto das_flip_flag; > case XFS_DAS_RM_LBLK: > @@ -794,10 +794,10 @@ xfs_attr_leaf_addname( > */ > > /* Open coded xfs_attr_rmtval_set without trans handling */ > - if ((dac->flags & XFS_DAC_LEAF_ADDNAME_INIT) == 0) { > - dac->flags |= XFS_DAC_LEAF_ADDNAME_INIT; > + if ((attr->xattri_flags & XFS_DAC_LEAF_ADDNAME_INIT) == 0) { > + attr->xattri_flags |= XFS_DAC_LEAF_ADDNAME_INIT; > if (args->rmtblkno > 0) { > - error = xfs_attr_rmtval_find_space(dac); > + error = xfs_attr_rmtval_find_space(attr); > if (error) > return error; > } > @@ -807,12 +807,12 @@ xfs_attr_leaf_addname( > * Roll through the "value", allocating blocks on disk as > * required. > */ > - if (dac->blkcnt > 0) { > - error = xfs_attr_rmtval_set_blk(dac); > + if (attr->xattri_blkcnt > 0) { > + error = xfs_attr_rmtval_set_blk(attr); > if (error) > return error; > > - trace_xfs_das_state_return(dac->dela_state); > + trace_xfs_das_state_return(attr->xattri_dela_state); > return -EAGAIN; > } > > @@ -846,8 +846,8 @@ xfs_attr_leaf_addname( > /* > * Commit the flag value change and start the next trans in series. > */ > - dac->dela_state = XFS_DAS_FLIP_LFLAG; > - trace_xfs_das_state_return(dac->dela_state); > + attr->xattri_dela_state = XFS_DAS_FLIP_LFLAG; > + trace_xfs_das_state_return(attr->xattri_dela_state); > return -EAGAIN; > } > das_flip_flag: > @@ -862,12 +862,12 @@ xfs_attr_leaf_addname( > return error; > > /* Set state in case xfs_attr_rmtval_remove returns -EAGAIN */ > - dac->dela_state = XFS_DAS_RM_LBLK; > + attr->xattri_dela_state = XFS_DAS_RM_LBLK; > das_rm_lblk: > if (args->rmtblkno) { > - error = xfs_attr_rmtval_remove(dac); > + error = xfs_attr_rmtval_remove(attr); > if (error == -EAGAIN) > - trace_xfs_das_state_return(dac->dela_state); > + trace_xfs_das_state_return(attr->xattri_dela_state); > if (error) > return error; > } > @@ -1041,9 +1041,9 @@ xfs_attr_node_hasname( > */ > STATIC int > xfs_attr_node_addname( > - struct xfs_delattr_context *dac) > + struct xfs_attr_item *attr) > { > - struct xfs_da_args *args = dac->da_args; > + struct xfs_da_args *args = attr->xattri_da_args; > struct xfs_da_state *state = NULL; > struct xfs_da_state_blk *blk; > int retval = 0; > @@ -1053,7 +1053,7 @@ xfs_attr_node_addname( > trace_xfs_attr_node_addname(args); > > /* State machine switch */ > - switch (dac->dela_state) { > + switch (attr->xattri_dela_state) { > case XFS_DAS_FLIP_NFLAG: > goto das_flip_flag; > case XFS_DAS_FOUND_NBLK: > @@ -1119,7 +1119,7 @@ xfs_attr_node_addname( > * this. dela_state is still unset by this function at > * this point. > */ > - trace_xfs_das_state_return(dac->dela_state); > + trace_xfs_das_state_return(attr->xattri_dela_state); > return -EAGAIN; > } > > @@ -1151,8 +1151,8 @@ xfs_attr_node_addname( > xfs_da_state_free(state); > state = NULL; > > - dac->dela_state = XFS_DAS_FOUND_NBLK; > - trace_xfs_das_state_return(dac->dela_state); > + attr->xattri_dela_state = XFS_DAS_FOUND_NBLK; > + trace_xfs_das_state_return(attr->xattri_dela_state); > return -EAGAIN; > das_found_nblk: > > @@ -1164,7 +1164,7 @@ xfs_attr_node_addname( > */ > if (args->rmtblkno > 0) { > /* Open coded xfs_attr_rmtval_set without trans handling */ > - error = xfs_attr_rmtval_find_space(dac); > + error = xfs_attr_rmtval_find_space(attr); > if (error) > return error; > > @@ -1172,14 +1172,14 @@ xfs_attr_node_addname( > * Roll through the "value", allocating blocks on disk as > * required. Set the state in case of -EAGAIN return code > */ > - dac->dela_state = XFS_DAS_ALLOC_NODE; > + attr->xattri_dela_state = XFS_DAS_ALLOC_NODE; > das_alloc_node: > - if (dac->blkcnt > 0) { > - error = xfs_attr_rmtval_set_blk(dac); > + if (attr->xattri_blkcnt > 0) { > + error = xfs_attr_rmtval_set_blk(attr); > if (error) > return error; > > - trace_xfs_das_state_return(dac->dela_state); > + trace_xfs_das_state_return(attr->xattri_dela_state); > return -EAGAIN; > } > > @@ -1214,8 +1214,8 @@ xfs_attr_node_addname( > /* > * Commit the flag value change and start the next trans in series > */ > - dac->dela_state = XFS_DAS_FLIP_NFLAG; > - trace_xfs_das_state_return(dac->dela_state); > + attr->xattri_dela_state = XFS_DAS_FLIP_NFLAG; > + trace_xfs_das_state_return(attr->xattri_dela_state); > return -EAGAIN; > } > das_flip_flag: > @@ -1230,13 +1230,13 @@ xfs_attr_node_addname( > return error; > > /* Set state in case xfs_attr_rmtval_remove returns -EAGAIN */ > - dac->dela_state = XFS_DAS_RM_NBLK; > + attr->xattri_dela_state = XFS_DAS_RM_NBLK; > das_rm_nblk: > if (args->rmtblkno) { > - error = xfs_attr_rmtval_remove(dac); > + error = xfs_attr_rmtval_remove(attr); > > if (error == -EAGAIN) > - trace_xfs_das_state_return(dac->dela_state); > + trace_xfs_das_state_return(attr->xattri_dela_state); > > if (error) > return error; > @@ -1344,10 +1344,10 @@ xfs_attr_leaf_mark_incomplete( > */ > STATIC > int xfs_attr_node_removename_setup( > - struct xfs_delattr_context *dac) > + struct xfs_attr_item *attr) > { > - struct xfs_da_args *args = dac->da_args; > - struct xfs_da_state **state = &dac->da_state; > + struct xfs_da_args *args = attr->xattri_da_args; > + struct xfs_da_state **state = &attr->xattri_da_state; > int error; > > error = xfs_attr_node_hasname(args, state); > @@ -1371,7 +1371,7 @@ int xfs_attr_node_removename_setup( > > STATIC int > xfs_attr_node_remove_rmt ( > - struct xfs_delattr_context *dac, > + struct xfs_attr_item *attr, > struct xfs_da_state *state) > { > int error = 0; > @@ -1379,9 +1379,9 @@ xfs_attr_node_remove_rmt ( > /* > * May return -EAGAIN to request that the caller recall this function > */ > - error = xfs_attr_rmtval_remove(dac); > + error = xfs_attr_rmtval_remove(attr); > if (error == -EAGAIN) > - trace_xfs_das_state_return(dac->dela_state); > + trace_xfs_das_state_return(attr->xattri_dela_state); > if (error) > return error; > > @@ -1425,10 +1425,10 @@ xfs_attr_node_remove_cleanup( > */ > STATIC int > xfs_attr_node_remove_step( > - struct xfs_delattr_context *dac) > + struct xfs_attr_item *attr) > { > - struct xfs_da_args *args = dac->da_args; > - struct xfs_da_state *state = dac->da_state; > + struct xfs_da_args *args = attr->xattri_da_args; > + struct xfs_da_state *state = attr->xattri_da_state; > int error = 0; > /* > * If there is an out-of-line value, de-allocate the blocks. > @@ -1439,7 +1439,7 @@ xfs_attr_node_remove_step( > /* > * May return -EAGAIN. Remove blocks until args->rmtblkno == 0 > */ > - error = xfs_attr_node_remove_rmt(dac, state); > + error = xfs_attr_node_remove_rmt(attr, state); > if (error) > return error; > } > @@ -1460,29 +1460,29 @@ xfs_attr_node_remove_step( > */ > STATIC int > xfs_attr_node_removename_iter( > - struct xfs_delattr_context *dac) > + struct xfs_attr_item *attr) > { > - struct xfs_da_args *args = dac->da_args; > + struct xfs_da_args *args = attr->xattri_da_args; > struct xfs_da_state *state = NULL; > int retval, error; > struct xfs_inode *dp = args->dp; > > trace_xfs_attr_node_removename(args); > > - if (!dac->da_state) { > - error = xfs_attr_node_removename_setup(dac); > + if (!attr->xattri_da_state) { > + error = xfs_attr_node_removename_setup(attr); > if (error) > goto out; > } > - state = dac->da_state; > + state = attr->xattri_da_state; > > - switch (dac->dela_state) { > + switch (attr->xattri_dela_state) { > case XFS_DAS_UNINIT: > /* > * repeatedly remove remote blocks, remove the entry and join. > * returns -EAGAIN or 0 for completion of the step. > */ > - error = xfs_attr_node_remove_step(dac); > + error = xfs_attr_node_remove_step(attr); > if (error) > break; > > @@ -1498,8 +1498,8 @@ xfs_attr_node_removename_iter( > if (error) > return error; > > - dac->dela_state = XFS_DAS_RM_SHRINK; > - trace_xfs_das_state_return(dac->dela_state); > + attr->xattri_dela_state = XFS_DAS_RM_SHRINK; > + trace_xfs_das_state_return(attr->xattri_dela_state); > return -EAGAIN; > } > > @@ -1519,7 +1519,7 @@ xfs_attr_node_removename_iter( > } > > if (error == -EAGAIN) { > - trace_xfs_das_state_return(dac->dela_state); > + trace_xfs_das_state_return(attr->xattri_dela_state); > return error; > } > out: > diff --git a/fs/xfs/libxfs/xfs_attr.h b/fs/xfs/libxfs/xfs_attr.h > index edd008d..d1a59d0 100644 > --- a/fs/xfs/libxfs/xfs_attr.h > +++ b/fs/xfs/libxfs/xfs_attr.h > @@ -364,7 +364,7 @@ struct xfs_attr_list_context { > */ > > /* > - * Enum values for xfs_delattr_context.da_state > + * Enum values for xfs_attr_item.xattri_da_state > * > * These values are used by delayed attribute operations to keep track of where > * they were before they returned -EAGAIN. A return code of -EAGAIN signals the > @@ -385,7 +385,7 @@ enum xfs_delattr_state { > }; > > /* > - * Defines for xfs_delattr_context.flags > + * Defines for xfs_attr_item.xattri_flags > */ > #define XFS_DAC_LEAF_ADDNAME_INIT 0x01 /* xfs_attr_leaf_addname init*/ > #define XFS_DAC_DELAYED_OP_INIT 0x02 /* delayed operations init*/ > @@ -393,32 +393,25 @@ enum xfs_delattr_state { > /* > * Context used for keeping track of delayed attribute operations > */ > -struct xfs_delattr_context { > - struct xfs_da_args *da_args; > +struct xfs_attr_item { > + struct xfs_da_args *xattri_da_args; > > /* > * Used by xfs_attr_set to hold a leaf buffer across a transaction roll > */ > - struct xfs_buf *leaf_bp; > + struct xfs_buf *xattri_leaf_bp; > > /* Used in xfs_attr_rmtval_set_blk to roll through allocating blocks */ > - struct xfs_bmbt_irec map; > - xfs_dablk_t lblkno; > - int blkcnt; > + struct xfs_bmbt_irec xattri_map; > + xfs_dablk_t xattri_lblkno; > + int xattri_blkcnt; > > /* Used in xfs_attr_node_removename to roll through removing blocks */ > - struct xfs_da_state *da_state; > + struct xfs_da_state *xattri_da_state; > > /* Used to keep track of current state of delayed operation */ > - unsigned int flags; > - enum xfs_delattr_state dela_state; > -}; > - > -/* > - * List of attrs to commit later. > - */ > -struct xfs_attr_item { > - struct xfs_delattr_context xattri_dac; > + unsigned int xattri_flags; > + enum xfs_delattr_state xattri_dela_state; > > /* > * Indicates if the attr operation is a set or a remove > @@ -426,7 +419,10 @@ struct xfs_attr_item { > */ > uint32_t xattri_op_flags; > > - /* used to log this item to an intent */ > + /* > + * used to log this item to an intent containing a list of attrs to > + * commit later > + */ > struct list_head xattri_list; > }; > > @@ -445,12 +441,10 @@ int xfs_inode_hasattr(struct xfs_inode *ip); > int xfs_attr_get_ilocked(struct xfs_da_args *args); > int xfs_attr_get(struct xfs_da_args *args); > int xfs_attr_set(struct xfs_da_args *args); > -int xfs_attr_set_iter(struct xfs_delattr_context *dac); > +int xfs_attr_set_iter(struct xfs_attr_item *attr); > int xfs_has_attr(struct xfs_da_args *args); > -int xfs_attr_remove_iter(struct xfs_delattr_context *dac); > +int xfs_attr_remove_iter(struct xfs_attr_item *attr); > bool xfs_attr_namecheck(const void *name, size_t length); > -void xfs_delattr_context_init(struct xfs_delattr_context *dac, > - struct xfs_da_args *args); > int xfs_attr_calc_size(struct xfs_da_args *args, int *local); > int xfs_attr_set_deferred(struct xfs_da_args *args); > int xfs_attr_remove_deferred(struct xfs_da_args *args); > diff --git a/fs/xfs/libxfs/xfs_attr_remote.c b/fs/xfs/libxfs/xfs_attr_remote.c > index a5ff5e0..42cc9cc 100644 > --- a/fs/xfs/libxfs/xfs_attr_remote.c > +++ b/fs/xfs/libxfs/xfs_attr_remote.c > @@ -634,14 +634,14 @@ xfs_attr_rmtval_set( > */ > int > xfs_attr_rmtval_find_space( > - struct xfs_delattr_context *dac) > + struct xfs_attr_item *attr) > { > - struct xfs_da_args *args = dac->da_args; > - struct xfs_bmbt_irec *map = &dac->map; > + struct xfs_da_args *args = attr->xattri_da_args; > + struct xfs_bmbt_irec *map = &attr->xattri_map; > int error; > > - dac->lblkno = 0; > - dac->blkcnt = 0; > + attr->xattri_lblkno = 0; > + attr->xattri_blkcnt = 0; > args->rmtblkcnt = 0; > args->rmtblkno = 0; > memset(map, 0, sizeof(struct xfs_bmbt_irec)); > @@ -650,8 +650,8 @@ xfs_attr_rmtval_find_space( > if (error) > return error; > > - dac->blkcnt = args->rmtblkcnt; > - dac->lblkno = args->rmtblkno; > + attr->xattri_blkcnt = args->rmtblkcnt; > + attr->xattri_lblkno = args->rmtblkno; > > return 0; > } > @@ -664,17 +664,17 @@ xfs_attr_rmtval_find_space( > */ > int > xfs_attr_rmtval_set_blk( > - struct xfs_delattr_context *dac) > + struct xfs_attr_item *attr) > { > - struct xfs_da_args *args = dac->da_args; > + struct xfs_da_args *args = attr->xattri_da_args; > struct xfs_inode *dp = args->dp; > - struct xfs_bmbt_irec *map = &dac->map; > + struct xfs_bmbt_irec *map = &attr->xattri_map; > int nmap; > int error; > > nmap = 1; > - error = xfs_bmapi_write(args->trans, dp, (xfs_fileoff_t)dac->lblkno, > - dac->blkcnt, XFS_BMAPI_ATTRFORK, args->total, > + error = xfs_bmapi_write(args->trans, dp, (xfs_fileoff_t)attr->xattri_lblkno, > + attr->xattri_blkcnt, XFS_BMAPI_ATTRFORK, args->total, > map, &nmap); > if (error) > return error; > @@ -684,8 +684,8 @@ xfs_attr_rmtval_set_blk( > (map->br_startblock != HOLESTARTBLOCK)); > > /* roll attribute extent map forwards */ > - dac->lblkno += map->br_blockcount; > - dac->blkcnt -= map->br_blockcount; > + attr->xattri_lblkno += map->br_blockcount; > + attr->xattri_blkcnt -= map->br_blockcount; > > return 0; > } > @@ -738,9 +738,9 @@ xfs_attr_rmtval_invalidate( > */ > int > xfs_attr_rmtval_remove( > - struct xfs_delattr_context *dac) > + struct xfs_attr_item *attr) > { > - struct xfs_da_args *args = dac->da_args; > + struct xfs_da_args *args = attr->xattri_da_args; > int error, done; > > /* > @@ -762,7 +762,7 @@ xfs_attr_rmtval_remove( > * by the parent > */ > if (!done) { > - trace_xfs_das_state_return(dac->dela_state); > + trace_xfs_das_state_return(attr->xattri_dela_state); > return -EAGAIN; > } > > diff --git a/fs/xfs/libxfs/xfs_attr_remote.h b/fs/xfs/libxfs/xfs_attr_remote.h > index 6ae91af..d3aa27d 100644 > --- a/fs/xfs/libxfs/xfs_attr_remote.h > +++ b/fs/xfs/libxfs/xfs_attr_remote.h > @@ -13,9 +13,9 @@ int xfs_attr_rmtval_set(struct xfs_da_args *args); > int xfs_attr_rmtval_stale(struct xfs_inode *ip, struct xfs_bmbt_irec *map, > xfs_buf_flags_t incore_flags); > int xfs_attr_rmtval_invalidate(struct xfs_da_args *args); > -int xfs_attr_rmtval_remove(struct xfs_delattr_context *dac); > +int xfs_attr_rmtval_remove(struct xfs_attr_item *attr); > int xfs_attr_rmt_find_hole(struct xfs_da_args *args); > int xfs_attr_rmtval_set_value(struct xfs_da_args *args); > -int xfs_attr_rmtval_set_blk(struct xfs_delattr_context *dac); > -int xfs_attr_rmtval_find_space(struct xfs_delattr_context *dac); > +int xfs_attr_rmtval_set_blk(struct xfs_attr_item *attr); > +int xfs_attr_rmtval_find_space(struct xfs_attr_item *attr); > #endif /* __XFS_ATTR_REMOTE_H__ */ > diff --git a/fs/xfs/xfs_attr_item.c b/fs/xfs/xfs_attr_item.c > index e1cfef1..bbca949 100644 > --- a/fs/xfs/xfs_attr_item.c > +++ b/fs/xfs/xfs_attr_item.c > @@ -291,11 +291,11 @@ xfs_attrd_item_release( > */ > int > xfs_trans_attr( > - struct xfs_delattr_context *dac, > + struct xfs_attr_item *attr, > struct xfs_attrd_log_item *attrdp, > uint32_t op_flags) > { > - struct xfs_da_args *args = dac->da_args; > + struct xfs_da_args *args = attr->xattri_da_args; > int error; > > error = xfs_qm_dqattach_locked(args->dp, 0); > @@ -310,11 +310,11 @@ xfs_trans_attr( > switch (op_flags) { > case XFS_ATTR_OP_FLAGS_SET: > args->op_flags |= XFS_DA_OP_ADDNAME; > - error = xfs_attr_set_iter(dac); > + error = xfs_attr_set_iter(attr); > break; > case XFS_ATTR_OP_FLAGS_REMOVE: > ASSERT(XFS_IFORK_Q(args->dp)); > - error = xfs_attr_remove_iter(dac); > + error = xfs_attr_remove_iter(attr); > break; > default: > error = -EFSCORRUPTED; > @@ -358,16 +358,16 @@ xfs_attr_log_item( > * structure with fields from this xfs_attr_item > */ > attrp = &attrip->attri_format; > - attrp->alfi_ino = attr->xattri_dac.da_args->dp->i_ino; > + attrp->alfi_ino = attr->xattri_da_args->dp->i_ino; > attrp->alfi_op_flags = attr->xattri_op_flags; > - attrp->alfi_value_len = attr->xattri_dac.da_args->valuelen; > - attrp->alfi_name_len = attr->xattri_dac.da_args->namelen; > - attrp->alfi_attr_flags = attr->xattri_dac.da_args->attr_filter; > - > - attrip->attri_name = (void *)attr->xattri_dac.da_args->name; > - attrip->attri_value = attr->xattri_dac.da_args->value; > - attrip->attri_name_len = attr->xattri_dac.da_args->namelen; > - attrip->attri_value_len = attr->xattri_dac.da_args->valuelen; > + attrp->alfi_value_len = attr->xattri_da_args->valuelen; > + attrp->alfi_name_len = attr->xattri_da_args->namelen; > + attrp->alfi_attr_flags = attr->xattri_da_args->attr_filter; > + > + attrip->attri_name = (void *)attr->xattri_da_args->name; > + attrip->attri_value = attr->xattri_da_args->value; > + attrip->attri_name_len = attr->xattri_da_args->namelen; > + attrip->attri_value_len = attr->xattri_da_args->valuelen; > } > > /* Get an ATTRI. */ > @@ -408,10 +408,8 @@ xfs_attr_finish_item( > struct xfs_attr_item *attr; > struct xfs_attrd_log_item *done_item = NULL; > int error; > - struct xfs_delattr_context *dac; > > attr = container_of(item, struct xfs_attr_item, xattri_list); > - dac = &attr->xattri_dac; > if (done) > done_item = ATTRD_ITEM(done); > > @@ -423,19 +421,18 @@ xfs_attr_finish_item( > * in a standard delay op, so we need to catch this here and rejoin the > * leaf to the new transaction > */ > - if (attr->xattri_dac.leaf_bp && > - attr->xattri_dac.leaf_bp->b_transp != tp) { > - xfs_trans_bjoin(tp, attr->xattri_dac.leaf_bp); > - xfs_trans_bhold(tp, attr->xattri_dac.leaf_bp); > + if (attr->xattri_leaf_bp && attr->xattri_leaf_bp->b_transp != tp) { > + xfs_trans_bjoin(tp, attr->xattri_leaf_bp); > + xfs_trans_bhold(tp, attr->xattri_leaf_bp); > } > > /* > * Always reset trans after EAGAIN cycle > * since the transaction is new > */ > - dac->da_args->trans = tp; > + attr->xattri_da_args->trans = tp; > > - error = xfs_trans_attr(dac, done_item, attr->xattri_op_flags); > + error = xfs_trans_attr(attr, done_item, attr->xattri_op_flags); > if (error != -EAGAIN) > kmem_free(attr); > > @@ -570,7 +567,7 @@ xfs_attri_item_recover( > struct xfs_attrd_log_item *done_item = NULL; > struct xfs_attr_item attr = { > .xattri_op_flags = attrip->attri_format.alfi_op_flags, > - .xattri_dac.da_args = &args, > + .xattri_da_args = &args, > }; > > /* > @@ -630,8 +627,7 @@ xfs_attri_item_recover( > xfs_ilock(ip, XFS_ILOCK_EXCL); > xfs_trans_ijoin(args.trans, ip, 0); > > - error = xfs_trans_attr(&attr.xattri_dac, done_item, > - attrp->alfi_op_flags); > + error = xfs_trans_attr(&attr, done_item, attrp->alfi_op_flags); > if (error == -EAGAIN) { > /* > * There's more work to do, so make a new xfs_attr_item and add > @@ -648,7 +644,7 @@ xfs_attri_item_recover( > memcpy(new_args, &args, sizeof(struct xfs_da_args)); > memcpy(new_attr, &attr, sizeof(struct xfs_attr_item)); > > - new_attr->xattri_dac.da_args = new_args; > + new_attr->xattri_da_args = new_args; > memset(&new_attr->xattri_list, 0, sizeof(struct list_head)); > > xfs_defer_add(args.trans, XFS_DEFER_OPS_TYPE_ATTR, > -- > 2.7.4 >