Commit 1a67dde0 authored by NeilBrown's avatar NeilBrown

md/raid5: Properly remove excess drives after shrinking a raid5/6

We were removing the drives, from the array, but not
removing symlinks from /sys/.... and not marking the device
as having been removed.
Signed-off-by: default avatarNeilBrown <neilb@suse.de>
parent a639755c
...@@ -5097,8 +5097,15 @@ static void raid5_finish_reshape(mddev_t *mddev) ...@@ -5097,8 +5097,15 @@ static void raid5_finish_reshape(mddev_t *mddev)
mddev->degraded--; mddev->degraded--;
for (d = conf->raid_disks ; for (d = conf->raid_disks ;
d < conf->raid_disks - mddev->delta_disks; d < conf->raid_disks - mddev->delta_disks;
d++) d++) {
raid5_remove_disk(mddev, d); mdk_rdev_t *rdev = conf->disks[d].rdev;
if (rdev && raid5_remove_disk(mddev, d) == 0) {
char nm[20];
sprintf(nm, "rd%d", rdev->raid_disk);
sysfs_remove_link(&mddev->kobj, nm);
rdev->raid_disk = -1;
}
}
} }
mddev->layout = conf->algorithm; mddev->layout = conf->algorithm;
mddev->chunk_sectors = conf->chunk_sectors; mddev->chunk_sectors = conf->chunk_sectors;
......
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