xfs: Separate xfs_attr_node_addname and xfs_attr_node_addname_clear_incomplete
authorAllison Henderson <allison.henderson@oracle.com>
Thu, 18 Feb 2021 08:24:24 +0000 (01:24 -0700)
committerAllison Henderson <allison.henderson@oracle.com>
Tue, 1 Jun 2021 17:49:43 +0000 (10:49 -0700)
This patch separate xfs_attr_node_addname into two functions.  This will
help to make it easier to hoist parts of xfs_attr_node_addname that need
state management

Signed-off-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
fs/xfs/libxfs/xfs_attr.c

index 0ec1547..ad44d77 100644 (file)
@@ -54,6 +54,7 @@ STATIC int xfs_attr_leaf_hasname(struct xfs_da_args *args, struct xfs_buf **bp);
 STATIC int xfs_attr_node_get(xfs_da_args_t *args);
 STATIC int xfs_attr_node_addname(xfs_da_args_t *args);
 STATIC int xfs_attr_node_removename(xfs_da_args_t *args);
+STATIC int xfs_attr_node_addname_clear_incomplete(struct xfs_da_args *args);
 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);
@@ -1073,6 +1074,28 @@ restart:
                        return error;
        }
 
+       error = xfs_attr_node_addname_clear_incomplete(args);
+       if (error)
+               goto out;
+       retval = 0;
+out:
+       if (state)
+               xfs_da_state_free(state);
+       if (error)
+               return error;
+       return retval;
+}
+
+
+STATIC int
+xfs_attr_node_addname_clear_incomplete(
+       struct xfs_da_args              *args)
+{
+       struct xfs_da_state             *state = NULL;
+       struct xfs_da_state_blk         *blk;
+       int                             retval = 0;
+       int                             error = 0;
+
        /*
         * Re-find the "old" attribute entry after any split ops. The INCOMPLETE
         * flag means that we will find the "old" attr, not the "new" one.