> On Jan 18, 2022, at 8:48 PM, Darrick J. Wong <djwong@xxxxxxxxxx> wrote: > > On Mon, Jan 10, 2022 at 09:24:54PM +0000, Catherine Hoang wrote: >> Add an error tag on xfs_attr3_leaf_to_node to test log attribute >> recovery and replay. >> >> Signed-off-by: Catherine Hoang <catherine.hoang@xxxxxxxxxx> >> Reviewed-by: Allison Henderson <allison.henderson@xxxxxxxxxx> > > This one actually /is/ an error injection knob for specific xattr > activities, so the naming is appropriate. > > Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> > > --D Thanks for the review! > >> --- >> fs/xfs/libxfs/xfs_attr_leaf.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_attr_leaf.c b/fs/xfs/libxfs/xfs_attr_leaf.c >> index 74b76b09509f..0fe028d95c77 100644 >> --- a/fs/xfs/libxfs/xfs_attr_leaf.c >> +++ b/fs/xfs/libxfs/xfs_attr_leaf.c >> @@ -28,6 +28,7 @@ >> #include "xfs_dir2.h" >> #include "xfs_log.h" >> #include "xfs_ag.h" >> +#include "xfs_errortag.h" >> >> >> /* >> @@ -1189,6 +1190,11 @@ xfs_attr3_leaf_to_node( >> >> trace_xfs_attr_leaf_to_node(args); >> >> + if (XFS_TEST_ERROR(false, mp, XFS_ERRTAG_LARP_LEAF_TO_NODE)) { >> + error = -EIO; >> + goto out; >> + } >> + >> error = xfs_da_grow_inode(args, &blkno); >> if (error) >> goto out; >> diff --git a/fs/xfs/libxfs/xfs_errortag.h b/fs/xfs/libxfs/xfs_errortag.h >> index 970f3a3f3750..6d90f06442e8 100644 >> --- a/fs/xfs/libxfs/xfs_errortag.h >> +++ b/fs/xfs/libxfs/xfs_errortag.h >> @@ -61,7 +61,8 @@ >> #define XFS_ERRTAG_AG_RESV_FAIL 38 >> #define XFS_ERRTAG_LARP 39 >> #define XFS_ERRTAG_LARP_LEAF_SPLIT 40 >> -#define XFS_ERRTAG_MAX 41 >> +#define XFS_ERRTAG_LARP_LEAF_TO_NODE 41 >> +#define XFS_ERRTAG_MAX 42 >> >> /* >> * Random factors for above tags, 1 means always, 2 means 1/2 time, etc. >> @@ -107,5 +108,6 @@ >> #define XFS_RANDOM_AG_RESV_FAIL 1 >> #define XFS_RANDOM_LARP 1 >> #define XFS_RANDOM_LARP_LEAF_SPLIT 1 >> +#define XFS_RANDOM_LARP_LEAF_TO_NODE 1 >> >> #endif /* __XFS_ERRORTAG_H_ */ >> diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c >> index 9cb6743a5ae3..ae2003a95324 100644 >> --- a/fs/xfs/xfs_error.c >> +++ b/fs/xfs/xfs_error.c >> @@ -59,6 +59,7 @@ static unsigned int xfs_errortag_random_default[] = { >> XFS_RANDOM_AG_RESV_FAIL, >> XFS_RANDOM_LARP, >> XFS_RANDOM_LARP_LEAF_SPLIT, >> + XFS_RANDOM_LARP_LEAF_TO_NODE, >> }; >> >> struct xfs_errortag_attr { >> @@ -174,6 +175,7 @@ XFS_ERRORTAG_ATTR_RW(bmap_alloc_minlen_extent, XFS_ERRTAG_BMAP_ALLOC_MINLEN_EXTE >> XFS_ERRORTAG_ATTR_RW(ag_resv_fail, XFS_ERRTAG_AG_RESV_FAIL); >> XFS_ERRORTAG_ATTR_RW(larp, XFS_ERRTAG_LARP); >> XFS_ERRORTAG_ATTR_RW(larp_leaf_split, XFS_ERRTAG_LARP_LEAF_SPLIT); >> +XFS_ERRORTAG_ATTR_RW(larp_leaf_to_node, XFS_ERRTAG_LARP_LEAF_TO_NODE); >> >> static struct attribute *xfs_errortag_attrs[] = { >> XFS_ERRORTAG_ATTR_LIST(noerror), >> @@ -217,6 +219,7 @@ static struct attribute *xfs_errortag_attrs[] = { >> XFS_ERRORTAG_ATTR_LIST(ag_resv_fail), >> XFS_ERRORTAG_ATTR_LIST(larp), >> XFS_ERRORTAG_ATTR_LIST(larp_leaf_split), >> + XFS_ERRORTAG_ATTR_LIST(larp_leaf_to_node), >> NULL, >> }; >> >> -- >> 2.25.1 >>