monitor: Make sure that last_checkpoint is set to 0 after sync
In a case of successful completion of a resync (in the last step) - read_and_act sometimes still reads sync_action as "resync" but sync_completed already is set to component_size. When this race occurs, sync operation is marked as finished, but last_checkpoint is overwritten with sync_completed. It will cause next sync operation (ie. reshape) to be reported as complete immediately after start - mdmon will write successful completion of the reshape to metadata. This patch sets last_checkpoint to 0 once the sync is completed to stop it happening. Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
This commit is contained in:
parent
8800f85381
commit
955aa6cf75
|
@ -420,6 +420,9 @@ static int read_and_act(struct active_array *a)
|
|||
if (sync_completed > a->last_checkpoint)
|
||||
a->last_checkpoint = sync_completed;
|
||||
|
||||
if (sync_completed >= a->info.component_size)
|
||||
a->last_checkpoint = 0;
|
||||
|
||||
a->container->ss->sync_metadata(a->container);
|
||||
dprintf("(%d): state:%s action:%s next(", a->info.container_member,
|
||||
array_states[a->curr_state], sync_actions[a->curr_action]);
|
||||
|
|
Loading…
Reference in New Issue