From: Allison Henderson Date: Wed, 22 Jun 2022 19:28:52 +0000 (-0500) Subject: xfs: Add log attribute error tag X-Git-Tag: v5.19.0-rc0~50 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=a28320315509a3c79dc3e0c7f1ddfe43d21c4c42;p=thirdparty%2Fxfsprogs-dev.git xfs: Add log attribute error tag Source kernel commit: abd61ca3c333506ffa4ee73b78659ab57e7efcf7 This patch adds an error tag that we can use to test log attribute recovery and replay Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong Reviewed-by: Chandan Babu R Signed-off-by: Dave Chinner Signed-off-by: Eric Sandeen --- diff --git a/io/inject.c b/io/inject.c index b8b0977e1..43b51db5b 100644 --- a/io/inject.c +++ b/io/inject.c @@ -58,6 +58,7 @@ error_tag(char *name) { XFS_ERRTAG_REDUCE_MAX_IEXTENTS, "reduce_max_iextents" }, { XFS_ERRTAG_BMAP_ALLOC_MINLEN_EXTENT, "bmap_alloc_minlen_extent" }, { XFS_ERRTAG_AG_RESV_FAIL, "ag_resv_fail" }, + { XFS_ERRTAG_LARP, "larp" }, { XFS_ERRTAG_MAX, NULL } }; int count; diff --git a/libxfs/defer_item.c b/libxfs/defer_item.c index e920dc9fc..65afdb21a 100644 --- a/libxfs/defer_item.c +++ b/libxfs/defer_item.c @@ -510,6 +510,11 @@ xfs_attr_finish_item( */ args->trans = tp; + if (XFS_TEST_ERROR(false, args->dp->i_mount, XFS_ERRTAG_LARP)) { + error = -EIO; + goto out; + } + switch (op) { case XFS_ATTR_OP_FLAGS_SET: error = xfs_attr_set_iter(dac); @@ -522,7 +527,7 @@ xfs_attr_finish_item( error = -EFSCORRUPTED; break; } - +out: if (error != -EAGAIN) kmem_free(attr); diff --git a/libxfs/xfs_errortag.h b/libxfs/xfs_errortag.h index a23a52e64..c15d23402 100644 --- a/libxfs/xfs_errortag.h +++ b/libxfs/xfs_errortag.h @@ -59,7 +59,8 @@ #define XFS_ERRTAG_REDUCE_MAX_IEXTENTS 36 #define XFS_ERRTAG_BMAP_ALLOC_MINLEN_EXTENT 37 #define XFS_ERRTAG_AG_RESV_FAIL 38 -#define XFS_ERRTAG_MAX 39 +#define XFS_ERRTAG_LARP 39 +#define XFS_ERRTAG_MAX 40 /* * Random factors for above tags, 1 means always, 2 means 1/2 time, etc. @@ -103,5 +104,6 @@ #define XFS_RANDOM_REDUCE_MAX_IEXTENTS 1 #define XFS_RANDOM_BMAP_ALLOC_MINLEN_EXTENT 1 #define XFS_RANDOM_AG_RESV_FAIL 1 +#define XFS_RANDOM_LARP 1 #endif /* __XFS_ERRORTAG_H_ */