On Thu, Nov 11, 2021 at 12:17:15AM +0000, Catherine Hoang wrote: > Add an error tag on xfs_da3_split to test log attribute recovery > and replay. > > Signed-off-by: Catherine Hoang <catherine.hoang@xxxxxxxxxx> > --- > fs/xfs/libxfs/xfs_da_btree.c | 6 ++++++ > fs/xfs/libxfs/xfs_errortag.h | 4 +++- > fs/xfs/xfs_error.c | 3 +++ > 3 files changed, 12 insertions(+), 1 deletion(-) > > diff --git a/fs/xfs/libxfs/xfs_da_btree.c b/fs/xfs/libxfs/xfs_da_btree.c > index dd7a2dbce1d1..000101783648 100644 > --- a/fs/xfs/libxfs/xfs_da_btree.c > +++ b/fs/xfs/libxfs/xfs_da_btree.c > @@ -22,6 +22,7 @@ > #include "xfs_trace.h" > #include "xfs_buf_item.h" > #include "xfs_log.h" > +#include "xfs_errortag.h" > > /* > * xfs_da_btree.c > @@ -482,6 +483,11 @@ xfs_da3_split( > > trace_xfs_da_split(state->args); > > + if (XFS_TEST_ERROR(false, state->mp, XFS_ERRTAG_LEAF_SPLIT)) { > + error = -EIO; > + return error; > + } > + > /* > * Walk back up the tree splitting/inserting/adjusting as necessary. > * If we need to insert and there isn't room, split the node, then > diff --git a/fs/xfs/libxfs/xfs_errortag.h b/fs/xfs/libxfs/xfs_errortag.h > index c15d2340220c..31aeeb94dd5b 100644 > --- a/fs/xfs/libxfs/xfs_errortag.h > +++ b/fs/xfs/libxfs/xfs_errortag.h > @@ -60,7 +60,8 @@ > #define XFS_ERRTAG_BMAP_ALLOC_MINLEN_EXTENT 37 > #define XFS_ERRTAG_AG_RESV_FAIL 38 > #define XFS_ERRTAG_LARP 39 > -#define XFS_ERRTAG_MAX 40 > +#define XFS_ERRTAG_LEAF_SPLIT 40 What leaf is being split? This looks to be a DA btree split that it the error injection is being applied to, not a allocbt, rmapbt, etc split. And it's not really a "leaf split" because xfs_da3_split() walks the entire path back up the tree splitting nodes as well. So, really, it's a da tree split, not a generic "leaf split" error injection point. And, I suspect this won't always work as intended, because it can trigger on directory operations as well as attribute ops. Hence it could be difficult to direct this for testing attr fork operations during stress at the attr fork.... Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx