Commit fdcfbbb6 authored by NeilBrown's avatar NeilBrown

md/raid5: allow 5-device RAID6 to be reshaped to 4-device.

There is a bug in 'check_reshape' for raid5.c  To checks
that the new minimum number of devices is large enough (which is
good), but it does so also after the reshape has started (bad).

This is bad because
 - the calculation is now wrong as mddev->raid_disks has changed
   already, and
 - it is pointless because it is now too late to stop.

So only perform that test when reshape has not been committed to.
Signed-off-by: default avatarNeilBrown <neilb@suse.de>
parent 78eaa0d4
...@@ -5914,7 +5914,7 @@ static int check_reshape(struct mddev *mddev) ...@@ -5914,7 +5914,7 @@ static int check_reshape(struct mddev *mddev)
return 0; /* nothing to do */ return 0; /* nothing to do */
if (has_failed(conf)) if (has_failed(conf))
return -EINVAL; return -EINVAL;
if (mddev->delta_disks < 0) { if (mddev->delta_disks < 0 && mddev->reshape_position == MaxSector) {
/* We might be able to shrink, but the devices must /* We might be able to shrink, but the devices must
* be made bigger first. * be made bigger first.
* For raid6, 4 is the minimum size. * For raid6, 4 is the minimum size.
......
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