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

Allison Henderson
2021-07-30T09:17:58Z

On 7/28/21 5:18 AM, Chandan Babu R wrote:
> On 27 Jul 2021 at 11:50, 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.
>>
>
> Looks good to me.
>
> Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com>
Thanks!
Allison

>
>> Signed-off-by: Allison Henderson <allison.henderson@oracle.com>
>> ---
>> 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;
>
>