mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-28 16:56:26 +00:00
xfs: add error injection to test file mapping exchange recovery
Add an errortag so that we can test recovery of exchmaps log items. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
42672471f9
commit
5fd022ec7d
@ -63,7 +63,8 @@
|
||||
#define XFS_ERRTAG_ATTR_LEAF_TO_NODE 41
|
||||
#define XFS_ERRTAG_WB_DELAY_MS 42
|
||||
#define XFS_ERRTAG_WRITE_DELAY_MS 43
|
||||
#define XFS_ERRTAG_MAX 44
|
||||
#define XFS_ERRTAG_EXCHMAPS_FINISH_ONE 44
|
||||
#define XFS_ERRTAG_MAX 45
|
||||
|
||||
/*
|
||||
* Random factors for above tags, 1 means always, 2 means 1/2 time, etc.
|
||||
@ -111,5 +112,6 @@
|
||||
#define XFS_RANDOM_ATTR_LEAF_TO_NODE 1
|
||||
#define XFS_RANDOM_WB_DELAY_MS 3000
|
||||
#define XFS_RANDOM_WRITE_DELAY_MS 3000
|
||||
#define XFS_RANDOM_EXCHMAPS_FINISH_ONE 1
|
||||
|
||||
#endif /* __XFS_ERRORTAG_H_ */
|
||||
|
@ -437,6 +437,9 @@ xfs_exchmaps_finish_one(
|
||||
return error;
|
||||
}
|
||||
|
||||
if (XFS_TEST_ERROR(false, tp->t_mountp, XFS_ERRTAG_EXCHMAPS_FINISH_ONE))
|
||||
return -EIO;
|
||||
|
||||
/* If we still have work to do, ask for a new transaction. */
|
||||
if (xmi_has_more_exchange_work(xmi) || xmi_has_postop_work(xmi)) {
|
||||
trace_xfs_exchmaps_defer(tp->t_mountp, xmi);
|
||||
|
@ -62,6 +62,7 @@ static unsigned int xfs_errortag_random_default[] = {
|
||||
XFS_RANDOM_ATTR_LEAF_TO_NODE,
|
||||
XFS_RANDOM_WB_DELAY_MS,
|
||||
XFS_RANDOM_WRITE_DELAY_MS,
|
||||
XFS_RANDOM_EXCHMAPS_FINISH_ONE,
|
||||
};
|
||||
|
||||
struct xfs_errortag_attr {
|
||||
@ -179,6 +180,7 @@ XFS_ERRORTAG_ATTR_RW(da_leaf_split, XFS_ERRTAG_DA_LEAF_SPLIT);
|
||||
XFS_ERRORTAG_ATTR_RW(attr_leaf_to_node, XFS_ERRTAG_ATTR_LEAF_TO_NODE);
|
||||
XFS_ERRORTAG_ATTR_RW(wb_delay_ms, XFS_ERRTAG_WB_DELAY_MS);
|
||||
XFS_ERRORTAG_ATTR_RW(write_delay_ms, XFS_ERRTAG_WRITE_DELAY_MS);
|
||||
XFS_ERRORTAG_ATTR_RW(exchmaps_finish_one, XFS_ERRTAG_EXCHMAPS_FINISH_ONE);
|
||||
|
||||
static struct attribute *xfs_errortag_attrs[] = {
|
||||
XFS_ERRORTAG_ATTR_LIST(noerror),
|
||||
@ -224,6 +226,7 @@ static struct attribute *xfs_errortag_attrs[] = {
|
||||
XFS_ERRORTAG_ATTR_LIST(attr_leaf_to_node),
|
||||
XFS_ERRORTAG_ATTR_LIST(wb_delay_ms),
|
||||
XFS_ERRORTAG_ATTR_LIST(write_delay_ms),
|
||||
XFS_ERRORTAG_ATTR_LIST(exchmaps_finish_one),
|
||||
NULL,
|
||||
};
|
||||
ATTRIBUTE_GROUPS(xfs_errortag);
|
||||
|
Loading…
Reference in New Issue
Block a user