[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 10/11] migration: Allow to suppress vmdesc submission
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PULL 10/11] migration: Allow to suppress vmdesc submission |
Date: |
Mon, 16 Mar 2015 14:41:11 +0100 |
From: Alexander Graf <address@hidden>
We now always send a JSON blob describing the migration file format as part
of the migration stream. However, some tools built around QEMU have proven
to stumble over this.
This patch gives the user the chance to disable said self-describing part of
the migration stream. To disable vmdesc submission, just add
-machine suppress-vmdesc=on
to your QEMU command line.
Signed-off-by: Alexander Graf <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>
---
hw/core/machine.c | 20 ++++++++++++++++++++
include/hw/boards.h | 1 +
qemu-options.hx | 3 ++-
savevm.c | 14 +++++++++++---
4 files changed, 34 insertions(+), 4 deletions(-)
diff --git a/hw/core/machine.c b/hw/core/machine.c
index e3a3e2a..cb1185a 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -254,6 +254,20 @@ static void machine_set_iommu(Object *obj, bool value,
Error **errp)
ms->iommu = value;
}
+static void machine_set_suppress_vmdesc(Object *obj, bool value, Error **errp)
+{
+ MachineState *ms = MACHINE(obj);
+
+ ms->suppress_vmdesc = value;
+}
+
+static bool machine_get_suppress_vmdesc(Object *obj, Error **errp)
+{
+ MachineState *ms = MACHINE(obj);
+
+ return ms->suppress_vmdesc;
+}
+
static int error_on_sysbus_device(SysBusDevice *sbdev, void *opaque)
{
error_report("Option '-device %s' cannot be handled by this machine",
@@ -377,6 +391,12 @@ static void machine_initfn(Object *obj)
object_property_set_description(obj, "iommu",
"Set on/off to enable/disable Intel IOMMU
(VT-d)",
NULL);
+ object_property_add_bool(obj, "suppress-vmdesc",
+ machine_get_suppress_vmdesc,
+ machine_set_suppress_vmdesc, NULL);
+ object_property_set_description(obj, "suppress-vmdesc",
+ "Set on to disable self-describing
migration",
+ NULL);
/* Register notifier when init is done for sysbus sanity checks */
ms->sysbus_notifier.notify = machine_init_notify;
diff --git a/include/hw/boards.h b/include/hw/boards.h
index f44d6f5..1feea2b 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -143,6 +143,7 @@ struct MachineState {
bool usb;
char *firmware;
bool iommu;
+ bool suppress_vmdesc;
ram_addr_t ram_size;
ram_addr_t maxram_size;
diff --git a/qemu-options.hx b/qemu-options.hx
index ad07dde..c513352 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -39,7 +39,8 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \
" mem-merge=on|off controls memory merge support (default:
on)\n"
" iommu=on|off controls emulated Intel IOMMU (VT-d) support
(default=off)\n"
" aes-key-wrap=on|off controls support for AES key wrapping
(default=on)\n"
- " dea-key-wrap=on|off controls support for DEA key wrapping
(default=on)\n",
+ " dea-key-wrap=on|off controls support for DEA key wrapping
(default=on)\n"
+ " suppress-vmdesc=on|off disables self-describing migration
(default=off)\n",
QEMU_ARCH_ALL)
STEXI
@item -machine address@hidden,address@hidden,...]]
diff --git a/savevm.c b/savevm.c
index 54510e9..e7d97ee 100644
--- a/savevm.c
+++ b/savevm.c
@@ -710,6 +710,12 @@ int qemu_savevm_state_iterate(QEMUFile *f)
return ret;
}
+static bool should_send_vmdesc(void)
+{
+ MachineState *machine = MACHINE(qdev_get_machine());
+ return !machine->suppress_vmdesc;
+}
+
void qemu_savevm_state_complete(QEMUFile *f)
{
QJSON *vmdesc;
@@ -782,9 +788,11 @@ void qemu_savevm_state_complete(QEMUFile *f)
qjson_finish(vmdesc);
vmdesc_len = strlen(qjson_get_str(vmdesc));
- qemu_put_byte(f, QEMU_VM_VMDESCRIPTION);
- qemu_put_be32(f, vmdesc_len);
- qemu_put_buffer(f, (uint8_t *)qjson_get_str(vmdesc), vmdesc_len);
+ if (should_send_vmdesc()) {
+ qemu_put_byte(f, QEMU_VM_VMDESCRIPTION);
+ qemu_put_be32(f, vmdesc_len);
+ qemu_put_buffer(f, (uint8_t *)qjson_get_str(vmdesc), vmdesc_len);
+ }
object_unref(OBJECT(vmdesc));
qemu_fflush(f);
--
2.1.0
- [Qemu-devel] [PULL 01/11] Add -incoming defer, (continued)
- [Qemu-devel] [PULL 01/11] Add -incoming defer, Juan Quintela, 2015/03/16
- [Qemu-devel] [PULL 02/11] Add migrate_incoming, Juan Quintela, 2015/03/16
- [Qemu-devel] [PULL 06/11] save_xbzrle_page: change calling convention, Juan Quintela, 2015/03/16
- [Qemu-devel] [PULL 04/11] ram_find_and_save_block: change calling convention, Juan Quintela, 2015/03/16
- [Qemu-devel] [PULL 05/11] ram_save_page: change calling covention, Juan Quintela, 2015/03/16
- [Qemu-devel] [PULL 03/11] ram: make all save_page functions take a uint64_t parameter, Juan Quintela, 2015/03/16
- [Qemu-devel] [PULL 07/11] save_block_hdr: we can recalculate the cont parameter here, Juan Quintela, 2015/03/16
- [Qemu-devel] [PULL 08/11] rename save_block_hdr to save_page_header, Juan Quintela, 2015/03/16
- [Qemu-devel] [PULL 09/11] migration: Read JSON VM description on incoming migration, Juan Quintela, 2015/03/16
- [Qemu-devel] [PULL 10/11] migration: Allow to suppress vmdesc submission,
Juan Quintela <=
- [Qemu-devel] [PULL 11/11] pc: Disable vmdesc submission for old machines, Juan Quintela, 2015/03/16
- Re: [Qemu-devel] [PULL 00/11] Migration pull request, Markus Armbruster, 2015/03/16
- Re: [Qemu-devel] [PULL 00/11] Migration pull request, Peter Maydell, 2015/03/16