Signed-off-by: Juan Quintela <quint...@redhat.com> --- migration-exec.c | 14 +------------- migration-fd.c | 14 +------------- migration-tcp.c | 15 ++------------- migration-unix.c | 15 ++------------- migration.c | 13 +++++++++++++ migration.h | 2 ++ 6 files changed, 21 insertions(+), 52 deletions(-)
diff --git a/migration-exec.c b/migration-exec.c index 5435827..07af11a 100644 --- a/migration-exec.c +++ b/migration-exec.c @@ -111,20 +111,8 @@ err_after_alloc: static void exec_accept_incoming_migration(void *opaque) { QEMUFile *f = opaque; - int ret; - ret = qemu_loadvm_state(f); - if (ret < 0) { - fprintf(stderr, "load of migration failed\n"); - goto err; - } - qemu_announce_self(); - DPRINTF("successfully loaded vm state\n"); - - if (autostart) - vm_start(); - -err: + process_incoming_migration(f); qemu_set_fd_handler2(qemu_stdio_fd(f), NULL, NULL, NULL, NULL); qemu_fclose(f); } diff --git a/migration-fd.c b/migration-fd.c index 0abd372..6d14505 100644 --- a/migration-fd.c +++ b/migration-fd.c @@ -104,20 +104,8 @@ err_after_alloc: static void fd_accept_incoming_migration(void *opaque) { QEMUFile *f = opaque; - int ret; - ret = qemu_loadvm_state(f); - if (ret < 0) { - fprintf(stderr, "load of migration failed\n"); - goto err; - } - qemu_announce_self(); - DPRINTF("successfully loaded vm state\n"); - - if (autostart) - vm_start(); - -err: + process_incoming_migration(f); qemu_set_fd_handler2(qemu_stdio_fd(f), NULL, NULL, NULL, NULL); qemu_fclose(f); } diff --git a/migration-tcp.c b/migration-tcp.c index 95ce722..20f2e37 100644 --- a/migration-tcp.c +++ b/migration-tcp.c @@ -143,7 +143,7 @@ static void tcp_accept_incoming_migration(void *opaque) socklen_t addrlen = sizeof(addr); int s = (unsigned long)opaque; QEMUFile *f; - int c, ret; + int c; do { c = qemu_accept(s, (struct sockaddr *)&addr, &addrlen); @@ -162,18 +162,7 @@ static void tcp_accept_incoming_migration(void *opaque) goto out; } - ret = qemu_loadvm_state(f); - if (ret < 0) { - fprintf(stderr, "load of migration failed\n"); - goto out_fopen; - } - qemu_announce_self(); - DPRINTF("successfully loaded vm state\n"); - - if (autostart) - vm_start(); - -out_fopen: + process_incoming_migration(f); qemu_fclose(f); out: qemu_set_fd_handler2(s, NULL, NULL, NULL, NULL); diff --git a/migration-unix.c b/migration-unix.c index 49de1b9..57232c0 100644 --- a/migration-unix.c +++ b/migration-unix.c @@ -149,7 +149,7 @@ static void unix_accept_incoming_migration(void *opaque) socklen_t addrlen = sizeof(addr); int s = (unsigned long)opaque; QEMUFile *f; - int c, ret; + int c; do { c = qemu_accept(s, (struct sockaddr *)&addr, &addrlen); @@ -168,18 +168,7 @@ static void unix_accept_incoming_migration(void *opaque) goto out; } - ret = qemu_loadvm_state(f); - if (ret < 0) { - fprintf(stderr, "load of migration failed\n"); - goto out_fopen; - } - qemu_announce_self(); - DPRINTF("successfully loaded vm state\n"); - - if (autostart) - vm_start(); - -out_fopen: + process_incoming_migration(f); qemu_fclose(f); out: qemu_set_fd_handler2(s, NULL, NULL, NULL, NULL); diff --git a/migration.c b/migration.c index cf30a8e..6ab5d90 100644 --- a/migration.c +++ b/migration.c @@ -54,6 +54,19 @@ int qemu_start_incoming_migration(const char *uri) return ret; } +void process_incoming_migration(QEMUFile *f) +{ + if (qemu_loadvm_state(f) < 0) { + fprintf(stderr, "load of migration failed\n"); + exit(0); + } + qemu_announce_self(); + DPRINTF("successfully loaded vm state\n"); + + if (autostart) + vm_start(); +} + int do_migrate(Monitor *mon, const QDict *qdict, QObject **ret_data) { MigrationState *s = NULL; diff --git a/migration.h b/migration.h index dd423a1..017e9c3 100644 --- a/migration.h +++ b/migration.h @@ -50,6 +50,8 @@ struct FdMigrationState void *opaque; }; +void process_incoming_migration(QEMUFile *f); + int qemu_start_incoming_migration(const char *uri); int do_migrate(Monitor *mon, const QDict *qdict, QObject **ret_data); -- 1.6.6.1