* Juan Quintela (quint...@redhat.com) wrote: > This function returns if we are in the middle of a migration. > It is like migration_is_setup_or_active() with CANCELLING and COLO. > Adapt all calers that are needed. > > Signed-off-by: Juan Quintela <quint...@redhat.com>
Yeh the changes do change behaviour, but they're probably more correct. Reviewed-by: Dr. David Alan Gilbert <dgilb...@redhat.com> > --- > migration/migration.c | 29 ++++++++++++++++++++++++----- > migration/migration.h | 1 + > migration/savevm.c | 4 +--- > 3 files changed, 26 insertions(+), 8 deletions(-) > > diff --git a/migration/migration.c b/migration/migration.c > index 990bff00c0..1fb0aab44d 100644 > --- a/migration/migration.c > +++ b/migration/migration.c > @@ -829,6 +829,27 @@ bool migration_is_setup_or_active(int state) > } > } > > +bool migration_is_running(int state) > +{ > + switch (state) { > + case MIGRATION_STATUS_ACTIVE: > + case MIGRATION_STATUS_POSTCOPY_ACTIVE: > + case MIGRATION_STATUS_POSTCOPY_PAUSED: > + case MIGRATION_STATUS_POSTCOPY_RECOVER: > + case MIGRATION_STATUS_SETUP: > + case MIGRATION_STATUS_PRE_SWITCHOVER: > + case MIGRATION_STATUS_DEVICE: > + case MIGRATION_STATUS_WAIT_UNPLUG: > + case MIGRATION_STATUS_CANCELLING: > + case MIGRATION_STATUS_COLO: > + return true; > + > + default: > + return false; > + > + } > +} > + > static void populate_time_info(MigrationInfo *info, MigrationState *s) > { > info->has_status = true; > @@ -1077,7 +1098,7 @@ void > qmp_migrate_set_capabilities(MigrationCapabilityStatusList *params, > MigrationCapabilityStatusList *cap; > bool cap_list[MIGRATION_CAPABILITY__MAX]; > > - if (migration_is_setup_or_active(s->state)) { > + if (migration_is_running(s->state)) { > error_setg(errp, QERR_MIGRATION_ACTIVE); > return; > } > @@ -1590,7 +1611,7 @@ static void migrate_fd_cancel(MigrationState *s) > > do { > old_state = s->state; > - if (!migration_is_setup_or_active(old_state)) { > + if (!migration_is_running(old_state)) { > break; > } > /* If the migration is paused, kick it out of the pause */ > @@ -1888,9 +1909,7 @@ static bool migrate_prepare(MigrationState *s, bool > blk, bool blk_inc, > return true; > } > > - if (migration_is_setup_or_active(s->state) || > - s->state == MIGRATION_STATUS_CANCELLING || > - s->state == MIGRATION_STATUS_COLO) { > + if (migration_is_running(s->state)) { > error_setg(errp, QERR_MIGRATION_ACTIVE); > return false; > } > diff --git a/migration/migration.h b/migration/migration.h > index aa9ff6f27b..44b1d56929 100644 > --- a/migration/migration.h > +++ b/migration/migration.h > @@ -279,6 +279,7 @@ void migrate_fd_error(MigrationState *s, const Error > *error); > void migrate_fd_connect(MigrationState *s, Error *error_in); > > bool migration_is_setup_or_active(int state); > +bool migration_is_running(int state); > > void migrate_init(MigrationState *s); > bool migration_is_blocked(Error **errp); > diff --git a/migration/savevm.c b/migration/savevm.c > index adfdca26ac..f19cb9ec7a 100644 > --- a/migration/savevm.c > +++ b/migration/savevm.c > @@ -1531,9 +1531,7 @@ static int qemu_savevm_state(QEMUFile *f, Error **errp) > MigrationState *ms = migrate_get_current(); > MigrationStatus status; > > - if (migration_is_setup_or_active(ms->state) || > - ms->state == MIGRATION_STATUS_CANCELLING || > - ms->state == MIGRATION_STATUS_COLO) { > + if (migration_is_running(ms->state)) { > error_setg(errp, QERR_MIGRATION_ACTIVE); > return -EINVAL; > } > -- > 2.24.1 > -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK