|
|
3e5111 |
From bf20b6cf07e5462c892b5e3c3d76a3c354606ea4 Mon Sep 17 00:00:00 2001
|
|
|
3e5111 |
Message-Id: <bf20b6cf07e5462c892b5e3c3d76a3c354606ea4@dist-git>
|
|
|
3e5111 |
From: Jiri Denemark <jdenemar@redhat.com>
|
|
|
3e5111 |
Date: Wed, 14 Jun 2017 13:43:37 +0200
|
|
|
3e5111 |
Subject: [PATCH] qemu: Add qemuDomainCheckABIStability
|
|
|
3e5111 |
|
|
|
3e5111 |
When making ABI stability checks for an active domain, we need to make
|
|
|
3e5111 |
sure we use the same migratable definition which virDomainGetXMLDesc
|
|
|
3e5111 |
with the MIGRATABLE flag provides, otherwise the ABI check will fail.
|
|
|
3e5111 |
This is implemented in the new qemuDomainCheckABIStability which takes a
|
|
|
3e5111 |
domain object and generates the right migratable definition from it.
|
|
|
3e5111 |
|
|
|
3e5111 |
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
|
|
3e5111 |
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
|
|
|
3e5111 |
(cherry picked from commit 063b2b8788db204d0ac2e1d367fd0c5eb9b81451)
|
|
|
3e5111 |
|
|
|
3e5111 |
https://bugzilla.redhat.com/show_bug.cgi?id=1460952
|
|
|
3e5111 |
|
|
|
3e5111 |
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
|
|
3e5111 |
---
|
|
|
3e5111 |
src/qemu/qemu_domain.c | 41 ++++++++++++++++++++++++++++++++++++-----
|
|
|
3e5111 |
src/qemu/qemu_domain.h | 4 ++++
|
|
|
3e5111 |
2 files changed, 40 insertions(+), 5 deletions(-)
|
|
|
3e5111 |
|
|
|
3e5111 |
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
|
|
|
3e5111 |
index b3dc2bc3ac..1528c6a137 100644
|
|
|
3e5111 |
--- a/src/qemu/qemu_domain.c
|
|
|
3e5111 |
+++ b/src/qemu/qemu_domain.c
|
|
|
3e5111 |
@@ -5909,6 +5909,10 @@ qemuDomainMigratableDefCheckABIStability(virQEMUDriverPtr driver,
|
|
|
3e5111 |
}
|
|
|
3e5111 |
|
|
|
3e5111 |
|
|
|
3e5111 |
+#define COPY_FLAGS (VIR_DOMAIN_XML_SECURE | \
|
|
|
3e5111 |
+ VIR_DOMAIN_XML_UPDATE_CPU | \
|
|
|
3e5111 |
+ VIR_DOMAIN_XML_MIGRATABLE)
|
|
|
3e5111 |
+
|
|
|
3e5111 |
bool
|
|
|
3e5111 |
qemuDomainDefCheckABIStability(virQEMUDriverPtr driver,
|
|
|
3e5111 |
virDomainDefPtr src,
|
|
|
3e5111 |
@@ -5916,13 +5920,10 @@ qemuDomainDefCheckABIStability(virQEMUDriverPtr driver,
|
|
|
3e5111 |
{
|
|
|
3e5111 |
virDomainDefPtr migratableDefSrc = NULL;
|
|
|
3e5111 |
virDomainDefPtr migratableDefDst = NULL;
|
|
|
3e5111 |
- const unsigned int flags = VIR_DOMAIN_XML_SECURE |
|
|
|
3e5111 |
- VIR_DOMAIN_XML_UPDATE_CPU |
|
|
|
3e5111 |
- VIR_DOMAIN_XML_MIGRATABLE;
|
|
|
3e5111 |
bool ret = false;
|
|
|
3e5111 |
|
|
|
3e5111 |
- if (!(migratableDefSrc = qemuDomainDefCopy(driver, src, flags)) ||
|
|
|
3e5111 |
- !(migratableDefDst = qemuDomainDefCopy(driver, dst, flags)))
|
|
|
3e5111 |
+ if (!(migratableDefSrc = qemuDomainDefCopy(driver, src, COPY_FLAGS)) ||
|
|
|
3e5111 |
+ !(migratableDefDst = qemuDomainDefCopy(driver, dst, COPY_FLAGS)))
|
|
|
3e5111 |
goto cleanup;
|
|
|
3e5111 |
|
|
|
3e5111 |
ret = qemuDomainMigratableDefCheckABIStability(driver,
|
|
|
3e5111 |
@@ -5935,6 +5936,36 @@ qemuDomainDefCheckABIStability(virQEMUDriverPtr driver,
|
|
|
3e5111 |
return ret;
|
|
|
3e5111 |
}
|
|
|
3e5111 |
|
|
|
3e5111 |
+
|
|
|
3e5111 |
+bool
|
|
|
3e5111 |
+qemuDomainCheckABIStability(virQEMUDriverPtr driver,
|
|
|
3e5111 |
+ virDomainObjPtr vm,
|
|
|
3e5111 |
+ virDomainDefPtr dst)
|
|
|
3e5111 |
+{
|
|
|
3e5111 |
+ virDomainDefPtr migratableSrc = NULL;
|
|
|
3e5111 |
+ virDomainDefPtr migratableDst = NULL;
|
|
|
3e5111 |
+ char *xml = NULL;
|
|
|
3e5111 |
+ bool ret = false;
|
|
|
3e5111 |
+
|
|
|
3e5111 |
+ if (!(xml = qemuDomainFormatXML(driver, vm, COPY_FLAGS)) ||
|
|
|
3e5111 |
+ !(migratableSrc = qemuDomainDefFromXML(driver, xml)) ||
|
|
|
3e5111 |
+ !(migratableDst = qemuDomainDefCopy(driver, dst, COPY_FLAGS)))
|
|
|
3e5111 |
+ goto cleanup;
|
|
|
3e5111 |
+
|
|
|
3e5111 |
+ ret = qemuDomainMigratableDefCheckABIStability(driver,
|
|
|
3e5111 |
+ vm->def, migratableSrc,
|
|
|
3e5111 |
+ dst, migratableDst);
|
|
|
3e5111 |
+
|
|
|
3e5111 |
+ cleanup:
|
|
|
3e5111 |
+ VIR_FREE(xml);
|
|
|
3e5111 |
+ virDomainDefFree(migratableSrc);
|
|
|
3e5111 |
+ virDomainDefFree(migratableDst);
|
|
|
3e5111 |
+ return ret;
|
|
|
3e5111 |
+}
|
|
|
3e5111 |
+
|
|
|
3e5111 |
+#undef COPY_FLAGS
|
|
|
3e5111 |
+
|
|
|
3e5111 |
+
|
|
|
3e5111 |
bool
|
|
|
3e5111 |
qemuDomainAgentAvailable(virDomainObjPtr vm,
|
|
|
3e5111 |
bool reportError)
|
|
|
3e5111 |
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
|
|
|
3e5111 |
index d635d2995f..7ad34e563e 100644
|
|
|
3e5111 |
--- a/src/qemu/qemu_domain.h
|
|
|
3e5111 |
+++ b/src/qemu/qemu_domain.h
|
|
|
3e5111 |
@@ -668,6 +668,10 @@ bool qemuDomainDefCheckABIStability(virQEMUDriverPtr driver,
|
|
|
3e5111 |
virDomainDefPtr src,
|
|
|
3e5111 |
virDomainDefPtr dst);
|
|
|
3e5111 |
|
|
|
3e5111 |
+bool qemuDomainCheckABIStability(virQEMUDriverPtr driver,
|
|
|
3e5111 |
+ virDomainObjPtr vm,
|
|
|
3e5111 |
+ virDomainDefPtr dst);
|
|
|
3e5111 |
+
|
|
|
3e5111 |
bool qemuDomainAgentAvailable(virDomainObjPtr vm,
|
|
|
3e5111 |
bool reportError);
|
|
|
3e5111 |
|
|
|
3e5111 |
--
|
|
|
3e5111 |
2.13.1
|
|
|
3e5111 |
|