]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.25/patches.fixes/0003-md-don-t-retry-recovery-of-raid1-that-fails-due-to-e.patch
Revert "Move xen patchset to new version's subdir."
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.25 / patches.fixes / 0003-md-don-t-retry-recovery-of-raid1-that-fails-due-to-e.patch
diff --git a/src/patches/suse-2.6.27.25/patches.fixes/0003-md-don-t-retry-recovery-of-raid1-that-fails-due-to-e.patch b/src/patches/suse-2.6.27.25/patches.fixes/0003-md-don-t-retry-recovery-of-raid1-that-fails-due-to-e.patch
new file mode 100644 (file)
index 0000000..e9a3f74
--- /dev/null
@@ -0,0 +1,34 @@
+From 4044ba58dd15cb01797c4fd034f39ef4a75f7cc3 Mon Sep 17 00:00:00 2001
+From: NeilBrown <neilb@suse.de>
+Date: Fri, 9 Jan 2009 08:31:11 +1100
+Subject: [PATCH] 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>
+---
+ drivers/md/md.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- linux-2.6.27-SLE11_BRANCH.orig/drivers/md/md.c
++++ linux-2.6.27-SLE11_BRANCH/drivers/md/md.c
+@@ -1512,6 +1512,9 @@ static int bind_rdev_to_array(mdk_rdev_t
+       list_add_rcu(&rdev->same_set, &mddev->disks);
+       bd_claim_by_disk(rdev->bdev, rdev->bdev->bd_holder, mddev->gendisk);
+       md_integrity_check(rdev, mddev);
++
++      /* May as well allow recovery to be retried once */
++      clear_bit(MD_RECOVERY_DISABLED, &mddev->recovery);
+       return 0;
+  fail: