]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: Separate xfs_attr_node_addname and xfs_attr_node_addname_clear_incomplete
authorAllison Henderson <allison.henderson@oracle.com>
Fri, 15 Oct 2021 20:28:24 +0000 (16:28 -0400)
committerEric Sandeen <sandeen@sandeen.net>
Fri, 15 Oct 2021 20:28:24 +0000 (16:28 -0400)
Source kernel commit: f0f7c502c728d0c6947219739631bad101f8737b

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>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
libxfs/xfs_attr.c

index b181777da63640fcd434381cf6dce02d470c475b..158149afdbcce91cd97daf70f8dc13852c73212b 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.