diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/md/md.c | 2 | ||||
-rw-r--r-- | drivers/md/raid5.c | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index 4869128bf742..cb20d0b0555a 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -2087,6 +2087,7 @@ static void sync_sbs(mddev_t * mddev, int nospares) | |||
2087 | /* First make sure individual recovery_offsets are correct */ | 2087 | /* First make sure individual recovery_offsets are correct */ |
2088 | list_for_each_entry(rdev, &mddev->disks, same_set) { | 2088 | list_for_each_entry(rdev, &mddev->disks, same_set) { |
2089 | if (rdev->raid_disk >= 0 && | 2089 | if (rdev->raid_disk >= 0 && |
2090 | mddev->delta_disks >= 0 && | ||
2090 | !test_bit(In_sync, &rdev->flags) && | 2091 | !test_bit(In_sync, &rdev->flags) && |
2091 | mddev->curr_resync_completed > rdev->recovery_offset) | 2092 | mddev->curr_resync_completed > rdev->recovery_offset) |
2092 | rdev->recovery_offset = mddev->curr_resync_completed; | 2093 | rdev->recovery_offset = mddev->curr_resync_completed; |
@@ -6872,6 +6873,7 @@ void md_do_sync(mddev_t *mddev) | |||
6872 | rcu_read_lock(); | 6873 | rcu_read_lock(); |
6873 | list_for_each_entry_rcu(rdev, &mddev->disks, same_set) | 6874 | list_for_each_entry_rcu(rdev, &mddev->disks, same_set) |
6874 | if (rdev->raid_disk >= 0 && | 6875 | if (rdev->raid_disk >= 0 && |
6876 | mddev->delta_disks >= 0 && | ||
6875 | !test_bit(Faulty, &rdev->flags) && | 6877 | !test_bit(Faulty, &rdev->flags) && |
6876 | !test_bit(In_sync, &rdev->flags) && | 6878 | !test_bit(In_sync, &rdev->flags) && |
6877 | rdev->recovery_offset < mddev->curr_resync) | 6879 | rdev->recovery_offset < mddev->curr_resync) |
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 2c055dec8c68..f972a94bbc32 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c | |||
@@ -5208,6 +5208,7 @@ static int raid5_spare_active(mddev_t *mddev) | |||
5208 | for (i = 0; i < conf->raid_disks; i++) { | 5208 | for (i = 0; i < conf->raid_disks; i++) { |
5209 | tmp = conf->disks + i; | 5209 | tmp = conf->disks + i; |
5210 | if (tmp->rdev | 5210 | if (tmp->rdev |
5211 | && tmp->rdev->recovery_offset == MaxSector | ||
5211 | && !test_bit(Faulty, &tmp->rdev->flags) | 5212 | && !test_bit(Faulty, &tmp->rdev->flags) |
5212 | && !test_and_set_bit(In_sync, &tmp->rdev->flags)) { | 5213 | && !test_and_set_bit(In_sync, &tmp->rdev->flags)) { |
5213 | unsigned long flags; | 5214 | unsigned long flags; |