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

Chandan Rajendra
2020-03-04T04:34:39Z

On Sunday, February 23, 2020 7:36 AM Allison Collins 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.
>

The changes look good to me.

Reviewed-by: Chandan Rajendra <chandanrlinux@gmail.com>

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

--
chandan