diff options
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r-- | drivers/md/md.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index f5cbb9d2371a..41e2509bf896 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -1500,6 +1500,9 @@ static int bind_rdev_to_array(mdk_rdev_t * rdev, mddev_t * mddev) | |||
1500 | 1500 | ||
1501 | list_add_rcu(&rdev->same_set, &mddev->disks); | 1501 | list_add_rcu(&rdev->same_set, &mddev->disks); |
1502 | bd_claim_by_disk(rdev->bdev, rdev->bdev->bd_holder, mddev->gendisk); | 1502 | bd_claim_by_disk(rdev->bdev, rdev->bdev->bd_holder, mddev->gendisk); |
1503 | |||
1504 | /* May as well allow recovery to be retried once */ | ||
1505 | mddev->recovery_disabled = 0; | ||
1503 | return 0; | 1506 | return 0; |
1504 | 1507 | ||
1505 | fail: | 1508 | fail: |
@@ -6175,7 +6178,7 @@ static int remove_and_add_spares(mddev_t *mddev) | |||
6175 | } | 6178 | } |
6176 | } | 6179 | } |
6177 | 6180 | ||
6178 | if (mddev->degraded && ! mddev->ro) { | 6181 | if (mddev->degraded && ! mddev->ro && !mddev->recovery_disabled) { |
6179 | list_for_each_entry(rdev, &mddev->disks, same_set) { | 6182 | list_for_each_entry(rdev, &mddev->disks, same_set) { |
6180 | if (rdev->raid_disk >= 0 && | 6183 | if (rdev->raid_disk >= 0 && |
6181 | !test_bit(In_sync, &rdev->flags) && | 6184 | !test_bit(In_sync, &rdev->flags) && |