Revision b5d17adb migration.c
b/migration.c | ||
---|---|---|
54 | 54 |
fprintf(stderr, "unknown migration protocol: %s\n", uri); |
55 | 55 |
} |
56 | 56 |
|
57 |
void do_migrate(Monitor *mon, const QDict *qdict, QObject **ret_data)
|
|
57 |
int do_migrate(Monitor *mon, const QDict *qdict, QObject **ret_data)
|
|
58 | 58 |
{ |
59 | 59 |
MigrationState *s = NULL; |
60 | 60 |
const char *p; |
... | ... | |
64 | 64 |
if (current_migration && |
65 | 65 |
current_migration->get_status(current_migration) == MIG_STATE_ACTIVE) { |
66 | 66 |
monitor_printf(mon, "migration already in progress\n"); |
67 |
return; |
|
67 |
return -1;
|
|
68 | 68 |
} |
69 | 69 |
|
70 |
if (strstart(uri, "tcp:", &p)) |
|
70 |
if (strstart(uri, "tcp:", &p)) {
|
|
71 | 71 |
s = tcp_start_outgoing_migration(mon, p, max_throttle, detach, |
72 | 72 |
(int)qdict_get_int(qdict, "blk"), |
73 | 73 |
(int)qdict_get_int(qdict, "inc")); |
74 | 74 |
#if !defined(WIN32) |
75 |
else if (strstart(uri, "exec:", &p))
|
|
75 |
} else if (strstart(uri, "exec:", &p)) {
|
|
76 | 76 |
s = exec_start_outgoing_migration(mon, p, max_throttle, detach, |
77 | 77 |
(int)qdict_get_int(qdict, "blk"), |
78 | 78 |
(int)qdict_get_int(qdict, "inc")); |
79 |
else if (strstart(uri, "unix:", &p))
|
|
79 |
} else if (strstart(uri, "unix:", &p)) {
|
|
80 | 80 |
s = unix_start_outgoing_migration(mon, p, max_throttle, detach, |
81 | 81 |
(int)qdict_get_int(qdict, "blk"), |
82 | 82 |
(int)qdict_get_int(qdict, "inc")); |
83 |
else if (strstart(uri, "fd:", &p))
|
|
83 |
} else if (strstart(uri, "fd:", &p)) {
|
|
84 | 84 |
s = fd_start_outgoing_migration(mon, p, max_throttle, detach, |
85 | 85 |
(int)qdict_get_int(qdict, "blk"), |
86 | 86 |
(int)qdict_get_int(qdict, "inc")); |
87 | 87 |
#endif |
88 |
else
|
|
88 |
} else {
|
|
89 | 89 |
monitor_printf(mon, "unknown migration protocol: %s\n", uri); |
90 |
return -1; |
|
91 |
} |
|
90 | 92 |
|
91 |
if (s == NULL) |
|
93 |
if (s == NULL) {
|
|
92 | 94 |
monitor_printf(mon, "migration failed\n"); |
93 |
else { |
|
94 |
if (current_migration) |
|
95 |
current_migration->release(current_migration); |
|
95 |
return -1; |
|
96 |
} |
|
96 | 97 |
|
97 |
current_migration = s; |
|
98 |
if (current_migration) { |
|
99 |
current_migration->release(current_migration); |
|
98 | 100 |
} |
101 |
|
|
102 |
current_migration = s; |
|
103 |
return 0; |
|
99 | 104 |
} |
100 | 105 |
|
101 | 106 |
int do_migrate_cancel(Monitor *mon, const QDict *qdict, QObject **ret_data) |
Also available in: Unified diff