|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v7 32/32] libxl: add support for migrating HVM guests without a device model
Only some minor libxl changes are needed in order to be able to migrate HVM
guests without a device model, no hypervisor changes are needed.
This change prevents sending the emulator context if the device model
version is set to none.
Signed-off-by: Roger Pau Monnà <roger.pau@xxxxxxxxxx>
Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
Cc: Ian Campbell <ian.campbell@xxxxxxxxxx>
Cc: Wei Liu <wei.liu2@xxxxxxxxxx>
---
tools/libxl/libxl_dom.c | 3 +++
tools/libxl/libxl_dom_suspend.c | 2 ++
tools/libxl/libxl_stream_write.c | 8 +++++++-
3 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c
index 7e8ae14..b40d744 100644
--- a/tools/libxl/libxl_dom.c
+++ b/tools/libxl/libxl_dom.c
@@ -1310,6 +1310,9 @@ void libxl__domain_suspend_common_switch_qemu_logdirty
case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN:
domain_suspend_switch_qemu_xen_logdirty(domid, enable, shs);
break;
+ case LIBXL_DEVICE_MODEL_VERSION_NONE:
+ libxl__xc_domain_saverestore_async_callback_done(egc, shs, 0);
+ break;
default:
LOG(ERROR,"logdirty switch failed"
", no valid device model version found, abandoning suspend");
diff --git a/tools/libxl/libxl_dom_suspend.c b/tools/libxl/libxl_dom_suspend.c
index 4cc01ad..3313ad1 100644
--- a/tools/libxl/libxl_dom_suspend.c
+++ b/tools/libxl/libxl_dom_suspend.c
@@ -43,6 +43,8 @@ int libxl__domain_suspend_device_model(libxl__gc *gc,
if (ret)
unlink(filename);
break;
+ case LIBXL_DEVICE_MODEL_VERSION_NONE:
+ break;
default:
return ERROR_INVAL;
}
diff --git a/tools/libxl/libxl_stream_write.c b/tools/libxl/libxl_stream_write.c
index 52a60d7..5551560 100644
--- a/tools/libxl/libxl_stream_write.c
+++ b/tools/libxl/libxl_stream_write.c
@@ -232,6 +232,9 @@ void libxl__stream_write_start(libxl__egc *egc,
stream->emu_sub_hdr.id = EMULATOR_QEMU_UPSTREAM;
break;
+ case LIBXL_DEVICE_MODEL_VERSION_NONE:
+ break;
+
default:
rc = ERROR_FAIL;
LOG(ERROR, "Unknown emulator for HVM domain");
@@ -387,8 +390,11 @@ static void emulator_xenstore_record_done(libxl__egc *egc,
libxl__stream_write_state *stream)
{
libxl__domain_suspend_state *dss = stream->dss;
+ STATE_AO_GC(stream->ao);
- if (dss->type == LIBXL_DOMAIN_TYPE_HVM)
+ if (dss->type == LIBXL_DOMAIN_TYPE_HVM &&
+ libxl__device_model_version_running(gc, dss->domid) !=
+ LIBXL_DEVICE_MODEL_VERSION_NONE)
write_emulator_context_record(egc, stream);
else {
if (stream->in_checkpoint)
--
1.9.5 (Apple Git-50.3)
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |