md/raid5: be careful not to resize_stripes too big.
When a RAID5 is reshaping, conf->raid_disks is increased before mddev->delta_disks becomes zero. This can result in check_reshape calling resize_stripes with a number that is too large. This particularly happens when md_check_recovery calls ->check_reshape(). If we use ->previous_raid_disks, we don't risk this. Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
db07d85ef6
commit
e56108d65f
@ -5871,7 +5871,8 @@ static int check_reshape(struct mddev *mddev)
|
|||||||
if (!check_stripe_cache(mddev))
|
if (!check_stripe_cache(mddev))
|
||||||
return -ENOSPC;
|
return -ENOSPC;
|
||||||
|
|
||||||
return resize_stripes(conf, conf->raid_disks + mddev->delta_disks);
|
return resize_stripes(conf, (conf->previous_raid_disks
|
||||||
|
+ mddev->delta_disks));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int raid5_start_reshape(struct mddev *mddev)
|
static int raid5_start_reshape(struct mddev *mddev)
|
||||||
|
Loading…
Reference in New Issue
Block a user