aboutsummaryrefslogtreecommitdiff
path: root/migration/migration.c
diff options
context:
space:
mode:
authorJuan Quintela <quintela@redhat.com>2015-07-01 09:32:29 +0200
committerJuan Quintela <quintela@redhat.com>2015-07-07 14:54:53 +0200
commit656a233440e552230f9d1da016b94a81b86658dc (patch)
treee9bb55da5d394ffc115c1e1d9c02758d68f348d4 /migration/migration.c
parenta5c17b5f68ff7e37ce6e6e1f5457307fe07629e7 (diff)
migration: ensure we start in NONE state
Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Diffstat (limited to 'migration/migration.c')
-rw-r--r--migration/migration.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/migration/migration.c b/migration/migration.c
index 1e34aa5f20..5c1233fb01 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -694,7 +694,6 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
error_setg(errp, QERR_MIGRATION_ACTIVE);
return;
}
-
if (runstate_check(RUN_STATE_INMIGRATE)) {
error_setg(errp, "Guest is waiting for an incoming migration");
return;
@@ -709,6 +708,12 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
return;
}
+ /* We are starting a new migration, so we want to start in a clean
+ state. This change is only needed if previous migration
+ failed/was cancelled. We don't use migrate_set_state() because
+ we are setting the initial state, not changing it. */
+ s->state = MIGRATION_STATUS_NONE;
+
s = migrate_init(&params);
if (strstart(uri, "tcp:", &p)) {