qemu code always set VIR_DOMAIN_XML_SECURE flags when VIR_DOMAIN_XML_MIGRATABLE
is set. At the same time qemu code itself does not analyse VIR_DOMAIN_XML_SECURE
presense in any way. Thus we can just append secure flag conditionally
down the stack before call to virDomainDefFormatInternal which actually checks
secure flag. This drops a couple of adhoc macros also.
I would even put appending secure flag if migratable is present into
virDomainDefFormatConvertXMLFlags but not all hypervisors drivers agree on
this point.
---
src/qemu/qemu_domain.c | 27 ++++++++++++++-------------
src/qemu/qemu_domain.h | 4 ----
src/qemu/qemu_driver.c | 5 ++---
src/qemu/qemu_migration.c | 4 +---
src/qemu/qemu_migration_cookie.c | 1 -
5 files changed, 17 insertions(+), 24 deletions(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 50b536e..6b458c1 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -4682,6 +4682,9 @@ qemuDomainDefFormatBufInternal(virQEMUDriverPtr driver,
}
format:
+ if (flags & VIR_DOMAIN_XML_MIGRATABLE)
+ flags |= VIR_DOMAIN_XML_SECURE;
+
ret = virDomainDefFormatInternal(def, caps,
virDomainDefFormatConvertXMLFlags(flags),
buf);
@@ -4762,10 +4765,10 @@ qemuDomainDefFormatLive(virQEMUDriverPtr driver,
bool inactive,
bool compatible)
{
- unsigned int flags = QEMU_DOMAIN_FORMAT_LIVE_FLAGS;
+ unsigned int flags = VIR_DOMAIN_XML_UPDATE_CPU;
if (inactive)
- flags |= VIR_DOMAIN_XML_INACTIVE;
+ flags |= VIR_DOMAIN_XML_INACTIVE | VIR_DOMAIN_XML_SECURE;
if (compatible)
flags |= VIR_DOMAIN_XML_MIGRATABLE;
@@ -5212,8 +5215,8 @@ qemuDomainSnapshotWriteMetadata(virDomainObjPtr vm,
virUUIDFormat(vm->def->uuid, uuidstr);
newxml = virDomainSnapshotDefFormat(
uuidstr, snapshot->def, caps, xmlopt,
- virDomainDefFormatConvertXMLFlags(QEMU_DOMAIN_FORMAT_LIVE_FLAGS),
- 1);
+ virDomainDefFormatConvertXMLFlags(VIR_DOMAIN_XML_SECURE |
+ VIR_DOMAIN_XML_UPDATE_CPU), 1);
if (newxml == NULL)
return -1;
@@ -6263,9 +6266,6 @@ qemuDomainMigratableDefCheckABIStability(virQEMUDriverPtr driver,
}
-#define COPY_FLAGS (VIR_DOMAIN_XML_SECURE | \
- VIR_DOMAIN_XML_MIGRATABLE)
-
bool
qemuDomainDefCheckABIStability(virQEMUDriverPtr driver,
virDomainDefPtr src,
@@ -6275,8 +6275,10 @@ qemuDomainDefCheckABIStability(virQEMUDriverPtr driver,
virDomainDefPtr migratableDefDst = NULL;
bool ret = false;
- if (!(migratableDefSrc = qemuDomainDefCopy(driver, src, COPY_FLAGS)) ||
- !(migratableDefDst = qemuDomainDefCopy(driver, dst, COPY_FLAGS)))
+ if (!(migratableDefSrc = qemuDomainDefCopy(driver, src,
+ VIR_DOMAIN_XML_MIGRATABLE)) ||
+ !(migratableDefDst = qemuDomainDefCopy(driver, dst,
+ VIR_DOMAIN_XML_MIGRATABLE)))
goto cleanup;
ret = qemuDomainMigratableDefCheckABIStability(driver,
@@ -6300,9 +6302,10 @@ qemuDomainCheckABIStability(virQEMUDriverPtr driver,
char *xml = NULL;
bool ret = false;
- if (!(xml = qemuDomainFormatXML(driver, vm, COPY_FLAGS)) ||
+ if (!(xml = qemuDomainFormatXML(driver, vm, VIR_DOMAIN_XML_MIGRATABLE)) ||
!(migratableSrc = qemuDomainDefFromXML(driver, xml)) ||
- !(migratableDst = qemuDomainDefCopy(driver, dst, COPY_FLAGS)))
+ !(migratableDst = qemuDomainDefCopy(driver, dst,
+ VIR_DOMAIN_XML_MIGRATABLE)))
goto cleanup;
ret = qemuDomainMigratableDefCheckABIStability(driver,
@@ -6316,8 +6319,6 @@ qemuDomainCheckABIStability(virQEMUDriverPtr driver,
return ret;
}
-#undef COPY_FLAGS
-
bool
qemuDomainAgentAvailable(virDomainObjPtr vm,
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index b291dc3..7c2f91a 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -39,10 +39,6 @@
# include "virobject.h"
# include "logging/log_manager.h"
-# define QEMU_DOMAIN_FORMAT_LIVE_FLAGS \
- (VIR_DOMAIN_XML_SECURE | \
- VIR_DOMAIN_XML_UPDATE_CPU)
-
# if ULONG_MAX == 4294967295
/* QEMU has a 64-bit limit, but we are limited by our historical choice of
* representing bandwidth in a long instead of a 64-bit int. */
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 9a21995..d9dff93 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -6282,7 +6282,7 @@ qemuDomainSaveImageUpdateDef(virQEMUDriverPtr driver,
if (!(newdef_migr = qemuDomainDefCopy(driver,
newdef,
- QEMU_DOMAIN_FORMAT_LIVE_FLAGS |
+ VIR_DOMAIN_XML_UPDATE_CPU |
VIR_DOMAIN_XML_MIGRATABLE)))
goto cleanup;
@@ -6789,7 +6789,6 @@ qemuDomainSaveImageDefineXML(virConnectPtr conn, const char *path,
if (!(data->xml = qemuDomainDefFormatXML(driver, newdef,
VIR_DOMAIN_XML_INACTIVE |
- VIR_DOMAIN_XML_SECURE |
VIR_DOMAIN_XML_MIGRATABLE)))
goto cleanup;
@@ -6995,7 +6994,7 @@ static char
goto cleanup;
if ((flags & VIR_DOMAIN_XML_MIGRATABLE))
- flags |= QEMU_DOMAIN_FORMAT_LIVE_FLAGS;
+ flags |= VIR_DOMAIN_XML_UPDATE_CPU;
ret = qemuDomainFormatXML(driver, vm, flags);
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 492815b..db0b4c5 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -2575,7 +2575,6 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
int hookret;
if (!(xml = qemuDomainDefFormatXML(driver, *def,
- VIR_DOMAIN_XML_SECURE |
VIR_DOMAIN_XML_MIGRATABLE)))
goto cleanup;
@@ -3639,7 +3638,6 @@ qemuMigrationRun(virQEMUDriverPtr driver,
} else {
virDomainDefPtr def = vm->newDef ? vm->newDef : vm->def;
if (!(persistDef = qemuDomainDefCopy(driver, def,
- VIR_DOMAIN_XML_SECURE |
VIR_DOMAIN_XML_MIGRATABLE)))
goto cleanup;
}
@@ -4108,7 +4106,7 @@ static int doPeer2PeerMigrate2(virQEMUDriverPtr driver,
* and pass it to Prepare2.
*/
if (!(dom_xml = qemuDomainFormatXML(driver, vm,
- QEMU_DOMAIN_FORMAT_LIVE_FLAGS |
+ VIR_DOMAIN_XML_UPDATE_CPU |
VIR_DOMAIN_XML_MIGRATABLE)))
return -1;
diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_cookie.c
index 4914c77..38213ae 100644
--- a/src/qemu/qemu_migration_cookie.c
+++ b/src/qemu/qemu_migration_cookie.c
@@ -738,7 +738,6 @@ qemuMigrationCookieXMLFormat(virQEMUDriverPtr driver,
if (qemuDomainDefFormatBuf(driver,
mig->persistent,
VIR_DOMAIN_XML_INACTIVE |
- VIR_DOMAIN_XML_SECURE |
VIR_DOMAIN_XML_MIGRATABLE,
buf) < 0)
return -1;
--
1.8.3.1