xfs: add leaf split error tag
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> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Chandan Babu R <chandan.babu@oracle.com> Signed-off-by: Allison Henderson <allison.henderson@oracle.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
parent
c3546cf5d1
commit
c3b948be34
@ -22,6 +22,7 @@
|
|||||||
#include "xfs_trace.h"
|
#include "xfs_trace.h"
|
||||||
#include "xfs_buf_item.h"
|
#include "xfs_buf_item.h"
|
||||||
#include "xfs_log.h"
|
#include "xfs_log.h"
|
||||||
|
#include "xfs_errortag.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* xfs_da_btree.c
|
* xfs_da_btree.c
|
||||||
@ -482,6 +483,9 @@ xfs_da3_split(
|
|||||||
|
|
||||||
trace_xfs_da_split(state->args);
|
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.
|
* Walk back up the tree splitting/inserting/adjusting as necessary.
|
||||||
* If we need to insert and there isn't room, split the node, then
|
* If we need to insert and there isn't room, split the node, then
|
||||||
|
@ -60,7 +60,8 @@
|
|||||||
#define XFS_ERRTAG_BMAP_ALLOC_MINLEN_EXTENT 37
|
#define XFS_ERRTAG_BMAP_ALLOC_MINLEN_EXTENT 37
|
||||||
#define XFS_ERRTAG_AG_RESV_FAIL 38
|
#define XFS_ERRTAG_AG_RESV_FAIL 38
|
||||||
#define XFS_ERRTAG_LARP 39
|
#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.
|
* 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_BMAP_ALLOC_MINLEN_EXTENT 1
|
||||||
#define XFS_RANDOM_AG_RESV_FAIL 1
|
#define XFS_RANDOM_AG_RESV_FAIL 1
|
||||||
#define XFS_RANDOM_LARP 1
|
#define XFS_RANDOM_LARP 1
|
||||||
|
#define XFS_RANDOM_DA_LEAF_SPLIT 1
|
||||||
|
|
||||||
#endif /* __XFS_ERRORTAG_H_ */
|
#endif /* __XFS_ERRORTAG_H_ */
|
||||||
|
@ -58,6 +58,7 @@ static unsigned int xfs_errortag_random_default[] = {
|
|||||||
XFS_RANDOM_BMAP_ALLOC_MINLEN_EXTENT,
|
XFS_RANDOM_BMAP_ALLOC_MINLEN_EXTENT,
|
||||||
XFS_RANDOM_AG_RESV_FAIL,
|
XFS_RANDOM_AG_RESV_FAIL,
|
||||||
XFS_RANDOM_LARP,
|
XFS_RANDOM_LARP,
|
||||||
|
XFS_RANDOM_DA_LEAF_SPLIT,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct xfs_errortag_attr {
|
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(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(ag_resv_fail, XFS_ERRTAG_AG_RESV_FAIL);
|
||||||
XFS_ERRORTAG_ATTR_RW(larp, XFS_ERRTAG_LARP);
|
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[] = {
|
static struct attribute *xfs_errortag_attrs[] = {
|
||||||
XFS_ERRORTAG_ATTR_LIST(noerror),
|
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(bmap_alloc_minlen_extent),
|
||||||
XFS_ERRORTAG_ATTR_LIST(ag_resv_fail),
|
XFS_ERRORTAG_ATTR_LIST(ag_resv_fail),
|
||||||
XFS_ERRORTAG_ATTR_LIST(larp),
|
XFS_ERRORTAG_ATTR_LIST(larp),
|
||||||
|
XFS_ERRORTAG_ATTR_LIST(da_leaf_split),
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
ATTRIBUTE_GROUPS(xfs_errortag);
|
ATTRIBUTE_GROUPS(xfs_errortag);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user