Git-commit: 2bb77736ae5dca0a189829fbb7379d43364a9dac
From: NeilBrown <neilb@suse.de>
Subject: raid10: Disable recovery when recovery cannot proceed
Patch-mainline: 3.1
References: bnc#751171

If it turns out that RAID10 recovery cannot proceed - due to
insufficient devices - we mustn't loop.
So use the 'recovery_disabled' feature alrady present for RAID1
to stop these loops in RAID10.

Acked-by: NeilBrown <neilb@suse.de>
Signed-off-by: Neil Brown <neilb@suse.de>

---
 drivers/md/raid10.c |    2 ++
 1 file changed, 2 insertions(+)

--- linux-3.0-SLE11-SP2.orig/drivers/md/raid10.c
+++ linux-3.0-SLE11-SP2/drivers/md/raid10.c
@@ -1207,6 +1207,7 @@ static int raid10_remove_disk(mddev_t *m
 		 * is not possible.
 		 */
 		if (!test_bit(Faulty, &rdev->flags) &&
+		    !mddev->recovery_disabled &&
 		    enough(conf, -1)) {
 			err = -EBUSY;
 			goto abort;
@@ -2083,6 +2084,7 @@ static sector_t sync_request(mddev_t *md
 					printk(KERN_INFO "md/raid10:%s: insufficient "
 					       "working devices for recovery.\n",
 					       mdname(mddev));
+				mddev->recovery_disabled = 1;
 				break;
 			}
 			if (r10_bio->devs[0].bio->bi_rw & REQ_FAILFAST_DEV) {
