xfs: Add log attribute error tag
This patch adds an error tag that we can use to test log attribute recovery and replay Signed-off-by: Allison Henderson <allison.henderson@oracle.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
parent
73159fc27c
commit
abd61ca3c3
@ -59,7 +59,8 @@
|
||||
#define XFS_ERRTAG_REDUCE_MAX_IEXTENTS 36
|
||||
#define XFS_ERRTAG_BMAP_ALLOC_MINLEN_EXTENT 37
|
||||
#define XFS_ERRTAG_AG_RESV_FAIL 38
|
||||
#define XFS_ERRTAG_MAX 39
|
||||
#define XFS_ERRTAG_LARP 39
|
||||
#define XFS_ERRTAG_MAX 40
|
||||
|
||||
/*
|
||||
* Random factors for above tags, 1 means always, 2 means 1/2 time, etc.
|
||||
@ -103,5 +104,6 @@
|
||||
#define XFS_RANDOM_REDUCE_MAX_IEXTENTS 1
|
||||
#define XFS_RANDOM_BMAP_ALLOC_MINLEN_EXTENT 1
|
||||
#define XFS_RANDOM_AG_RESV_FAIL 1
|
||||
#define XFS_RANDOM_LARP 1
|
||||
|
||||
#endif /* __XFS_ERRORTAG_H_ */
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "xfs_trace.h"
|
||||
#include "xfs_inode.h"
|
||||
#include "xfs_trans_space.h"
|
||||
#include "xfs_errortag.h"
|
||||
#include "xfs_error.h"
|
||||
#include "xfs_log_priv.h"
|
||||
#include "xfs_log_recover.h"
|
||||
@ -310,6 +311,11 @@ xfs_xattri_finish_update(
|
||||
XFS_ATTR_OP_FLAGS_TYPE_MASK;
|
||||
int error;
|
||||
|
||||
if (XFS_TEST_ERROR(false, args->dp->i_mount, XFS_ERRTAG_LARP)) {
|
||||
error = -EIO;
|
||||
goto out;
|
||||
}
|
||||
|
||||
switch (op) {
|
||||
case XFS_ATTR_OP_FLAGS_SET:
|
||||
error = xfs_attr_set_iter(dac);
|
||||
@ -323,6 +329,7 @@ xfs_xattri_finish_update(
|
||||
break;
|
||||
}
|
||||
|
||||
out:
|
||||
/*
|
||||
* Mark the transaction dirty, even on error. This ensures the
|
||||
* transaction is aborted, which:
|
||||
|
@ -57,6 +57,7 @@ static unsigned int xfs_errortag_random_default[] = {
|
||||
XFS_RANDOM_REDUCE_MAX_IEXTENTS,
|
||||
XFS_RANDOM_BMAP_ALLOC_MINLEN_EXTENT,
|
||||
XFS_RANDOM_AG_RESV_FAIL,
|
||||
XFS_RANDOM_LARP,
|
||||
};
|
||||
|
||||
struct xfs_errortag_attr {
|
||||
@ -170,6 +171,7 @@ XFS_ERRORTAG_ATTR_RW(buf_ioerror, XFS_ERRTAG_BUF_IOERROR);
|
||||
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);
|
||||
|
||||
static struct attribute *xfs_errortag_attrs[] = {
|
||||
XFS_ERRORTAG_ATTR_LIST(noerror),
|
||||
@ -211,6 +213,7 @@ static struct attribute *xfs_errortag_attrs[] = {
|
||||
XFS_ERRORTAG_ATTR_LIST(reduce_max_iextents),
|
||||
XFS_ERRORTAG_ATTR_LIST(bmap_alloc_minlen_extent),
|
||||
XFS_ERRORTAG_ATTR_LIST(ag_resv_fail),
|
||||
XFS_ERRORTAG_ATTR_LIST(larp),
|
||||
NULL,
|
||||
};
|
||||
ATTRIBUTE_GROUPS(xfs_errortag);
|
||||
|
Loading…
x
Reference in New Issue
Block a user