On Mon, Jun 05, 2017 at 11:27:01AM +0200, Jiri Denemark wrote:
Since the domain XML send during migration uses the original guest
CPU
definition but we still want the destination to enforce ABI if it is new
enough, we send the live updated CPU definition in a migration cookie.
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
src/qemu/qemu_migration.c | 11 ++++++++---
src/qemu/qemu_migration_cookie.c | 31 ++++++++++++++++++++++++++++++-
src/qemu/qemu_migration_cookie.h | 5 +++++
3 files changed, 43 insertions(+), 4 deletions(-)
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 2cd862875..134c76c5e 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -2020,6 +2020,9 @@ qemuMigrationBeginPhase(virQEMUDriverPtr driver,
vm->newDef && !qemuDomainVcpuHotplugIsInOrder(vm->newDef)))
cookieFlags |= QEMU_MIGRATION_COOKIE_CPU_HOTPLUG;
+ if (priv->origCPU)
+ cookieFlags |= QEMU_MIGRATION_COOKIE_CPU;
+
if (!(mig = qemuMigrationEatCookie(driver, vm, NULL, 0, 0)))
goto cleanup;
@@ -2644,7 +2647,8 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
QEMU_MIGRATION_COOKIE_LOCKSTATE |
QEMU_MIGRATION_COOKIE_NBD |
QEMU_MIGRATION_COOKIE_MEMORY_HOTPLUG |
- QEMU_MIGRATION_COOKIE_CPU_HOTPLUG)))
+ QEMU_MIGRATION_COOKIE_CPU_HOTPLUG |
+ QEMU_MIGRATION_COOKIE_CPU)))
goto cleanup;
if (STREQ_NULLABLE(protocol, "rdma") &&
@@ -3644,8 +3648,9 @@ qemuMigrationRun(virQEMUDriverPtr driver,
if (!(persistDef = qemuMigrationPrepareDef(driver, persist_xml,
NULL, NULL)))
goto cleanup;
- } else if (vm->newDef) {
- if (!(persistDef = qemuDomainDefCopy(driver, vm->newDef,
+ } else {
+ virDomainDefPtr def = vm->newDef ? vm->newDef : vm->def;
+ if (!(persistDef = qemuDomainDefCopy(driver, def,
VIR_DOMAIN_XML_SECURE |
VIR_DOMAIN_XML_MIGRATABLE)))
This hunk should be in a separate patch because it doesn't have anything
in common with the rest of the patch.
Reviewed-by: Pavel Hrdina <phrdina(a)redhat.com>