migration: use switch at the end of migration

It converts the old if clauses into switch, explicitly mentions the
possible migration states.  The old nested "if"s are not clear on what
we do on different states.

Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
master
Peter Xu 2018-01-03 20:20:12 +08:00 committed by Juan Quintela
parent cf011f082d
commit 39b9e17905
1 changed files with 27 additions and 17 deletions

View File

@ -2341,11 +2341,13 @@ static void *migration_thread(void *opaque)
cpu_throttle_stop();
qemu_mutex_lock_iothread();
if (s->state == MIGRATION_STATUS_COMPLETED) {
switch (s->state) {
case MIGRATION_STATUS_COMPLETED:
migration_calculate_complete(s);
runstate_set(RUN_STATE_POSTMIGRATE);
} else {
if (s->state == MIGRATION_STATUS_ACTIVE) {
break;
case MIGRATION_STATUS_ACTIVE:
/*
* We should really assert here, but since it's during
* migration, let's try to reduce the usage of assertions.
@ -2360,7 +2362,9 @@ static void *migration_thread(void *opaque)
* After exited COLO, we will keep running.
*/
s->vm_was_running = true;
}
/* Fallthrough */
case MIGRATION_STATUS_FAILED:
case MIGRATION_STATUS_CANCELLED:
if (s->vm_was_running) {
vm_start();
} else {
@ -2368,6 +2372,12 @@ static void *migration_thread(void *opaque)
runstate_set(RUN_STATE_POSTMIGRATE);
}
}
break;
default:
/* Should not reach here, but if so, forgive the VM. */
error_report("%s: Unknown ending state %d", __func__, s->state);
break;
}
qemu_bh_schedule(s->cleanup_bh);
qemu_mutex_unlock_iothread();