aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Allison Henderson <allison.henderson@oracle.com> 2021-03-18 17:21:18 -0700
committerGravatar Allison Henderson <allison.henderson@oracle.com> 2021-06-01 10:48:19 -0700
commit4126c06e25b38842a254b2de6ffc3019a7b2f0ca (patch)
tree57a2d2ecc22650a8e4cf856ea204d9bb5f79bd3f
parentxfs: bunmapi has unnecessary AG lock ordering issues (diff)
downloadlinux-4126c06e25b38842a254b2de6ffc3019a7b2f0ca.tar.gz
linux-4126c06e25b38842a254b2de6ffc3019a7b2f0ca.tar.bz2
linux-4126c06e25b38842a254b2de6ffc3019a7b2f0ca.zip
xfs: Reverse apply 72b97ea40d
Originally we added this patch to help modularize the attr code in preparation for delayed attributes and the state machine it requires. However, later reviews found that this slightly alters the transaction handling as the helper function is ambiguous as to whether the transaction is diry or clean. This may cause a dirty transaction to be included in the next roll, where previously it had not. To preserve the existing code flow, we reverse apply this commit. 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>
-rw-r--r--fs/xfs/libxfs/xfs_attr.c28
1 files changed, 9 insertions, 19 deletions
diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c
index 96146f425e50..190b46dc0d26 100644
--- a/fs/xfs/libxfs/xfs_attr.c
+++ b/fs/xfs/libxfs/xfs_attr.c
@@ -1214,24 +1214,6 @@ int xfs_attr_node_removename_setup(
return 0;
}
-STATIC int
-xfs_attr_node_remove_rmt(
- struct xfs_da_args *args,
- struct xfs_da_state *state)
-{
- int error = 0;
-
- error = xfs_attr_rmtval_remove(args);
- if (error)
- return error;
-
- /*
- * Refill the state structure with buffers, the prior calls released our
- * buffers.
- */
- return xfs_attr_refillstate(state);
-}
-
/*
* Remove a name from a B-tree attribute list.
*
@@ -1260,7 +1242,15 @@ xfs_attr_node_removename(
* overflow the maximum size of a transaction and/or hit a deadlock.
*/
if (args->rmtblkno > 0) {
- error = xfs_attr_node_remove_rmt(args, state);
+ error = xfs_attr_rmtval_remove(args);
+ if (error)
+ goto out;
+
+ /*
+ * Refill the state structure with buffers, the prior calls
+ * released our buffers.
+ */
+ error = xfs_attr_refillstate(state);
if (error)
goto out;
}