summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2009-01-08 21:31:11 (GMT)
committerNeilBrown <neilb@suse.de>2009-01-08 21:31:11 (GMT)
commit4044ba58dd15cb01797c4fd034f39ef4a75f7cc3 (patch)
treee1bea8143538fc3eaeeb8578c2f9231e32809a25 /include/linux
parentefeb53c0e57213e843b7ef3cc6ebcdea7d6186ac (diff)
downloadlinux-fsl-qoriq-4044ba58dd15cb01797c4fd034f39ef4a75f7cc3.tar.xz
md: don't retry recovery of raid1 that fails due to error on source drive.
If a raid1 has only one working drive and it has a sector which gives an error on read, then an attempt to recover onto a spare will fail, but as the single remaining drive is not removed from the array, the recovery will be immediately re-attempted, resulting in an infinite recovery loop. So detect this situation and don't retry recovery once an error on the lone remaining drive is detected. Allow recovery to be retried once every time a spare is added in case the problem wasn't actually a media error. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/raid/md_k.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/raid/md_k.h b/include/linux/raid/md_k.h
index dac4217..9743e4d 100644
--- a/include/linux/raid/md_k.h
+++ b/include/linux/raid/md_k.h
@@ -218,6 +218,9 @@ struct mddev_s
#define MD_RECOVERY_FROZEN 9
unsigned long recovery;
+ int recovery_disabled; /* if we detect that recovery
+ * will always fail, set this
+ * so we don't loop trying */
int in_sync; /* know to not need resync */
struct mutex reconfig_mutex;