Reviewed-by: zhanghailiang <zhang.zhanghaili...@huawei.com> > -----Original Message----- > From: Zhang Chen [mailto:chen.zh...@intel.com] > Sent: Friday, May 15, 2020 12:28 PM > To: Dr . David Alan Gilbert <dgilb...@redhat.com>; Juan Quintela > <quint...@redhat.com>; Zhanghailiang <zhang.zhanghaili...@huawei.com>; > qemu-dev <qemu-devel@nongnu.org> > Cc: Zhang Chen <zhangc...@gmail.com>; Jason Wang > <jasow...@redhat.com>; Zhang Chen <chen.zh...@intel.com> > Subject: [PATCH 1/3] migration/colo: Optimize COLO boot code path > > From: Zhang Chen <chen.zh...@intel.com> > > No need to reuse MIGRATION_STATUS_ACTIVE boot COLO. > > Signed-off-by: Zhang Chen <chen.zh...@intel.com> > --- > migration/colo.c | 2 -- > migration/migration.c | 17 ++++++++++------- > 2 files changed, 10 insertions(+), 9 deletions(-) > > diff --git a/migration/colo.c b/migration/colo.c index > d015d4f84e..5ef69b885d 100644 > --- a/migration/colo.c > +++ b/migration/colo.c > @@ -669,8 +669,6 @@ void migrate_start_colo_process(MigrationState *s) > colo_checkpoint_notify, s); > > qemu_sem_init(&s->colo_exit_sem, 0); > - migrate_set_state(&s->state, MIGRATION_STATUS_ACTIVE, > - MIGRATION_STATUS_COLO); > colo_process_checkpoint(s); > qemu_mutex_lock_iothread(); > } > diff --git a/migration/migration.c b/migration/migration.c index > 0bb042a0f7..c889ef6eb7 100644 > --- a/migration/migration.c > +++ b/migration/migration.c > @@ -2972,7 +2972,10 @@ static void > migration_completion(MigrationState *s) > goto fail_invalidate; > } > > - if (!migrate_colo_enabled()) { > + if (migrate_colo_enabled()) { > + migrate_set_state(&s->state, current_active_state, > + MIGRATION_STATUS_COLO); > + } else { > migrate_set_state(&s->state, current_active_state, > MIGRATION_STATUS_COMPLETED); > } > @@ -3304,12 +3307,7 @@ static void > migration_iteration_finish(MigrationState *s) > migration_calculate_complete(s); > runstate_set(RUN_STATE_POSTMIGRATE); > 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. > - */ > + case MIGRATION_STATUS_COLO: > if (!migrate_colo_enabled()) { > error_report("%s: critical error: calling COLO code without " > "COLO enabled", __func__); @@ -3319,6 > +3317,11 @@ static void migration_iteration_finish(MigrationState *s) > * Fixme: we will run VM in COLO no matter its old running state. > * After exited COLO, we will keep running. > */ > + case MIGRATION_STATUS_ACTIVE: > + /* > + * We should really assert here, but since it's during > + * migration, let's try to reduce the usage of assertions. > + */ > s->vm_was_running = true; > /* Fallthrough */ > case MIGRATION_STATUS_FAILED: > -- > 2.17.1