Always use appropriate qemuDomain{,Def}Format wrapper since it may do
some additional magic based on the flags.
---
src/qemu/qemu_domain.c | 32 +++++++++++++++++++++++++++-----
src/qemu/qemu_domain.h | 5 +++++
src/qemu/qemu_driver.c | 9 +++++----
src/qemu/qemu_migration.c | 22 +++++++++++++---------
src/qemu/qemu_process.c | 8 ++++----
5 files changed, 54 insertions(+), 22 deletions(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 4dda2e0..b105644 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -1223,11 +1223,13 @@ void qemuDomainObjExitRemoteWithDriver(struct qemud_driver
*driver,
}
-char *qemuDomainDefFormatXML(struct qemud_driver *driver,
- virDomainDefPtr def,
- unsigned int flags)
+int
+qemuDomainDefFormatBuf(struct qemud_driver *driver,
+ virDomainDefPtr def,
+ unsigned int flags,
+ virBuffer *buf)
{
- char *ret = NULL;
+ int ret = -1;
virCPUDefPtr cpu = NULL;
virCPUDefPtr def_cpu = def->cpu;
@@ -1247,7 +1249,7 @@ char *qemuDomainDefFormatXML(struct qemud_driver *driver,
def->cpu = cpu;
}
- ret = virDomainDefFormat(def, flags);
+ ret = virDomainDefFormatInternal(def, flags, buf);
cleanup:
def->cpu = def_cpu;
@@ -1255,6 +1257,26 @@ cleanup:
return ret;
}
+char *qemuDomainDefFormatXML(struct qemud_driver *driver,
+ virDomainDefPtr def,
+ unsigned int flags)
+{
+ virBuffer buf = VIR_BUFFER_INITIALIZER;
+
+ if (qemuDomainDefFormatBuf(driver, def, flags, &buf) < 0) {
+ virBufferFreeAndReset(&buf);
+ return NULL;
+ }
+
+ if (virBufferError(&buf)) {
+ virReportOOMError();
+ virBufferFreeAndReset(&buf);
+ return NULL;
+ }
+
+ return virBufferContentAndReset(&buf);
+}
+
char *qemuDomainFormatXML(struct qemud_driver *driver,
virDomainObjPtr vm,
unsigned int flags)
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index ce52569..0be99b1 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -249,6 +249,11 @@ void qemuDomainObjExitRemoteWithDriver(struct qemud_driver *driver,
virDomainObjPtr obj)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
+int qemuDomainDefFormatBuf(struct qemud_driver *driver,
+ virDomainDefPtr vm,
+ unsigned int flags,
+ virBuffer *buf);
+
char *qemuDomainDefFormatXML(struct qemud_driver *driver,
virDomainDefPtr vm,
unsigned int flags);
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index c100a1a..a207e33 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -4551,7 +4551,7 @@ static char *qemuDomainXMLFromNative(virConnectPtr conn,
goto cleanup;
}
- xml = virDomainDefFormat(def, VIR_DOMAIN_XML_INACTIVE);
+ xml = qemuDomainDefFormatXML(driver, def, VIR_DOMAIN_XML_INACTIVE);
cleanup:
virDomainDefFree(def);
@@ -10972,9 +10972,10 @@ static int qemuDomainRevertToSnapshot(virDomainSnapshotPtr
snapshot,
snap->def->current = true;
if (snap->def->dom) {
char *xml;
- if (!(xml = virDomainDefFormat(snap->def->dom,
- (VIR_DOMAIN_XML_INACTIVE |
- VIR_DOMAIN_XML_SECURE))))
+ if (!(xml = qemuDomainDefFormatXML(driver,
+ snap->def->dom,
+ VIR_DOMAIN_XML_INACTIVE |
+ VIR_DOMAIN_XML_SECURE)))
goto cleanup;
config = virDomainDefParseString(driver->caps, xml,
QEMU_EXPECTED_VIRT_TYPES,
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 3a420be..d03b1c6 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -390,7 +390,8 @@ static void qemuMigrationCookieGraphicsXMLFormat(virBufferPtr buf,
static int
-qemuMigrationCookieXMLFormat(virBufferPtr buf,
+qemuMigrationCookieXMLFormat(struct qemud_driver *driver,
+ virBufferPtr buf,
qemuMigrationCookiePtr mig)
{
char uuidstr[VIR_UUID_STRING_BUFLEN];
@@ -428,10 +429,11 @@ qemuMigrationCookieXMLFormat(virBufferPtr buf,
if ((mig->flags & QEMU_MIGRATION_COOKIE_PERSISTENT) &&
mig->persistent) {
virBufferAdjustIndent(buf, 2);
- if (virDomainDefFormatInternal(mig->persistent,
- VIR_DOMAIN_XML_INACTIVE |
- VIR_DOMAIN_XML_SECURE,
- buf) < 0)
+ if (qemuDomainDefFormatBuf(driver,
+ mig->persistent,
+ VIR_DOMAIN_XML_INACTIVE |
+ VIR_DOMAIN_XML_SECURE,
+ buf) < 0)
return -1;
virBufferAdjustIndent(buf, -2);
}
@@ -441,11 +443,12 @@ qemuMigrationCookieXMLFormat(virBufferPtr buf,
}
-static char *qemuMigrationCookieXMLFormatStr(qemuMigrationCookiePtr mig)
+static char *qemuMigrationCookieXMLFormatStr(struct qemud_driver *driver,
+ qemuMigrationCookiePtr mig)
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
- if (qemuMigrationCookieXMLFormat(&buf, mig) < 0) {
+ if (qemuMigrationCookieXMLFormat(driver, &buf, mig) < 0) {
virBufferFreeAndReset(&buf);
return NULL;
}
@@ -717,7 +720,7 @@ qemuMigrationBakeCookie(qemuMigrationCookiePtr mig,
qemuMigrationCookieAddPersistent(mig, dom) < 0)
return -1;
- if (!(*cookieout = qemuMigrationCookieXMLFormatStr(mig)))
+ if (!(*cookieout = qemuMigrationCookieXMLFormatStr(driver, mig)))
return -1;
*cookieoutlen = strlen(*cookieout) + 1;
@@ -1235,7 +1238,8 @@ qemuMigrationPrepareAny(struct qemud_driver *driver,
char *xml;
int hookret;
- if (!(xml = virDomainDefFormat(def, VIR_DOMAIN_XML_SECURE)))
+ if (!(xml = qemuDomainDefFormatXML(driver, def,
+ VIR_DOMAIN_XML_SECURE)))
goto cleanup;
hookret = virHookCall(VIR_HOOK_DRIVER_QEMU, def->name,
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index f1401e1..b8e0f5f 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -3322,7 +3322,7 @@ int qemuProcessStart(virConnectPtr conn,
/* Run an early hook to set-up missing devices */
if (virHookPresent(VIR_HOOK_DRIVER_QEMU)) {
- char *xml = virDomainDefFormat(vm->def, 0);
+ char *xml = qemuDomainDefFormatXML(driver, vm->def, 0);
int hookret;
hookret = virHookCall(VIR_HOOK_DRIVER_QEMU, vm->def->name,
@@ -3516,7 +3516,7 @@ int qemuProcessStart(virConnectPtr conn,
/* now that we know it is about to start call the hook if present */
if (virHookPresent(VIR_HOOK_DRIVER_QEMU)) {
- char *xml = virDomainDefFormat(vm->def, 0);
+ char *xml = qemuDomainDefFormatXML(driver, vm->def, 0);
int hookret;
hookret = virHookCall(VIR_HOOK_DRIVER_QEMU, vm->def->name,
@@ -3956,7 +3956,7 @@ void qemuProcessStop(struct qemud_driver *driver,
/* now that we know it's stopped call the hook if present */
if (virHookPresent(VIR_HOOK_DRIVER_QEMU)) {
- char *xml = virDomainDefFormat(vm->def, 0);
+ char *xml = qemuDomainDefFormatXML(driver, vm->def, 0);
/* we can't stop the operation even if the script raised an error */
virHookCall(VIR_HOOK_DRIVER_QEMU, vm->def->name,
@@ -4049,7 +4049,7 @@ retry:
/* The "release" hook cleans up additional resources */
if (virHookPresent(VIR_HOOK_DRIVER_QEMU)) {
- char *xml = virDomainDefFormat(vm->def, 0);
+ char *xml = qemuDomainDefFormatXML(driver, vm->def, 0);
/* we can't stop the operation even if the script raised an error */
virHookCall(VIR_HOOK_DRIVER_QEMU, vm->def->name,
--
1.7.8.6