From: Gao Xiang Date: Wed, 30 Jun 2021 22:28:38 +0000 (-0400) Subject: xfs: add error injection for per-AG resv failure X-Git-Tag: v5.13.0-rc0~41 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c4add24c9cefb5237ef06aca025c3e66dc545856;p=thirdparty%2Fxfsprogs-dev.git xfs: add error injection for per-AG resv failure Source kernel commit: 2b92faed551173f065ee2a8cf087dc76cf40303b per-AG resv failure after fixing up freespace is hard to test in an effective way, so directly add an error injection path to observe such error handling path works as expected. Signed-off-by: Gao Xiang Reviewed-by: Darrick J. Wong Signed-off-by: Darrick J. Wong Signed-off-by: Eric Sandeen --- diff --git a/io/inject.c b/io/inject.c index 9a401a1e0..b8b0977e1 100644 --- a/io/inject.c +++ b/io/inject.c @@ -57,6 +57,7 @@ error_tag(char *name) { XFS_ERRTAG_BUF_IOERROR, "buf_ioerror" }, { 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_MAX, NULL } }; int count; diff --git a/libxfs/xfs_ag_resv.c b/libxfs/xfs_ag_resv.c index 530455a51..9dc5bf241 100644 --- a/libxfs/xfs_ag_resv.c +++ b/libxfs/xfs_ag_resv.c @@ -210,7 +210,11 @@ __xfs_ag_resv_init( ASSERT(0); return -EINVAL; } - error = xfs_mod_fdblocks(mp, -(int64_t)hidden_space, true); + + if (XFS_TEST_ERROR(false, mp, XFS_ERRTAG_AG_RESV_FAIL)) + error = -ENOSPC; + else + error = xfs_mod_fdblocks(mp, -(int64_t)hidden_space, true); if (error) { trace_xfs_ag_resv_init_error(pag->pag_mount, pag->pag_agno, error, _RET_IP_); diff --git a/libxfs/xfs_errortag.h b/libxfs/xfs_errortag.h index 6ca9084b6..a23a52e64 100644 --- a/libxfs/xfs_errortag.h +++ b/libxfs/xfs_errortag.h @@ -58,7 +58,8 @@ #define XFS_ERRTAG_BUF_IOERROR 35 #define XFS_ERRTAG_REDUCE_MAX_IEXTENTS 36 #define XFS_ERRTAG_BMAP_ALLOC_MINLEN_EXTENT 37 -#define XFS_ERRTAG_MAX 38 +#define XFS_ERRTAG_AG_RESV_FAIL 38 +#define XFS_ERRTAG_MAX 39 /* * Random factors for above tags, 1 means always, 2 means 1/2 time, etc. @@ -101,5 +102,6 @@ #define XFS_RANDOM_BUF_IOERROR XFS_RANDOM_DEFAULT #define XFS_RANDOM_REDUCE_MAX_IEXTENTS 1 #define XFS_RANDOM_BMAP_ALLOC_MINLEN_EXTENT 1 +#define XFS_RANDOM_AG_RESV_FAIL 1 #endif /* __XFS_ERRORTAG_H_ */