aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuiz Capitulino <lcapitulino@redhat.com>2010-02-10 23:49:57 -0200
committerAnthony Liguori <aliguori@us.ibm.com>2010-02-19 15:18:17 -0600
commitb5d17adb932b16226c8073c3411cf5c93df22cb8 (patch)
treebaebfc69d449b18650772f09d3ad9c00f6b19fdd
parent053801bc4950ec797ab8b47b4189dcdf2a1fc016 (diff)
Monitor: Convert do_migrate() to cmd_new_ret()
While there I'm also dropping a unneeded else clause (the last one in the function). Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r--migration.c29
-rw-r--r--migration.h2
-rw-r--r--qemu-monitor.hx2
3 files changed, 19 insertions, 14 deletions
diff --git a/migration.c b/migration.c
index 557bec4f2..05f6cc5a0 100644
--- a/migration.c
+++ b/migration.c
@@ -54,7 +54,7 @@ void qemu_start_incoming_migration(const char *uri)
fprintf(stderr, "unknown migration protocol: %s\n", uri);
}
-void do_migrate(Monitor *mon, const QDict *qdict, QObject **ret_data)
+int do_migrate(Monitor *mon, const QDict *qdict, QObject **ret_data)
{
MigrationState *s = NULL;
const char *p;
@@ -64,38 +64,43 @@ void do_migrate(Monitor *mon, const QDict *qdict, QObject **ret_data)
if (current_migration &&
current_migration->get_status(current_migration) == MIG_STATE_ACTIVE) {
monitor_printf(mon, "migration already in progress\n");
- return;
+ return -1;
}
- if (strstart(uri, "tcp:", &p))
+ if (strstart(uri, "tcp:", &p)) {
s = tcp_start_outgoing_migration(mon, p, max_throttle, detach,
(int)qdict_get_int(qdict, "blk"),
(int)qdict_get_int(qdict, "inc"));
#if !defined(WIN32)
- else if (strstart(uri, "exec:", &p))
+ } else if (strstart(uri, "exec:", &p)) {
s = exec_start_outgoing_migration(mon, p, max_throttle, detach,
(int)qdict_get_int(qdict, "blk"),
(int)qdict_get_int(qdict, "inc"));
- else if (strstart(uri, "unix:", &p))
+ } else if (strstart(uri, "unix:", &p)) {
s = unix_start_outgoing_migration(mon, p, max_throttle, detach,
(int)qdict_get_int(qdict, "blk"),
(int)qdict_get_int(qdict, "inc"));
- else if (strstart(uri, "fd:", &p))
+ } else if (strstart(uri, "fd:", &p)) {
s = fd_start_outgoing_migration(mon, p, max_throttle, detach,
(int)qdict_get_int(qdict, "blk"),
(int)qdict_get_int(qdict, "inc"));
#endif
- else
+ } else {
monitor_printf(mon, "unknown migration protocol: %s\n", uri);
+ return -1;
+ }
- if (s == NULL)
+ if (s == NULL) {
monitor_printf(mon, "migration failed\n");
- else {
- if (current_migration)
- current_migration->release(current_migration);
+ return -1;
+ }
- current_migration = s;
+ if (current_migration) {
+ current_migration->release(current_migration);
}
+
+ current_migration = s;
+ return 0;
}
int do_migrate_cancel(Monitor *mon, const QDict *qdict, QObject **ret_data)
diff --git a/migration.h b/migration.h
index 9345d9749..385423f11 100644
--- a/migration.h
+++ b/migration.h
@@ -52,7 +52,7 @@ struct FdMigrationState
void qemu_start_incoming_migration(const char *uri);
-void do_migrate(Monitor *mon, const QDict *qdict, QObject **ret_data);
+int do_migrate(Monitor *mon, const QDict *qdict, QObject **ret_data);
int do_migrate_cancel(Monitor *mon, const QDict *qdict, QObject **ret_data);
diff --git a/qemu-monitor.hx b/qemu-monitor.hx
index e987cf100..3a1f9bc51 100644
--- a/qemu-monitor.hx
+++ b/qemu-monitor.hx
@@ -773,7 +773,7 @@ ETEXI
"shared storage with incremental copy of disk "
"(base image shared between src and destination)",
.user_print = monitor_user_noop,
- .mhandler.cmd_new = do_migrate,
+ .cmd_new_ret = do_migrate,
},