summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllison Collins <allison.henderson@oracle.com>2020-07-21 07:47:26 +0300
committerDarrick J. Wong <darrick.wong@oracle.com>2020-07-29 06:28:11 +0300
commitd4034c4662af5d40de0655c641ddc6eccde0e8fc (patch)
tree8b34dd3ce23007727bdc59504ad6482444def78d
parent8b8e0cc0208befc5971d552a8798c8f5537afa45 (diff)
downloadlinux-d4034c4662af5d40de0655c641ddc6eccde0e8fc.tar.xz
xfs: Pull up xfs_attr_rmtval_invalidate
This patch pulls xfs_attr_rmtval_invalidate out of xfs_attr_rmtval_remove and into the calling functions. Eventually __xfs_attr_rmtval_remove will replace xfs_attr_rmtval_remove when we introduce delayed attributes. These functions are exepcted to return -EAGAIN when they need a new transaction. Because the invalidate does not need a new transaction, we need to separate it from the rest of the function that does. This will enable __xfs_attr_rmtval_remove to smoothly replace xfs_attr_rmtval_remove later. Signed-off-by: Allison Collins <allison.henderson@oracle.com> Reviewed-by: Brian Foster <bfoster@redhat.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Acked-by: Dave Chinner <dchinner@redhat.com>
-rw-r--r--fs/xfs/libxfs/xfs_attr.c12
-rw-r--r--fs/xfs/libxfs/xfs_attr_remote.c3
2 files changed, 12 insertions, 3 deletions
diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c
index 2d84ab40b70b..2379d5b1a1b9 100644
--- a/fs/xfs/libxfs/xfs_attr.c
+++ b/fs/xfs/libxfs/xfs_attr.c
@@ -670,6 +670,10 @@ xfs_attr_leaf_addname(
args->rmtblkcnt = args->rmtblkcnt2;
args->rmtvaluelen = args->rmtvaluelen2;
if (args->rmtblkno) {
+ error = xfs_attr_rmtval_invalidate(args);
+ if (error)
+ return error;
+
error = xfs_attr_rmtval_remove(args);
if (error)
return error;
@@ -1023,6 +1027,10 @@ restart:
args->rmtblkcnt = args->rmtblkcnt2;
args->rmtvaluelen = args->rmtvaluelen2;
if (args->rmtblkno) {
+ error = xfs_attr_rmtval_invalidate(args);
+ if (error)
+ return error;
+
error = xfs_attr_rmtval_remove(args);
if (error)
return error;
@@ -1147,6 +1155,10 @@ xfs_attr_node_removename(
if (error)
goto out;
+ error = xfs_attr_rmtval_invalidate(args);
+ if (error)
+ return error;
+
error = xfs_attr_rmtval_remove(args);
if (error)
goto out;
diff --git a/fs/xfs/libxfs/xfs_attr_remote.c b/fs/xfs/libxfs/xfs_attr_remote.c
index 3e7f6e075860..3f80cede7406 100644
--- a/fs/xfs/libxfs/xfs_attr_remote.c
+++ b/fs/xfs/libxfs/xfs_attr_remote.c
@@ -683,9 +683,6 @@ xfs_attr_rmtval_remove(
trace_xfs_attr_rmtval_remove(args);
- error = xfs_attr_rmtval_invalidate(args);
- if (error)
- return error;
/*
* Keep de-allocating extents until the remote-value region is gone.
*/