* [RFC PATCH v3 0/2] xfs: add error tags for log attribute replay test @ 2022-02-01 17:14 Catherine Hoang 2022-02-01 17:14 ` [RFC PATCH v3 1/2] xfs: add leaf split error tag Catherine Hoang 2022-02-01 17:14 ` [RFC PATCH v3 2/2] xfs: add leaf to node " Catherine Hoang 0 siblings, 2 replies; 4+ messages in thread From: Catherine Hoang @ 2022-02-01 17:14 UTC (permalink / raw) To: linux-xfs Hi all, These are the corresponding kernel changes for the new log attribute replay test. These are built on top of Allison’s logged attribute patch sets, which can be viewed here: https://github.com/allisonhenderson/xfs_work/tree/delayed_attrs_v26_extended This set adds the new error tags da_leaf_split and larp_leaf_to_node, which are used to inject errors in the tests. v2->v3: Rename larp_leaf_split to da_leaf_split Suggestions and feedback are appreciated! Catherine Catherine Hoang (2): xfs: add leaf split error tag xfs: add leaf to node error tag fs/xfs/libxfs/xfs_attr_leaf.c | 6 ++++++ fs/xfs/libxfs/xfs_da_btree.c | 4 ++++ fs/xfs/libxfs/xfs_errortag.h | 6 +++++- fs/xfs/xfs_error.c | 6 ++++++ 4 files changed, 21 insertions(+), 1 deletion(-) -- 2.25.1 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [RFC PATCH v3 1/2] xfs: add leaf split error tag 2022-02-01 17:14 [RFC PATCH v3 0/2] xfs: add error tags for log attribute replay test Catherine Hoang @ 2022-02-01 17:14 ` Catherine Hoang 2022-02-01 17:14 ` [RFC PATCH v3 2/2] xfs: add leaf to node " Catherine Hoang 1 sibling, 0 replies; 4+ messages in thread From: Catherine Hoang @ 2022-02-01 17:14 UTC (permalink / raw) To: linux-xfs Add an error tag on xfs_da3_split to test log attribute recovery and replay. Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com> Reviewed-by: Allison Henderson <allison.henderson@oracle.com> --- fs/xfs/libxfs/xfs_da_btree.c | 4 ++++ fs/xfs/libxfs/xfs_errortag.h | 4 +++- fs/xfs/xfs_error.c | 3 +++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/fs/xfs/libxfs/xfs_da_btree.c b/fs/xfs/libxfs/xfs_da_btree.c index 9dc1ecb9713d..aa74f3fdb571 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,9 @@ xfs_da3_split( trace_xfs_da_split(state->args); + if (XFS_TEST_ERROR(false, state->mp, XFS_ERRTAG_DA_LEAF_SPLIT)) + return -EIO; + /* * 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..6d06a502bbdf 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_DA_LEAF_SPLIT 40 +#define XFS_ERRTAG_MAX 41 /* * Random factors for above tags, 1 means always, 2 means 1/2 time, etc. @@ -105,5 +106,6 @@ #define XFS_RANDOM_BMAP_ALLOC_MINLEN_EXTENT 1 #define XFS_RANDOM_AG_RESV_FAIL 1 #define XFS_RANDOM_LARP 1 +#define XFS_RANDOM_DA_LEAF_SPLIT 1 #endif /* __XFS_ERRORTAG_H_ */ diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c index 666f4837b1e1..2aa5d4d2b30a 100644 --- a/fs/xfs/xfs_error.c +++ b/fs/xfs/xfs_error.c @@ -58,6 +58,7 @@ static unsigned int xfs_errortag_random_default[] = { XFS_RANDOM_BMAP_ALLOC_MINLEN_EXTENT, XFS_RANDOM_AG_RESV_FAIL, XFS_RANDOM_LARP, + XFS_RANDOM_DA_LEAF_SPLIT, }; struct xfs_errortag_attr { @@ -172,6 +173,7 @@ XFS_ERRORTAG_ATTR_RW(reduce_max_iextents, XFS_ERRTAG_REDUCE_MAX_IEXTENTS); XFS_ERRORTAG_ATTR_RW(bmap_alloc_minlen_extent, XFS_ERRTAG_BMAP_ALLOC_MINLEN_EXTENT); XFS_ERRORTAG_ATTR_RW(ag_resv_fail, XFS_ERRTAG_AG_RESV_FAIL); XFS_ERRORTAG_ATTR_RW(larp, XFS_ERRTAG_LARP); +XFS_ERRORTAG_ATTR_RW(da_leaf_split, XFS_ERRTAG_DA_LEAF_SPLIT); static struct attribute *xfs_errortag_attrs[] = { XFS_ERRORTAG_ATTR_LIST(noerror), @@ -214,6 +216,7 @@ static struct attribute *xfs_errortag_attrs[] = { XFS_ERRORTAG_ATTR_LIST(bmap_alloc_minlen_extent), XFS_ERRORTAG_ATTR_LIST(ag_resv_fail), XFS_ERRORTAG_ATTR_LIST(larp), + XFS_ERRORTAG_ATTR_LIST(da_leaf_split), NULL, }; ATTRIBUTE_GROUPS(xfs_errortag); -- 2.25.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [RFC PATCH v3 2/2] xfs: add leaf to node error tag 2022-02-01 17:14 [RFC PATCH v3 0/2] xfs: add error tags for log attribute replay test Catherine Hoang 2022-02-01 17:14 ` [RFC PATCH v3 1/2] xfs: add leaf split error tag Catherine Hoang @ 2022-02-01 17:14 ` Catherine Hoang 2022-02-01 20:05 ` Darrick J. Wong 1 sibling, 1 reply; 4+ messages in thread From: Catherine Hoang @ 2022-02-01 17:14 UTC (permalink / raw) To: linux-xfs Add an error tag on xfs_attr3_leaf_to_node to test log attribute recovery and replay. Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com> Reviewed-by: Allison Henderson <allison.henderson@oracle.com> Reviewed-by: Darrick J. Wong <djwong@kernel.org> --- 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 6d06a502bbdf..74b753194615 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_DA_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_DA_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 2aa5d4d2b30a..94ae630dc819 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_DA_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(da_leaf_split, XFS_ERRTAG_DA_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(da_leaf_split), + XFS_ERRORTAG_ATTR_LIST(larp_leaf_to_node), NULL, }; ATTRIBUTE_GROUPS(xfs_errortag); -- 2.25.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [RFC PATCH v3 2/2] xfs: add leaf to node error tag 2022-02-01 17:14 ` [RFC PATCH v3 2/2] xfs: add leaf to node " Catherine Hoang @ 2022-02-01 20:05 ` Darrick J. Wong 0 siblings, 0 replies; 4+ messages in thread From: Darrick J. Wong @ 2022-02-01 20:05 UTC (permalink / raw) To: Catherine Hoang; +Cc: linux-xfs On Tue, Feb 01, 2022 at 05:14:30PM +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@oracle.com> > Reviewed-by: Allison Henderson <allison.henderson@oracle.com> > Reviewed-by: Darrick J. Wong <djwong@kernel.org> > --- > 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)) { Sorry for the long trickle of random post-review comments, but ... This error injection knob isn't specifically tied to LARP mode, right? i.e. one can trigger it on /any/ expansion of an xattr data structure from leaf to node format, right? Even if LARP isn't enabled? Can this be renamed to XFS_ERRTAG_ATTR_LEAF_TO_NODE, please? You can keep the RVB tag. :) --D > + 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 6d06a502bbdf..74b753194615 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_DA_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_DA_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 2aa5d4d2b30a..94ae630dc819 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_DA_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(da_leaf_split, XFS_ERRTAG_DA_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(da_leaf_split), > + XFS_ERRORTAG_ATTR_LIST(larp_leaf_to_node), > NULL, > }; > ATTRIBUTE_GROUPS(xfs_errortag); > -- > 2.25.1 > ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-02-01 20:05 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-02-01 17:14 [RFC PATCH v3 0/2] xfs: add error tags for log attribute replay test Catherine Hoang 2022-02-01 17:14 ` [RFC PATCH v3 1/2] xfs: add leaf split error tag Catherine Hoang 2022-02-01 17:14 ` [RFC PATCH v3 2/2] xfs: add leaf to node " Catherine Hoang 2022-02-01 20:05 ` Darrick J. Wong
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox