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 <phrdina@redhat.com>
This commit is contained in:
Pavel Hrdina 2017-03-09 13:57:54 +01:00
parent dd81f56842
commit 5c7d88085a
3 changed files with 7 additions and 2 deletions

View File

@ -3818,7 +3818,8 @@ virDomainDefPostParseMemory(virDomainDefPtr def,
/* Attempt to infer the initial memory size from the sum NUMA memory sizes /* Attempt to infer the initial memory size from the sum NUMA memory sizes
* in case ABI updates are allowed or the <memory> element wasn't specified */ * in case ABI updates are allowed or the <memory> element wasn't specified */
if (def->mem.total_memory == 0 || 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); numaMemory = virDomainNumaGetMemorySize(def->numa);
/* calculate the sizes of hotplug memory */ /* calculate the sizes of hotplug memory */

View File

@ -2726,6 +2726,10 @@ typedef enum {
VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE = 1 << 10, VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE = 1 << 10,
/* skip parsing of security labels */ /* skip parsing of security labels */
VIR_DOMAIN_DEF_PARSE_SKIP_SECLABEL = 1 << 11, 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; } virDomainDefParseFlags;
typedef enum { typedef enum {

View File

@ -1173,7 +1173,7 @@ qemuMigrationCookieXMLParse(qemuMigrationCookiePtr mig,
mig->persistent = virDomainDefParseNode(doc, nodes[0], mig->persistent = virDomainDefParseNode(doc, nodes[0],
caps, driver->xmlopt, NULL, caps, driver->xmlopt, NULL,
VIR_DOMAIN_DEF_PARSE_INACTIVE | VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_ABI_UPDATE | VIR_DOMAIN_DEF_PARSE_ABI_UPDATE_MIGRATION |
VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE); VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE);
if (!mig->persistent) { if (!mig->persistent) {
/* virDomainDefParseNode already reported /* virDomainDefParseNode already reported