md/raid5: allow new reshape modes to be restarted in the middle.
authorNeilBrown <neilb@suse.de>
Thu, 13 Aug 2009 00:06:24 +0000 (10:06 +1000)
committerNeilBrown <neilb@suse.de>
Thu, 13 Aug 2009 00:06:24 +0000 (10:06 +1000)
commit67ac6011db5d2b0c853d573ff474b25c85dfb644
tree29b30e5e4eac0564c34e0b0b3d655383ba9c783f
parent51d5668cb2e3fd1827a55184e48606fff054c5be
md/raid5: allow new reshape modes to be restarted in the middle.

md/raid5 doesn't allow a reshape to restart if it involves writing
over the same part of disk that it would be reading from.
This happens at the beginning of a reshape that increases the number
of devices, at the end of a reshape that decreases the number of
devices, and continuously for a reshape that does not change the
number of devices.

The current code is correct for the "increase number of devices"
case as the critical section at the start is handled by userspace
performing a backup.

It does not work for reducing the number of devices, or the
no-change case.
For 'reducing', we need to invert the test.  For no-change we cannot
really be sure things will be safe, so simply require the array
to be read-only, which is how the user-space code which carefully
starts such arrays works.

Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/raid5.c