Re: [PATCH v7 17/19] xfs: Add helper function xfs_attr_leaf_mark_incomplete

Allison Collins
2020-02-23T18:43:10Z

On 2/23/20 6:47 AM, Amir Goldstein wrote:
> On Sun, Feb 23, 2020 at 4:07 AM Allison Collins
> <allison.henderson@oracle.com> wrote:
>>
>> This patch helps to simplify xfs_attr_node_removename by modularizing the code
>> around the transactions into helper functions. This will make the function easier
>> to follow when we introduce delayed attributes.
>>
>> Signed-off-by: Allison Collins <allison.henderson@oracle.com>
>
> Found no surprises here, you may add:
>
> Reviewed-by: Amir Goldstein <amir73il@gmail.com>
>
> Thanks,
> Amir.

Alrighty then. Thank you!

Allison

>
>> ---
>> fs/xfs/libxfs/xfs_attr.c | 45 +++++++++++++++++++++++++++++++--------------
>> 1 file changed, 31 insertions(+), 14 deletions(-)
>>
>> diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c
>> index dd935ff..b9728d1 100644
>> --- a/fs/xfs/libxfs/xfs_attr.c
>> +++ b/fs/xfs/libxfs/xfs_attr.c
>> @@ -1416,6 +1416,36 @@ xfs_attr_node_shrink(
>> }
>>
>> /*
>> + * Mark an attribute entry INCOMPLETE and save pointers to the relevant buffers
>> + * for later deletion of the entry.
>> + */
>> +STATIC int
>> +xfs_attr_leaf_mark_incomplete(
>> + struct xfs_da_args *args,
>> + struct xfs_da_state *state)
>> +{
>> + int error;
>> +
>> + /*
>> + * Fill in disk block numbers in the state structure
>> + * so that we can get the buffers back after we commit
>> + * several transactions in the following calls.
>> + */
>> + error = xfs_attr_fillstate(state);
>> + if (error)
>> + return error;
>> +
>> + /*
>> + * Mark the attribute as INCOMPLETE
>> + */
>> + error = xfs_attr3_leaf_setflag(args);
>> + if (error)
>> + return error;
>> +
>> + return 0;
>> +}
>> +
>> +/*
>> * Remove a name from a B-tree attribute list.
>> *
>> * This will involve walking down the Btree, and may involve joining
>> @@ -1473,20 +1503,7 @@ xfs_attr_node_removename(
>> args->dac.da_state = state;
>>
>> if (args->rmtblkno > 0) {
>> - /*
>> - * Fill in disk block numbers in the state structure
>> - * so that we can get the buffers back after we commit
>> - * several transactions in the following calls.
>> - */
>> - error = xfs_attr_fillstate(state);
>> - if (error)
>> - goto out;
>> -
>> - /*
>> - * Mark the attribute as INCOMPLETE, then bunmapi() the
>> - * remote value.
>> - */
>> - error = xfs_attr3_leaf_setflag(args);
>> + error = xfs_attr_leaf_mark_incomplete(args, state);
>> if (error)
>> goto out;
>>
>> --
>> 2.7.4
>>