mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 00:21:59 +00:00
md/raid5: flush out all pending requests before proceeding with reshape.
Some requests - particularly 'discard' and 'read' are handled differently depending on whether a reshape is active or not. It is harmless to assume reshape is active if it isn't but wrong to act as though reshape is not active when it is. So when we start reshape - after making clear to all requests that reshape has started - use mddev_suspend/mddev_resume to flush out all requests. This will ensure that no requests will be assuming the absence of reshape once it really starts. Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
c46501b2de
commit
4d77e3ba88
@ -6279,6 +6279,13 @@ static int raid5_start_reshape(struct mddev *mddev)
|
||||
write_seqcount_end(&conf->gen_lock);
|
||||
spin_unlock_irq(&conf->device_lock);
|
||||
|
||||
/* Now make sure any requests that proceeded on the assumption
|
||||
* the reshape wasn't running - like Discard or Read - have
|
||||
* completed.
|
||||
*/
|
||||
mddev_suspend(mddev);
|
||||
mddev_resume(mddev);
|
||||
|
||||
/* Add some new drives, as many as will fit.
|
||||
* We know there are enough to make the newly sized array work.
|
||||
* Don't add devices if we are reducing the number of
|
||||
|
Loading…
Reference in New Issue
Block a user