From b24b004e1196889201142d1fc7d51e2fafdbe328 Mon Sep 17 00:00:00 2001 Message-Id: From: Pavel Hrdina Date: Thu, 20 Apr 2017 09:16:20 +0200 Subject: [PATCH] conf: add a new parse flag VIR_DOMAIN_DEF_PARSE_ABI_UPDATE_MIGRATION So far there is probably no change that is allowed to be done by the VIR_DOMAIN_DEF_PARSE_ABI_UPDATE flag that would break guest ABI but this may change in the future. This introduces new VIR_DOMAIN_DEF_PARSE_ABI_UPDATE_MIGRATION which should be used only for ABI updates that are "safe" for persistent migration. Signed-off-by: Pavel Hrdina (cherry picked from commit 5c7d88085a762cf4ecc9416a3b7581fa45738c2a) Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1373184 Signed-off-by: Pavel Hrdina --- src/conf/domain_conf.c | 3 ++- src/conf/domain_conf.h | 4 ++++ src/qemu/qemu_migration_cookie.c | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 1b0a55b27..71f0c95c3 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -3805,7 +3805,8 @@ virDomainDefPostParseMemory(virDomainDefPtr def, /* Attempt to infer the initial memory size from the sum NUMA memory sizes * in case ABI updates are allowed or the element wasn't specified */ if (def->mem.total_memory == 0 || - parseFlags & VIR_DOMAIN_DEF_PARSE_ABI_UPDATE) + parseFlags & VIR_DOMAIN_DEF_PARSE_ABI_UPDATE || + parseFlags & VIR_DOMAIN_DEF_PARSE_ABI_UPDATE_MIGRATION) numaMemory = virDomainNumaGetMemorySize(def->numa); /* calculate the sizes of hotplug memory */ diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 47eaacef3..71e651975 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2725,6 +2725,10 @@ typedef enum { VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE = 1 << 10, /* skip parsing of security labels */ VIR_DOMAIN_DEF_PARSE_SKIP_SECLABEL = 1 << 11, + /* Allows updates in post parse callback for incoming persistent migration + * that would break ABI otherwise. This should be used only if it's safe + * to do such change. */ + VIR_DOMAIN_DEF_PARSE_ABI_UPDATE_MIGRATION = 1 << 12, } virDomainDefParseFlags; typedef enum { diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_cookie.c index bd12f1124..12887892d 100644 --- a/src/qemu/qemu_migration_cookie.c +++ b/src/qemu/qemu_migration_cookie.c @@ -1173,7 +1173,7 @@ qemuMigrationCookieXMLParse(qemuMigrationCookiePtr mig, mig->persistent = virDomainDefParseNode(doc, nodes[0], caps, driver->xmlopt, NULL, VIR_DOMAIN_DEF_PARSE_INACTIVE | - VIR_DOMAIN_DEF_PARSE_ABI_UPDATE | + VIR_DOMAIN_DEF_PARSE_ABI_UPDATE_MIGRATION | VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE); if (!mig->persistent) { /* virDomainDefParseNode already reported -- 2.12.2