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:
Adam Kwolek 2011-01-17 12:44:52 +11:00 committed by NeilBrown
parent cf6ac177b4
commit 2a9f840972
1 changed files with 3 additions and 1 deletions

View File

@ -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)