|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH RFC v2 7/8] Fixed bugs in the migration flow
---
tools/libxc/xc_sr_save.c | 1 -
tools/libxl/libxl_create.c | 15 ++++++++-------
tools/libxl/libxl_dom_save.c | 2 +-
tools/libxl/libxl_domain.c | 2 +-
tools/libxl/libxl_internal.h | 2 +-
tools/libxl/libxl_save_callout.c | 5 +++--
tools/libxl/libxl_stream_write.c | 2 +-
tools/xl/xl.h | 2 +-
tools/xl/xl_cmdtable.c | 3 ++-
tools/xl/xl_migrate.c | 2 +-
10 files changed, 19 insertions(+), 17 deletions(-)
diff --git a/tools/libxc/xc_sr_save.c b/tools/libxc/xc_sr_save.c
index 181a0c8..f3e162f 100644
--- a/tools/libxc/xc_sr_save.c
+++ b/tools/libxc/xc_sr_save.c
@@ -464,7 +464,6 @@ static int send_virtual_devices_and_params(struct
xc_sr_context *ctx)
uint64_t i = 0;
int rc = 0;
- fprintf(stderr, "BRUNO: SEND VIRTUAL DEVICES AND PARAMS\n");
xc_set_progress_prefix(xch, "Frames");
//FOR RTL AND VGA IN 128MB VM . Might change on size of VM
diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
index 6df2754..0579671 100644
--- a/tools/libxl/libxl_create.c
+++ b/tools/libxl/libxl_create.c
@@ -1055,24 +1055,24 @@ static void start_nbd_server(libxl__egc *egc,
libxl__dm_spawn_state *dmss,
* TODO: Assign port dynamically
*/
- LOGD(DEBUG, "Starting NBD Server\n");
+ LOGD(DEBUG, domid, "Starting NBD Server\n");
ret = libxl__qmp_nbd_server_start(gc, domid, "::",
QEMU_DRIVE_MIRROR_PORT);
if (ret) {
ret = ERROR_FAIL;
- LOGD(ERROR, "Failed to start NBD Server\n");
+ LOGD(ERROR, domid, "Failed to start NBD Server\n");
goto skip_nbd;
}else{
- LOGD(INFO, "Started NBD Server Successfully\n");
+ LOGD(INFO, domid, "Started NBD Server Successfully\n");
}
ret = libxl__qmp_nbd_server_add(gc, domid,
QEMU_DRIVE_MIRROR_DEVICE);
if (ret) {
ret = ERROR_FAIL;
- LOGD(ERROR, "Failed to add NBD Server\n");
+ LOGD(ERROR, domid, "Failed to add NBD Server\n");
goto skip_nbd;
} else {
- LOGD(INFO, "NBD Add Successful\n");
+ LOGD(INFO, domid, "NBD Add Successful\n");
}
}
@@ -1103,7 +1103,7 @@ static void domcreate_bootloader_done(libxl__egc *egc,
libxl__srm_restore_autogen_callbacks *const callbacks =
&dcs->srs.shs.callbacks.restore.a;
libxl__srm_restore_autogen_callbacks *const callbacks_mirror_qemu_disks =
- &dcs->srs_local_disks.shs.callbacks.restore.a;
+ &dcs->srs_mirror_qemu_disks.shs.callbacks.restore.a;
if (rc) {
domcreate_rebuild_done(egc, dcs, rc);
@@ -1252,6 +1252,7 @@ static void domcreate_stream_done(libxl__egc *egc,
{
libxl__domain_create_state *dcs = srs->dcs;
STATE_AO_GC(dcs->ao);
+ int rc;
const uint32_t domid = dcs->guest_domid;
const char* uri;
@@ -1269,7 +1270,7 @@ static void domcreate_stream_done(libxl__egc *egc,
}else{
fprintf(stderr, "Stopped NBD server successfully\n");
}
- uri = GCSPRINTF("exec: /bin/cat %s",
(&dcs->sdss.dm)->build_state->saved_state);
+ uri = GCSPRINTF("exec: /bin/cat %s", state_file);
libxl__qmp_migrate_incoming(gc, domid, uri);
domcreate_devmodel_started(egc, &dcs->sdss.dm, 0);
}
diff --git a/tools/libxl/libxl_dom_save.c b/tools/libxl/libxl_dom_save.c
index a2730f5..ddfe2f8 100644
--- a/tools/libxl/libxl_dom_save.c
+++ b/tools/libxl/libxl_dom_save.c
@@ -446,7 +446,7 @@ static void mirror_qemu_disks(libxl__egc *egc,
libxl__stream_write_state *sws,
start_mirror:
LOGD(DEBUG, domid, "Sleeping for a bit so that source can start
NBD\n");
sleep(30);
- LOGD(DEBUG, "Starting mirror-drive of device %s\n",
+ LOGD(DEBUG, domid, "Starting mirror-drive of device %s\n",
QEMU_DRIVE_MIRROR_DEVICE);
target = GCSPRINTF("nbd:%s:%s:exportname=%s", dss->hostname,
QEMU_DRIVE_MIRROR_PORT, QEMU_DRIVE_MIRROR_DEVICE);
diff --git a/tools/libxl/libxl_domain.c b/tools/libxl/libxl_domain.c
index 76c6d3d..9b512b9 100644
--- a/tools/libxl/libxl_domain.c
+++ b/tools/libxl/libxl_domain.c
@@ -509,7 +509,7 @@ int libxl_domain_suspend(libxl_ctx *ctx, uint32_t domid,
int fd, int flags,
dss->type = type;
dss->live = flags & LIBXL_SUSPEND_LIVE;
dss->debug = flags & LIBXL_SUSPEND_DEBUG;
- dss->mirror_qemu_disks = flags & LIBXL_SUSPEND_MIRROR_QEMU_DISKS;
+ dss->mirror_qemu_disks = (flags & LIBXL_SUSPEND_MIRROR_QEMU_DISKS) ? 1 : 0;
dss->hostname = hostname;
dss->checkpointed_stream = LIBXL_CHECKPOINTED_STREAM_NONE;
diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
index 30862c6..d7b338b 100644
--- a/tools/libxl/libxl_internal.h
+++ b/tools/libxl/libxl_internal.h
@@ -3759,7 +3759,7 @@ struct libxl__domain_create_state {
/* If we're not doing stubdom, we use only dmss.dm,
* for the non-stubdom device model. */
libxl__stream_read_state srs;
- libxl__stream_read_state srs_local_disks;
+ libxl__stream_read_state srs_mirror_qemu_disks;
/* necessary if the domain creation failed and we have to destroy it */
libxl__domain_destroy_state dds;
libxl__multidev multidev;
diff --git a/tools/libxl/libxl_save_callout.c b/tools/libxl/libxl_save_callout.c
index 48f96d8..64c891a 100644
--- a/tools/libxl/libxl_save_callout.c
+++ b/tools/libxl/libxl_save_callout.c
@@ -62,7 +62,8 @@ void libxl__xc_domain_restore(libxl__egc *egc,
libxl__domain_create_state *dcs,
state->store_domid, state->console_port,
state->console_domid,
hvm, pae,
- cbflags, dcs->restore_params.checkpointed_stream
+ cbflags, dcs->restore_params.checkpointed_stream,
+ migration_phase,
};
shs->ao = ao;
@@ -74,7 +75,7 @@ void libxl__xc_domain_restore(libxl__egc *egc,
libxl__domain_create_state *dcs,
} else {
if ( migration_phase != LIBXL_MIGRATION_PHASE_MIRROR_DISK ) {
shs->completion_callback = libxl__xc_domain_restore_done;
- if( local_disks == LIBXL_MIGRATION_PHASE_VIRTUAL_RAM )
+ if( migration_phase == LIBXL_MIGRATION_PHASE_VIRTUAL_RAM )
shs->need_results = 0;
else
shs->need_results = 1;
diff --git a/tools/libxl/libxl_stream_write.c b/tools/libxl/libxl_stream_write.c
index ad312ed..f5269f4 100644
--- a/tools/libxl/libxl_stream_write.c
+++ b/tools/libxl/libxl_stream_write.c
@@ -335,7 +335,7 @@ static void stream_header_done(libxl__egc *egc,
static void libxc_header_done(libxl__egc *egc,
libxl__stream_write_state *stream)
{
- int save_mirror_qemu_disks = stream->dss->local_disks;
+ int save_mirror_qemu_disks = stream->dss->mirror_qemu_disks;
libxl__xc_domain_save(egc, stream->dss, &stream->shs,
save_mirror_qemu_disks + stream->mirror_qemu_disks);
}
diff --git a/tools/xl/xl.h b/tools/xl/xl.h
index 070bac1..2bff52f 100644
--- a/tools/xl/xl.h
+++ b/tools/xl/xl.h
@@ -35,7 +35,7 @@ struct domain_create {
int daemonize;
int monitor; /* handle guest reboots etc */
int paused;
- int mirror_qemu_disk;
+ int mirror_qemu_disks;
int dryrun;
int quiet;
int vnc;
diff --git a/tools/xl/xl_cmdtable.c b/tools/xl/xl_cmdtable.c
index 5cfc7e8..5fa5720 100644
--- a/tools/xl/xl_cmdtable.c
+++ b/tools/xl/xl_cmdtable.c
@@ -165,7 +165,8 @@ struct cmd_spec cmd_table[] = {
"-e Do not wait in the background (on <host>) for the
death\n"
" of the domain.\n"
"--debug Print huge (!) amount of debug during the migration
process.\n"
- "-p Do not unpause domain after migrating it."
+ "-p Do not unpause domain after migrating it.\n"
+ "-q Migrate local disks (Copy all the storage)"
},
{ "restore",
&main_restore, 0, 1,
diff --git a/tools/xl/xl_migrate.c b/tools/xl/xl_migrate.c
index 9f43d96..0a01cad 100644
--- a/tools/xl/xl_migrate.c
+++ b/tools/xl/xl_migrate.c
@@ -610,7 +610,7 @@ int main_migrate(int argc, char **argv)
daemonize ? "" : " -e",
debug ? " -d" : "",
pause_after_migration ? " -p" : "",
- mirror_qemu_disks ? "-q" :"");
+ mirror_qemu_disks ? " -q" : "");
}
migrate_domain(domid, rune, debug, config_filename, mirror_qemu_disks,
--
2.3.2 (Apple Git-55)
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |