Re: [PATCH v22 04/16] xfs: Return from xfs_attr_set_iter if there are no more rmtblks to process

Allison Henderson
2021-07-28T09:02:03Z

On 7/27/21 4:30 PM, Darrick J. Wong wrote:
> On Mon, Jul 26, 2021 at 11:20:41PM -0700, Allison Henderson wrote:
>> During an attr rename operation, blocks are saved for later removal
>> as rmtblkno2. The rmtblkno is used in the case of needing to alloc
>> more blocks if not enough were available. However, in the case
>> that neither rmtblkno or rmtblkno2 are set, we can return as soon
>> as xfs_attr_node_addname completes, rather than rolling the transaction
>> with an -EAGAIN return. This extra loop does not hurt anything right
>> now, but it will be a problem later when we get into log items because
>> we end up with an empty log transaction. So, add a simple check to
>> cut out the unneeded iteration.
>>
>> Signed-off-by: Allison Henderson <allison.henderson@oracle.com>
>
> Looks good,
> Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Great, thanks!

Allison

>
> --D
>
>> ---
>> fs/xfs/libxfs/xfs_attr.c | 7 +++++++
>> 1 file changed, 7 insertions(+)
>>
>> diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c
>> index d9d7d51..5040fc1 100644
>> --- a/fs/xfs/libxfs/xfs_attr.c
>> +++ b/fs/xfs/libxfs/xfs_attr.c
>> @@ -409,6 +409,13 @@ xfs_attr_set_iter(
>> if (error)
>> return error;
>>
>> + /*
>> + * If addname was successful, and we dont need to alloc
>> + * or remove anymore blks, we're done.
>> + */
>> + if (!args->rmtblkno && !args->rmtblkno2)
>> + return 0;
>> +
>> dac->dela_state = XFS_DAS_FOUND_NBLK;
>> }
>> return -EAGAIN;
>> --
>> 2.7.4
>>