linux-xfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Allison Henderson <allison.henderson@oracle.com>
To: Chandan Babu R <chandanrlinux@gmail.com>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH v22 15/16] xfs: Merge xfs_delattr_context into xfs_attr_item
Date: Mon, 2 Aug 2021 01:33:17 -0700	[thread overview]
Message-ID: <d585b00b-296e-87d4-030c-c5f36cafd299@oracle.com> (raw)
In-Reply-To: <87zgu0msq0.fsf@garuda>



On 8/1/21 8:27 PM, Chandan Babu R wrote:
> On 27 Jul 2021 at 11:50, 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 infrastructure is in place, we can combine these to eliminate
>> the extra struct
>>
> 
> Looks good to me.
> 
> Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com>
Great, thanks!

Allison
> 
> 
>> Signed-off-by: Allison Henderson <allison.henderson@oracle.com>
>> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
>> ---
>>   fs/xfs/libxfs/xfs_attr.c        | 142 ++++++++++++++++++++--------------------
>>   fs/xfs/libxfs/xfs_attr.h        |  40 +++++------
>>   fs/xfs/libxfs/xfs_attr_remote.c |  36 +++++-----
>>   fs/xfs/libxfs/xfs_attr_remote.h |   6 +-
>>   fs/xfs/xfs_attr_item.c          |  43 ++++++------
>>   5 files changed, 130 insertions(+), 137 deletions(-)
>>
>> diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c
>> index ec03a7b..811288d 100644
>> --- a/fs/xfs/libxfs/xfs_attr.c
>> +++ b/fs/xfs/libxfs/xfs_attr.c
>> @@ -56,10 +56,9 @@ STATIC int xfs_attr_leaf_try_add(struct xfs_da_args *args, struct xfs_buf *bp);
>>    */
>>   STATIC int xfs_attr_node_get(xfs_da_args_t *args);
>>   STATIC void xfs_attr_restore_rmt_blk(struct xfs_da_args *args);
>> -STATIC int xfs_attr_node_addname(struct xfs_delattr_context *dac);
>> -STATIC int xfs_attr_node_addname_find_attr(struct xfs_delattr_context *dac);
>> -STATIC int xfs_attr_node_addname_clear_incomplete(
>> -				struct xfs_delattr_context *dac);
>> +STATIC int xfs_attr_node_addname(struct xfs_attr_item *attr);
>> +STATIC int xfs_attr_node_addname_find_attr(struct xfs_attr_item *attr);
>> +STATIC int xfs_attr_node_addname_clear_incomplete(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);
>> @@ -246,11 +245,11 @@ xfs_attr_is_shortform(
>>   
>>   STATIC int
>>   xfs_attr_sf_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_inode		*dp = args->dp;
>> -	struct xfs_buf			**leaf_bp = &dac->leaf_bp;
>> +	struct xfs_buf			**leaf_bp = &attr->xattri_leaf_bp;
>>   	int				error = 0;
>>   
>>   	/*
>> @@ -295,17 +294,17 @@ xfs_attr_sf_addname(
>>    */
>>   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_buf			**leaf_bp = &dac->leaf_bp;
>> +	struct xfs_da_args              *args = attr->xattri_da_args;
>> +	struct xfs_buf			**leaf_bp = &attr->xattri_leaf_bp;
>>   	struct xfs_inode		*dp = args->dp;
>>   	struct xfs_buf			*bp = NULL;
>>   	int				forkoff, error = 0;
>>   	struct xfs_mount		*mp = args->dp->i_mount;
>>   
>>   	/* State machine switch */
>> -	switch (dac->dela_state) {
>> +	switch (attr->xattri_dela_state) {
>>   	case XFS_DAS_UNINIT:
>>   		/*
>>   		 * If the fork is shortform, attempt to add the attr. If there
>> @@ -315,7 +314,7 @@ xfs_attr_set_iter(
>>   		 * release the hold once we return with a clean transaction.
>>   		 */
>>   		if (xfs_attr_is_shortform(dp))
>> -			return xfs_attr_sf_addname(dac);
>> +			return xfs_attr_sf_addname(attr);
>>   		if (*leaf_bp != NULL) {
>>   			xfs_trans_bhold_release(args->trans, *leaf_bp);
>>   			*leaf_bp = NULL;
>> @@ -342,19 +341,19 @@ xfs_attr_set_iter(
>>   				 * handling code below
>>   				 */
>>   				trace_xfs_attr_set_iter_return(
>> -					dac->dela_state, args->dp);
>> +					attr->xattri_dela_state, args->dp);
>>   				return -EAGAIN;
>>   			} else if (error) {
>>   				return error;
>>   			}
>>   
>> -			dac->dela_state = XFS_DAS_FOUND_LBLK;
>> +			attr->xattri_dela_state = XFS_DAS_FOUND_LBLK;
>>   		} else {
>> -			error = xfs_attr_node_addname_find_attr(dac);
>> +			error = xfs_attr_node_addname_find_attr(attr);
>>   			if (error)
>>   				return error;
>>   
>> -			error = xfs_attr_node_addname(dac);
>> +			error = xfs_attr_node_addname(attr);
>>   			if (error)
>>   				return error;
>>   
>> @@ -365,9 +364,10 @@ xfs_attr_set_iter(
>>   			if (!args->rmtblkno && !args->rmtblkno2)
>>   				return 0;
>>   
>> -			dac->dela_state = XFS_DAS_FOUND_NBLK;
>> +			attr->xattri_dela_state = XFS_DAS_FOUND_NBLK;
>>   		}
>> -		trace_xfs_attr_set_iter_return(dac->dela_state,	args->dp);
>> +		trace_xfs_attr_set_iter_return(attr->xattri_dela_state,
>> +					       args->dp);
>>   		return -EAGAIN;
>>   	case XFS_DAS_FOUND_LBLK:
>>   		/*
>> @@ -378,10 +378,10 @@ xfs_attr_set_iter(
>>   		 */
>>   
>>   		/* 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;
>>   			}
>> @@ -391,11 +391,11 @@ xfs_attr_set_iter(
>>   		 * Repeat allocating remote blocks for the attr value until
>>   		 * blkcnt drops to zero.
>>   		 */
>> -		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_attr_set_iter_return(dac->dela_state,
>> +			trace_xfs_attr_set_iter_return(attr->xattri_dela_state,
>>   						       args->dp);
>>   			return -EAGAIN;
>>   		}
>> @@ -431,8 +431,8 @@ xfs_attr_set_iter(
>>   			 * Commit the flag value change and start the next trans
>>   			 * in series.
>>   			 */
>> -			dac->dela_state = XFS_DAS_FLIP_LFLAG;
>> -			trace_xfs_attr_set_iter_return(dac->dela_state,
>> +			attr->xattri_dela_state = XFS_DAS_FLIP_LFLAG;
>> +			trace_xfs_attr_set_iter_return(attr->xattri_dela_state,
>>   						       args->dp);
>>   			return -EAGAIN;
>>   		}
>> @@ -451,16 +451,16 @@ xfs_attr_set_iter(
>>   		/* fallthrough */
>>   	case XFS_DAS_RM_LBLK:
>>   		/* 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;
>>   		if (args->rmtblkno) {
>> -			error = xfs_attr_rmtval_remove(dac);
>> +			error = xfs_attr_rmtval_remove(attr);
>>   			if (error == -EAGAIN)
>>   				trace_xfs_attr_set_iter_return(
>> -					dac->dela_state, args->dp);
>> +					attr->xattri_dela_state, args->dp);
>>   			if (error)
>>   				return error;
>>   
>> -			dac->dela_state = XFS_DAS_RD_LEAF;
>> +			attr->xattri_dela_state = XFS_DAS_RD_LEAF;
>>   			return -EAGAIN;
>>   		}
>>   
>> @@ -491,7 +491,7 @@ xfs_attr_set_iter(
>>   		 * state.
>>   		 */
>>   		if (args->rmtblkno > 0) {
>> -			error = xfs_attr_rmtval_find_space(dac);
>> +			error = xfs_attr_rmtval_find_space(attr);
>>   			if (error)
>>   				return error;
>>   		}
>> @@ -504,14 +504,14 @@ xfs_attr_set_iter(
>>   		 * after we create the attribute so that we don't overflow the
>>   		 * maximum size of a transaction and/or hit a deadlock.
>>   		 */
>> -		dac->dela_state = XFS_DAS_ALLOC_NODE;
>> +		attr->xattri_dela_state = XFS_DAS_ALLOC_NODE;
>>   		if (args->rmtblkno > 0) {
>> -			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_attr_set_iter_return(
>> -					dac->dela_state, args->dp);
>> +					attr->xattri_dela_state, args->dp);
>>   				return -EAGAIN;
>>   			}
>>   
>> @@ -547,8 +547,8 @@ xfs_attr_set_iter(
>>   			 * Commit the flag value change and start the next trans
>>   			 * in series
>>   			 */
>> -			dac->dela_state = XFS_DAS_FLIP_NFLAG;
>> -			trace_xfs_attr_set_iter_return(dac->dela_state,
>> +			attr->xattri_dela_state = XFS_DAS_FLIP_NFLAG;
>> +			trace_xfs_attr_set_iter_return(attr->xattri_dela_state,
>>   						       args->dp);
>>   			return -EAGAIN;
>>   		}
>> @@ -568,17 +568,17 @@ xfs_attr_set_iter(
>>   		/* fallthrough */
>>   	case XFS_DAS_RM_NBLK:
>>   		/* 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;
>>   		if (args->rmtblkno) {
>> -			error = xfs_attr_rmtval_remove(dac);
>> +			error = xfs_attr_rmtval_remove(attr);
>>   			if (error == -EAGAIN)
>>   				trace_xfs_attr_set_iter_return(
>> -					dac->dela_state, args->dp);
>> +					attr->xattri_dela_state, args->dp);
>>   
>>   			if (error)
>>   				return error;
>>   
>> -			dac->dela_state = XFS_DAS_CLR_FLAG;
>> +			attr->xattri_dela_state = XFS_DAS_CLR_FLAG;
>>   			return -EAGAIN;
>>   		}
>>   
>> @@ -588,7 +588,7 @@ xfs_attr_set_iter(
>>   		 * The last state for node format. Look up the old attr and
>>   		 * remove it.
>>   		 */
>> -		error = xfs_attr_node_addname_clear_incomplete(dac);
>> +		error = xfs_attr_node_addname_clear_incomplete(attr);
>>   		break;
>>   	default:
>>   		ASSERT(0);
>> @@ -785,7 +785,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;
>> @@ -1098,16 +1098,16 @@ xfs_attr_node_hasname(
>>   
>>   STATIC int
>>   xfs_attr_node_addname_find_attr(
>> -	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				retval;
>>   
>>   	/*
>>   	 * Search to see if name already exists, and get back a pointer
>>   	 * to where it should go.
>>   	 */
>> -	retval = xfs_attr_node_hasname(args, &dac->da_state);
>> +	retval = xfs_attr_node_hasname(args, &attr->xattri_da_state);
>>   	if (retval != -ENOATTR && retval != -EEXIST)
>>   		return retval;
>>   
>> @@ -1135,8 +1135,8 @@ xfs_attr_node_addname_find_attr(
>>   
>>   	return 0;
>>   error:
>> -	if (dac->da_state)
>> -		xfs_da_state_free(dac->da_state);
>> +	if (attr->xattri_da_state)
>> +		xfs_da_state_free(attr->xattri_da_state);
>>   	return retval;
>>   }
>>   
>> @@ -1157,10 +1157,10 @@ xfs_attr_node_addname_find_attr(
>>    */
>>   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_state		*state = dac->da_state;
>> +	struct xfs_da_args		*args = attr->xattri_da_args;
>> +	struct xfs_da_state		*state = attr->xattri_da_state;
>>   	struct xfs_da_state_blk		*blk;
>>   	int				error;
>>   
>> @@ -1191,7 +1191,7 @@ xfs_attr_node_addname(
>>   			 * this point.
>>   			 */
>>   			trace_xfs_attr_node_addname_return(
>> -					dac->dela_state, args->dp);
>> +					attr->xattri_dela_state, args->dp);
>>   			return -EAGAIN;
>>   		}
>>   
>> @@ -1220,9 +1220,9 @@ xfs_attr_node_addname(
>>   
>>   STATIC int
>>   xfs_attr_node_addname_clear_incomplete(
>> -	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 = 0;
>>   	int				error = 0;
>> @@ -1323,10 +1323,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);
>> @@ -1385,16 +1385,16 @@ xfs_attr_node_removename(
>>    */
>>   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_state		*state = dac->da_state;
>> +	struct xfs_da_args		*args = attr->xattri_da_args;
>> +	struct xfs_da_state		*state = attr->xattri_da_state;
>>   	int				retval, error = 0;
>>   	struct xfs_inode		*dp = args->dp;
>>   
>>   	trace_xfs_attr_node_removename(args);
>>   
>> -	switch (dac->dela_state) {
>> +	switch (attr->xattri_dela_state) {
>>   	case XFS_DAS_UNINIT:
>>   		if (!xfs_inode_hasattr(dp))
>>   			return -ENOATTR;
>> @@ -1413,16 +1413,16 @@ xfs_attr_remove_iter(
>>   		 * Node format may require transaction rolls. Set up the
>>   		 * state context and fall into the state machine.
>>   		 */
>> -		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)
>>   				return error;
>> -			state = dac->da_state;
>> +			state = attr->xattri_da_state;
>>   		}
>>   
>>   		/* fallthrough */
>>   	case XFS_DAS_RMTBLK:
>> -		dac->dela_state = XFS_DAS_RMTBLK;
>> +		attr->xattri_dela_state = XFS_DAS_RMTBLK;
>>   
>>   		/*
>>   		 * If there is an out-of-line value, de-allocate the blocks.
>> @@ -1435,10 +1435,10 @@ xfs_attr_remove_iter(
>>   			 * May return -EAGAIN. Roll and repeat until all remote
>>   			 * blocks are removed.
>>   			 */
>> -			error = xfs_attr_rmtval_remove(dac);
>> +			error = xfs_attr_rmtval_remove(attr);
>>   			if (error == -EAGAIN) {
>>   				trace_xfs_attr_remove_iter_return(
>> -						dac->dela_state, args->dp);
>> +					attr->xattri_dela_state, args->dp);
>>   				return error;
>>   			} else if (error) {
>>   				goto out;
>> @@ -1453,7 +1453,7 @@ xfs_attr_remove_iter(
>>   			error = xfs_attr_refillstate(state);
>>   			if (error)
>>   				goto out;
>> -			dac->dela_state = XFS_DAS_RM_NAME;
>> +			attr->xattri_dela_state = XFS_DAS_RM_NAME;
>>   			return -EAGAIN;
>>   		}
>>   
>> @@ -1463,7 +1463,7 @@ xfs_attr_remove_iter(
>>   		 * If we came here fresh from a transaction roll, reattach all
>>   		 * the buffers to the current transaction.
>>   		 */
>> -		if (dac->dela_state == XFS_DAS_RM_NAME) {
>> +		if (attr->xattri_dela_state == XFS_DAS_RM_NAME) {
>>   			error = xfs_attr_refillstate(state);
>>   			if (error)
>>   				goto out;
>> @@ -1480,9 +1480,9 @@ xfs_attr_remove_iter(
>>   			if (error)
>>   				goto out;
>>   
>> -			dac->dela_state = XFS_DAS_RM_SHRINK;
>> +			attr->xattri_dela_state = XFS_DAS_RM_SHRINK;
>>   			trace_xfs_attr_remove_iter_return(
>> -					dac->dela_state, args->dp);
>> +					attr->xattri_dela_state, args->dp);
>>   			return -EAGAIN;
>>   		}
>>   
>> diff --git a/fs/xfs/libxfs/xfs_attr.h b/fs/xfs/libxfs/xfs_attr.h
>> index d4e7521..b5f8351 100644
>> --- a/fs/xfs/libxfs/xfs_attr.h
>> +++ b/fs/xfs/libxfs/xfs_attr.h
>> @@ -430,7 +430,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
>> @@ -455,7 +455,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*/
>> @@ -463,32 +463,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
>> @@ -496,7 +489,10 @@ struct xfs_attr_item {
>>   	 */
>>   	unsigned int			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;
>>   };
>>   
>> @@ -516,12 +512,10 @@ bool xfs_attr_is_leaf(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 e29c2b9..db5f004 100644
>> --- a/fs/xfs/libxfs/xfs_attr_remote.c
>> +++ b/fs/xfs/libxfs/xfs_attr_remote.c
>> @@ -568,14 +568,14 @@ xfs_attr_rmtval_stale(
>>    */
>>   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));
>> @@ -584,8 +584,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;
>>   }
>> @@ -598,17 +598,18 @@ 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;
>> @@ -618,8 +619,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;
>>   }
>> @@ -673,9 +674,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;
>>   
>>   	/*
>> @@ -695,7 +696,8 @@ xfs_attr_rmtval_remove(
>>   	 * the parent
>>   	 */
>>   	if (!done) {
>> -		trace_xfs_attr_rmtval_remove_return(dac->dela_state, args->dp);
>> +		trace_xfs_attr_rmtval_remove_return(attr->xattri_dela_state,
>> +						    args->dp);
>>   		return -EAGAIN;
>>   	}
>>   
>> diff --git a/fs/xfs/libxfs/xfs_attr_remote.h b/fs/xfs/libxfs/xfs_attr_remote.h
>> index d72eff3..62b398e 100644
>> --- a/fs/xfs/libxfs/xfs_attr_remote.h
>> +++ b/fs/xfs/libxfs/xfs_attr_remote.h
>> @@ -12,9 +12,9 @@ int xfs_attr_rmtval_get(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 2efd94f..18fc202 100644
>> --- a/fs/xfs/xfs_attr_item.c
>> +++ b/fs/xfs/xfs_attr_item.c
>> @@ -284,11 +284,11 @@ xfs_attrd_item_release(
>>    */
>>   STATIC int
>>   xfs_trans_attr_finish_update(
>> -	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;
>>   	unsigned int			op = op_flags &
>>   					     XFS_ATTR_OP_FLAGS_TYPE_MASK;
>>   	int				error;
>> @@ -305,11 +305,11 @@ xfs_trans_attr_finish_update(
>>   	switch (op) {
>>   	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;
>> @@ -353,16 +353,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. */
>> @@ -403,10 +403,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);
>>   
>> @@ -418,19 +416,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_finish_update(dac, done_item,
>> +	error = xfs_trans_attr_finish_update(attr, done_item,
>>   					     attr->xattri_op_flags);
>>   	if (error != -EAGAIN)
>>   		kmem_free(attr);
>> @@ -608,7 +605,7 @@ xfs_attri_item_recover(
>>   	args = (struct xfs_da_args *)((char *)attr +
>>   		   sizeof(struct xfs_attr_item));
>>   
>> -	attr->xattri_dac.da_args = args;
>> +	attr->xattri_da_args = args;
>>   	attr->xattri_op_flags = attrp->alfi_op_flags;
>>   
>>   	args->dp = ip;
>> @@ -645,7 +642,7 @@ xfs_attri_item_recover(
>>   	xfs_ilock(ip, XFS_ILOCK_EXCL);
>>   	xfs_trans_ijoin(tp, ip, 0);
>>   
>> -	ret = xfs_trans_attr_finish_update(&attr->xattri_dac, done_item,
>> +	ret = xfs_trans_attr_finish_update(attr, done_item,
>>   					   attrp->alfi_op_flags);
>>   	if (ret == -EAGAIN) {
>>   		/* There's more work to do, so add it to this transaction */
> 
> 

  reply	other threads:[~2021-08-02  8:33 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-27  6:20 [PATCH v22 00/16] Delayed Attributes Allison Henderson
2021-07-27  6:20 ` [PATCH v22 01/16] xfs: allow setting and clearing of log incompat feature flags Allison Henderson
2021-07-27 12:24   ` Chandan Babu R
2021-07-28  9:01     ` Allison Henderson
2021-07-27  6:20 ` [PATCH v22 02/16] xfs: clear log incompat feature bits when the log is idle Allison Henderson
2021-07-27 12:46   ` Chandan Babu R
2021-07-28  9:02     ` Allison Henderson
2021-07-27  6:20 ` [PATCH v22 03/16] xfs: refactor xfs_iget calls from log intent recovery Allison Henderson
2021-07-28 11:54   ` Chandan Babu R
2021-07-30  9:17     ` Allison Henderson
2021-07-27  6:20 ` [PATCH v22 04/16] xfs: Return from xfs_attr_set_iter if there are no more rmtblks to process Allison Henderson
2021-07-27 23:30   ` Darrick J. Wong
2021-07-28  9:01     ` Allison Henderson
2021-07-28 12:18   ` Chandan Babu R
2021-07-30  9:17     ` Allison Henderson
2021-08-09 17:24   ` Darrick J. Wong
2021-07-27  6:20 ` [PATCH v22 05/16] xfs: Add state machine tracepoints Allison Henderson
2021-07-28 13:42   ` Chandan Babu R
2021-07-30  9:17     ` Allison Henderson
2021-07-27  6:20 ` [PATCH v22 06/16] xfs: Rename __xfs_attr_rmtval_remove Allison Henderson
2021-07-29  7:56   ` Chandan Babu R
2021-07-30  9:17     ` Allison Henderson
2021-07-27  6:20 ` [PATCH v22 07/16] xfs: Handle krealloc errors in xlog_recover_add_to_cont_trans Allison Henderson
2021-07-29  8:27   ` Chandan Babu R
2021-07-30  9:17     ` Allison Henderson
2021-07-27  6:20 ` [PATCH v22 08/16] xfs: Set up infrastructure for deferred attribute operations Allison Henderson
2021-07-28  0:56   ` Darrick J. Wong
2021-07-28  9:04     ` Allison Henderson
2021-07-30  4:46   ` Chandan Babu R
2021-07-30  9:17     ` Allison Henderson
2021-07-27  6:20 ` [PATCH v22 09/16] xfs: Implement attr logging and replay Allison Henderson
2021-07-27  9:38   ` Chandan Babu R
2021-07-28  9:01     ` Allison Henderson
2021-07-28  0:39   ` Darrick J. Wong
2021-07-28  9:05     ` Allison Henderson
2021-07-30 12:21   ` Chandan Babu R
2021-08-02  8:33     ` Allison Henderson
2021-07-27  6:20 ` [PATCH v22 10/16] RFC xfs: Skip flip flags for delayed attrs Allison Henderson
2021-07-28 19:18   ` Darrick J. Wong
2021-07-31  5:11     ` Allison Henderson
2021-08-02  7:47       ` Allison Henderson
2021-07-30 14:40   ` Chandan Babu R
2021-08-02  8:33     ` Allison Henderson
2021-07-27  6:20 ` [PATCH v22 11/16] xfs: Add xfs_attr_set_deferred and xfs_attr_remove_deferred Allison Henderson
2021-07-28 19:24   ` Darrick J. Wong
2021-08-02  8:18     ` Allison Henderson
2021-07-30 14:58   ` Chandan Babu R
2021-08-02  8:33     ` Allison Henderson
2021-07-27  6:20 ` [PATCH v22 12/16] xfs: Remove unused xfs_attr_*_args Allison Henderson
2021-07-28 19:31   ` Darrick J. Wong
2021-08-02  8:11     ` Allison Henderson
2021-08-02  3:26   ` Chandan Babu R
2021-08-02  8:33     ` Allison Henderson
2021-07-27  6:20 ` [PATCH v22 13/16] xfs: Add delayed attributes error tag Allison Henderson
2021-08-02  3:27   ` Chandan Babu R
2021-08-02  8:33     ` Allison Henderson
2021-07-27  6:20 ` [PATCH v22 14/16] xfs: Add delattr mount option Allison Henderson
2021-07-28  0:47   ` Darrick J. Wong
2021-07-28  2:13     ` Dave Chinner
2021-07-28  9:05       ` Allison Henderson
2021-07-28  9:02     ` Allison Henderson
2021-07-27  6:20 ` [PATCH v22 15/16] xfs: Merge xfs_delattr_context into xfs_attr_item Allison Henderson
2021-08-02  3:27   ` Chandan Babu R
2021-08-02  8:33     ` Allison Henderson [this message]
2021-07-27  6:20 ` [PATCH v22 16/16] xfs: Add helper function xfs_attr_leaf_addname Allison Henderson
2021-07-28 19:52   ` Darrick J. Wong
2021-08-02  8:18     ` Allison Henderson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d585b00b-296e-87d4-030c-c5f36cafd299@oracle.com \
    --to=allison.henderson@oracle.com \
    --cc=chandanrlinux@gmail.com \
    --cc=linux-xfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).