* [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