md/raid5: consider updating reshape_position at start of reshape.
authorNeilBrown <neilb@suse.com>
Mon, 6 Jul 2015 02:28:45 +0000 (12:28 +1000)
committerNeilBrown <neilb@suse.com>
Mon, 31 Aug 2015 17:31:20 +0000 (19:31 +0200)
commit92140480ed59a006b245efd33a195fde62d1845f
treebcd753ecf5a203c17fd056a51faceff52cc7126f
parent985ca973b68cac0adfa83497db231da7f99c6ed9
md/raid5: consider updating reshape_position at start of reshape.

md/raid5 only updates ->reshape_position (which is stored in
metadata and is authoritative) occasionally, but particularly
when getting closed to ->resync_max as it must be correct
when ->resync_max is reached.

When mdadm tries to stop an array which is reshaping it will:
 - freeze the reshape,
 - set resync_max to where the reshape has reached.
 - unfreeze the reshape.
When this happens, the reshape is aborted and then restarted.

The restart doesn't check that resync_max is close, and so doesn't
update ->reshape_position like it should.
This results in the reshape stopping, but ->reshape_position being
incorrect.

So on that first call to reshape_request, make sure ->reshape_position
is updated if needed.

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