diff --git a/migration.c b/migration.c index 7f93e3f..9536098 100644 --- a/migration.c +++ b/migration.c @@ -72,6 +72,7 @@ void do_migrate(Monitor *mon, const QDict *qdict) else monitor_printf(mon, "unknown migration protocol: %s\n", uri); + s->stop_at_end = !qdict_get_int(qdict, "continue"); if (s == NULL) monitor_printf(mon, "migration failed\n"); else { @@ -287,6 +288,9 @@ void migrate_fd_put_ready(void *opaque) state = MIG_STATE_ERROR; } else { state = MIG_STATE_COMPLETED; + if (!s->mig_state.stop_at_end && old_vm_running) { + vm_start(); + } } migrate_fd_cleanup(s); s->state = state; diff --git a/migration.h b/migration.h index 53b923d..ea2610b 100644 --- a/migration.h +++ b/migration.h @@ -26,6 +26,7 @@ typedef struct MigrationState MigrationState; struct MigrationState { + int stop_at_end; /* FIXME: add more accessors to print migration info */ void (*cancel)(MigrationState *s); int (*get_status)(MigrationState *s); diff --git a/qemu-monitor.hx b/qemu-monitor.hx index 9f91873..168fe8c 100644 --- a/qemu-monitor.hx +++ b/qemu-monitor.hx @@ -466,11 +466,13 @@ STEXI Inject an NMI on the given CPU (x86 only). ETEXI - { "migrate", "detach:-d,uri:s", do_migrate, - "[-d] uri", "migrate to URI (using -d to not wait for completion)" }, + { "migrate", "detach:-d,continue:-c,uri:s", do_migrate, + "[-d] [-c] uri", "migrate to URI (using -d to migrate in background, and" + " -c to not stop this VM afterward)" }, STEXI @item migrate [-d] @var{uri} -Migrate to @var{uri} (using -d to not wait for completion). +Migrate to @var{uri} (using -d to migrate in background, and -c to not stop +this VM afterward). ETEXI { "migrate_cancel", "", do_migrate_cancel,