summaryrefslogtreecommitdiffstats
path: root/drivers/md/raid10.h
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.com>2016-11-18 16:16:12 +1100
committerShaohua Li <shli@fb.com>2016-11-22 09:14:28 -0800
commit8d3ca83dcf9ca3d58822eddd279918d46f41e9ff (patch)
tree27c06b0345db76be8c89fcf078404786b95b1b21 /drivers/md/raid10.h
parent212e7eb7a3403464a796c05c2fc46cae3b62d803 (diff)
downloadlinux-stable-8d3ca83dcf9ca3d58822eddd279918d46f41e9ff.tar.gz
linux-stable-8d3ca83dcf9ca3d58822eddd279918d46f41e9ff.tar.bz2
linux-stable-8d3ca83dcf9ca3d58822eddd279918d46f41e9ff.zip
md/raid10: add failfast handling for reads.
If a device is marked FailFast, and it is not the only device we can read from, we mark the bio as MD_FAILFAST. If this does fail-fast, we don't try read repair but just allow failure. If it was the last device, it doesn't get marked Faulty so the retry happens on the same device - this time without FAILFAST. A subsequent failure will not retry but will just pass up the error. During resync we may use FAILFAST requests, and on a failure we will simply use the other device(s). During recovery we will only use FAILFAST in the unusual case were there are multiple places to read from - i.e. if there are > 2 devices. If we get a failure we will fail the device and complete the resync/recovery with remaining devices. Signed-off-by: NeilBrown <neilb@suse.com> Signed-off-by: Shaohua Li <shli@fb.com>
Diffstat (limited to 'drivers/md/raid10.h')
-rw-r--r--drivers/md/raid10.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/md/raid10.h b/drivers/md/raid10.h
index 18ec1f7a98bf..3162615e57bd 100644
--- a/drivers/md/raid10.h
+++ b/drivers/md/raid10.h
@@ -156,5 +156,7 @@ enum r10bio_state {
* flag is set
*/
R10BIO_Previous,
+/* failfast devices did receive failfast requests. */
+ R10BIO_FailFast,
};
#endif