|
@@ -1500,6 +1500,9 @@ static int bind_rdev_to_array(mdk_rdev_t * rdev, mddev_t * mddev)
|
|
|
|
|
|
list_add_rcu(&rdev->same_set, &mddev->disks);
|
|
|
bd_claim_by_disk(rdev->bdev, rdev->bdev->bd_holder, mddev->gendisk);
|
|
|
+
|
|
|
+ /* May as well allow recovery to be retried once */
|
|
|
+ mddev->recovery_disabled = 0;
|
|
|
return 0;
|
|
|
|
|
|
fail:
|
|
@@ -6175,7 +6178,7 @@ static int remove_and_add_spares(mddev_t *mddev)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (mddev->degraded && ! mddev->ro) {
|
|
|
+ if (mddev->degraded && ! mddev->ro && !mddev->recovery_disabled) {
|
|
|
list_for_each_entry(rdev, &mddev->disks, same_set) {
|
|
|
if (rdev->raid_disk >= 0 &&
|
|
|
!test_bit(In_sync, &rdev->flags) &&
|