Commit 7eb41885 authored by NeilBrown's avatar NeilBrown

md: allow a partially recovered device to be hot-added to an array.

When adding a new device into an array it is normally important to
clear any stale data from ->recovery_offset else the new device may
not be recovered properly.

However when re-adding a device which is known to be nearly in-sync,
this is not needed and can be detrimental.  The (bitmap-based)
resync will still happen, and further recovery is only needed from
where-ever it was already up to.

So if save_raid_disk is set, signifying a re-add, don't clear
->recovery_offset.
Signed-off-by: default avatarNeilBrown <neilb@suse.de>
parent f466722c
...@@ -7736,7 +7736,8 @@ static int remove_and_add_spares(struct mddev *mddev, ...@@ -7736,7 +7736,8 @@ static int remove_and_add_spares(struct mddev *mddev,
!test_bit(Bitmap_sync, &rdev->flags))) !test_bit(Bitmap_sync, &rdev->flags)))
continue; continue;
rdev->recovery_offset = 0; if (rdev->saved_raid_disk < 0)
rdev->recovery_offset = 0;
if (mddev->pers-> if (mddev->pers->
hot_add_disk(mddev, rdev) == 0) { hot_add_disk(mddev, rdev) == 0) {
if (sysfs_link_rdev(mddev, rdev)) if (sysfs_link_rdev(mddev, rdev))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment