mirror of https://github.com/xemu-project/xemu.git
avoid a bogus COMPLETED->CANCELLED transition
Avoid a bogus COMPLETED->CANCELLED transition. There is a period of time from the timing of setting COMPLETED state to that of migration thread exits, so during which it's problematic in COMPLETED->CANCELLED transition. Signed-off-by: Zeng Junliang <zengjunliang@huawei.com> Signed-off-by: Zhang Haoyu <haoyu.zhang@huawei.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
parent
dd089c0a1e
commit
6f2b811a61
|
@ -326,9 +326,16 @@ void migrate_fd_error(MigrationState *s)
|
||||||
|
|
||||||
static void migrate_fd_cancel(MigrationState *s)
|
static void migrate_fd_cancel(MigrationState *s)
|
||||||
{
|
{
|
||||||
|
int old_state ;
|
||||||
DPRINTF("cancelling migration\n");
|
DPRINTF("cancelling migration\n");
|
||||||
|
|
||||||
migrate_set_state(s, s->state, MIG_STATE_CANCELLED);
|
do {
|
||||||
|
old_state = s->state;
|
||||||
|
if (old_state != MIG_STATE_SETUP && old_state != MIG_STATE_ACTIVE) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
migrate_set_state(s, old_state, MIG_STATE_CANCELLED);
|
||||||
|
} while (s->state != MIG_STATE_CANCELLED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_migration_state_change_notifier(Notifier *notify)
|
void add_migration_state_change_notifier(Notifier *notify)
|
||||||
|
|
Loading…
Reference in New Issue