Skip to content
This repository has been archived by the owner on Jan 20, 2024. It is now read-only.

Commit

Permalink
Add migrate_incoming
Browse files Browse the repository at this point in the history
Add migrate_incoming/migrate-incoming to start an incoming
migration.

Once a qemu has been started with
    -incoming defer

the migration can be started by issuing:
    migrate_incoming uri

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
  • Loading branch information
dagrh authored and Juan Quintela committed Mar 16, 2015
1 parent adde220 commit bf1ae1f
Show file tree
Hide file tree
Showing 6 changed files with 95 additions and 1 deletion.
16 changes: 16 additions & 0 deletions hmp-commands.hx
Original file line number Diff line number Diff line change
Expand Up @@ -919,6 +919,22 @@ STEXI
@findex migrate_cancel
Cancel the current VM migration.

ETEXI

{
.name = "migrate_incoming",
.args_type = "uri:s",
.params = "uri",
.help = "Continue an incoming migration from an -incoming defer",
.mhandler.cmd = hmp_migrate_incoming,
},

STEXI
@item migrate_incoming @var{uri}
@findex migrate_incoming
Continue an incoming migration using the @var{uri} (that has the same syntax
as the -incoming option).

ETEXI

{
Expand Down
14 changes: 14 additions & 0 deletions hmp.c
Original file line number Diff line number Diff line change
Expand Up @@ -1116,6 +1116,20 @@ void hmp_migrate_cancel(Monitor *mon, const QDict *qdict)
qmp_migrate_cancel(NULL);
}

void hmp_migrate_incoming(Monitor *mon, const QDict *qdict)
{
Error *err = NULL;
const char *uri = qdict_get_str(qdict, "uri");

qmp_migrate_incoming(uri, &err);

if (err) {
monitor_printf(mon, "%s\n", error_get_pretty(err));
error_free(err);
return;
}
}

void hmp_migrate_set_downtime(Monitor *mon, const QDict *qdict)
{
double value = qdict_get_double(qdict, "value");
Expand Down
1 change: 1 addition & 0 deletions hmp.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ void hmp_snapshot_delete_blkdev_internal(Monitor *mon, const QDict *qdict);
void hmp_drive_mirror(Monitor *mon, const QDict *qdict);
void hmp_drive_backup(Monitor *mon, const QDict *qdict);
void hmp_migrate_cancel(Monitor *mon, const QDict *qdict);
void hmp_migrate_incoming(Monitor *mon, const QDict *qdict);
void hmp_migrate_set_downtime(Monitor *mon, const QDict *qdict);
void hmp_migrate_set_speed(Monitor *mon, const QDict *qdict);
void hmp_migrate_set_capability(Monitor *mon, const QDict *qdict);
Expand Down
19 changes: 19 additions & 0 deletions migration/migration.c
Original file line number Diff line number Diff line change
Expand Up @@ -432,6 +432,25 @@ void migrate_del_blocker(Error *reason)
migration_blockers = g_slist_remove(migration_blockers, reason);
}

void qmp_migrate_incoming(const char *uri, Error **errp)
{
Error *local_err = NULL;

if (!deferred_incoming) {
error_setg(errp, "'-incoming defer' is required for migrate_incoming");
return;
}

qemu_start_incoming_migration(uri, &local_err);

if (local_err) {
error_propagate(errp, local_err);
return;
}

deferred_incoming = false;
}

void qmp_migrate(const char *uri, bool has_blk, bool blk,
bool has_inc, bool inc, bool has_detach, bool detach,
Error **errp)
Expand Down
15 changes: 15 additions & 0 deletions qapi-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -1738,6 +1738,21 @@
{ 'command': 'migrate',
'data': {'uri': 'str', '*blk': 'bool', '*inc': 'bool', '*detach': 'bool' } }

##
# @migrate-incoming
#
# Start an incoming migration, the qemu must have been started
# with -incoming defer
#
# @uri: The Uniform Resource Identifier identifying the source or
# address to listen on
#
# Returns: nothing on success
#
# Since: 2.3
##
{ 'command': 'migrate-incoming', 'data': {'uri': 'str' } }

# @xen-save-devices-state:
#
# Save the state of all devices to file. The RAM and the block devices
Expand Down
31 changes: 30 additions & 1 deletion qmp-commands.hx
Original file line number Diff line number Diff line change
Expand Up @@ -661,7 +661,36 @@ Example:
<- { "return": {} }

EQMP
{

{
.name = "migrate-incoming",
.args_type = "uri:s",
.mhandler.cmd_new = qmp_marshal_input_migrate_incoming,
},

SQMP
migrate-incoming
----------------

Continue an incoming migration

Arguments:

- "uri": Source/listening URI (json-string)

Example:

-> { "execute": "migrate-incoming", "arguments": { "uri": "tcp::4446" } }
<- { "return": {} }

Notes:

(1) QEMU must be started with -incoming defer to allow migrate-incoming to
be used
(2) The uri format is the same as to -incoming

EQMP
{
.name = "migrate-set-cache-size",
.args_type = "value:o",
.mhandler.cmd_new = qmp_marshal_input_migrate_set_cache_size,
Expand Down

0 comments on commit bf1ae1f

Please sign in to comment.