Message ID | 20211117041613.3050252-12-allison.henderson@oracle.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | Log Attribute Replay | expand |
On 11/18/21 4:23 PM, Catherine Hoang wrote: >> On Nov 16, 2021, at 8:16 PM, Allison Henderson <allison.henderson@oracle.com >> > <mailto:allison.henderson@oracle.com>> wrote: >> > >> > This patch adds an error tag that we can use to test log attribute >> > recovery and replay >> > >> > Signed-off-by: Allison Henderson <allison.henderson@oracle.com >> > <mailto:allison.henderson@oracle.com>> >> > Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com >> > <mailto:darrick.wong@oracle.com>> >> > Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com >> > <mailto:chandanrlinux@gmail.com>> >> > --- >> > io/inject.c | 1 + >> > libxfs/defer_item.c | 6 ++++++ >> > libxfs/xfs_errortag.h | 4 +++- >> > 3 files changed, 10 insertions(+), 1 deletion(-) >> > >> > diff --git a/io/inject.c b/io/inject.c >> > index b8b0977e139e..43b51db5b9cc 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 } >> > }; >> > intcount; >> > diff --git a/libxfs/defer_item.c b/libxfs/defer_item.c >> > index 594f5e92e668..5392a1bcb961 100644 >> > --- a/libxfs/defer_item.c >> > +++ b/libxfs/defer_item.c >> > @@ -131,6 +131,11 @@ xfs_trans_attr_finish_update( >> > XFS_ATTR_OP_FLAGS_TYPE_MASK; >> > interror; >> > >> > +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); >> > @@ -144,6 +149,7 @@ xfs_trans_attr_finish_update( >> > break; >> > } >> > >> > +out: >> > /* >> > * Mark the transaction dirty, even on error. This ensures the >> > * transaction is aborted, which: >> > diff --git a/libxfs/xfs_errortag.h b/libxfs/xfs_errortag.h >> > index a23a52e643ad..c15d2340220c 100644 >> > --- a/libxfs/xfs_errortag.h >> > +++ b/libxfs/xfs_errortag.h >> > @@ -59,7 +59,8 @@ >> > #define XFS_ERRTAG_REDUCE_MAX_IEXTENTS36 >> > #define XFS_ERRTAG_BMAP_ALLOC_MINLEN_EXTENT37 >> > #define XFS_ERRTAG_AG_RESV_FAIL38 >> > -#define XFS_ERRTAG_MAX39 >> > +#define XFS_ERRTAG_LARP39 >> > +#define XFS_ERRTAG_MAX40 >> > >> > /* >> > * Random factors for above tags, 1 means always, 2 means 1/2 time, etc. >> > @@ -103,5 +104,6 @@ >> > #define XFS_RANDOM_REDUCE_MAX_IEXTENTS1 >> > #define XFS_RANDOM_BMAP_ALLOC_MINLEN_EXTENT1 >> > #define XFS_RANDOM_AG_RESV_FAIL1 >> > +#define XFS_RANDOM_LARP1 >> > >> > #endif /* __XFS_ERRORTAG_H_ */ >> > -- >> > 2.25.1 >> > >> >> Looks good >> >> Reviewed-by: Catherine Hoang <catherine.hoang@oracle.com >> <mailto:catherine.hoang@oracle.com>> Great, thanks for the reviews Catherine! I will add your rvbs :-) Allison >>
diff --git a/io/inject.c b/io/inject.c index b8b0977e139e..43b51db5b9cc 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 594f5e92e668..5392a1bcb961 100644 --- a/libxfs/defer_item.c +++ b/libxfs/defer_item.c @@ -131,6 +131,11 @@ xfs_trans_attr_finish_update( XFS_ATTR_OP_FLAGS_TYPE_MASK; int error; + 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); @@ -144,6 +149,7 @@ xfs_trans_attr_finish_update( break; } +out: /* * Mark the transaction dirty, even on error. This ensures the * transaction is aborted, which: diff --git a/libxfs/xfs_errortag.h b/libxfs/xfs_errortag.h index a23a52e643ad..c15d2340220c 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_ */