FIX: sync_completed == 0 causes reshape cancellation in metadata
md signals reshape completion (whole area or parts) by setting sync_completed to 0. This causes in set_array_state() to rollback metadata changes (super-intel.c:4977. To avoid this do not allow for set last_checkpoint to 0 if reshape is finished. This was also root cause of my previous fix for finalization reshape that I agreed earlier is not necessary, Signed-off-by: Adam Kwolek <adam.kwolek@intel.com> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
cf6ac177b4
commit
2a9f840972
|
@ -363,8 +363,10 @@ static int read_and_act(struct active_array *a)
|
|||
/* Reshape has progressed or completed so we need to
|
||||
* update the array state - and possibly the array size
|
||||
*/
|
||||
a->last_checkpoint = sync_completed;
|
||||
if (sync_completed != 0)
|
||||
a->last_checkpoint = sync_completed;
|
||||
a->container->ss->set_array_state(a, a->curr_state <= clean);
|
||||
a->last_checkpoint = sync_completed;
|
||||
}
|
||||
|
||||
if (sync_completed > a->last_checkpoint)
|
||||
|
|
Loading…
Reference in New Issue