diff options
Diffstat (limited to 'migration.c')
-rw-r--r-- | migration.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/migration.c b/migration.c index 94f7839e8..3f485d33a 100644 --- a/migration.c +++ b/migration.c @@ -60,13 +60,13 @@ static MigrationState *migrate_get_current(void) return ¤t_migration; } -int qemu_start_incoming_migration(const char *uri) +int qemu_start_incoming_migration(const char *uri, Error **errp) { const char *p; int ret; if (strstart(uri, "tcp:", &p)) - ret = tcp_start_incoming_migration(p); + ret = tcp_start_incoming_migration(p, errp); #if !defined(WIN32) else if (strstart(uri, "exec:", &p)) ret = exec_start_incoming_migration(p); @@ -252,6 +252,7 @@ static void migrate_fd_put_ready(void *opaque) int old_vm_running = runstate_is_running(); DPRINTF("done iterating\n"); + qemu_system_wakeup_request(QEMU_WAKEUP_REASON_OTHER); vm_stop_force_state(RUN_STATE_FINISH_MIGRATE); if (qemu_savevm_state_complete(s->file) < 0) { @@ -413,7 +414,7 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk, s = migrate_init(blk, inc); if (strstart(uri, "tcp:", &p)) { - ret = tcp_start_outgoing_migration(s, p); + ret = tcp_start_outgoing_migration(s, p, errp); #if !defined(WIN32) } else if (strstart(uri, "exec:", &p)) { ret = exec_start_outgoing_migration(s, p); @@ -428,9 +429,11 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk, } if (ret < 0) { - DPRINTF("migration failed: %s\n", strerror(-ret)); - /* FIXME: we should return meaningful errors */ - error_set(errp, QERR_UNDEFINED_ERROR); + if (!error_is_set(errp)) { + DPRINTF("migration failed: %s\n", strerror(-ret)); + /* FIXME: we should return meaningful errors */ + error_set(errp, QERR_UNDEFINED_ERROR); + } return; } |