]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Don't use virDomainDefFormat* directly
authorJiri Denemark <jdenemar@redhat.com>
Fri, 4 May 2012 19:00:13 +0000 (21:00 +0200)
committerCole Robinson <crobinso@redhat.com>
Thu, 14 Jun 2012 15:19:12 +0000 (11:19 -0400)
Always use appropriate qemuDomain{,Def}Format wrapper since it may do
some additional magic based on the flags.
(cherry picked from commit cd603008b1ddde1c549e6efd40fa2ea32fbc8053)

src/qemu/qemu_domain.c
src/qemu/qemu_domain.h
src/qemu/qemu_driver.c
src/qemu/qemu_migration.c
src/qemu/qemu_process.c

index 69d9e6e6dbdeac23d291a77ad3be0acd17bdc6bc..a80567168ef42bef66317fa02fd5207015a755f8 100644 (file)
@@ -1149,11 +1149,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;
 
@@ -1173,7 +1175,7 @@ char *qemuDomainDefFormatXML(struct qemud_driver *driver,
         def->cpu = cpu;
     }
 
-    ret = virDomainDefFormat(def, flags);
+    ret = virDomainDefFormatInternal(def, flags, buf);
 
 cleanup:
     def->cpu = def_cpu;
@@ -1181,6 +1183,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)
index adccfedb06336b52597fb8a6ac77a0d281e02ec8..f582dd75badbb461e899ba281c5be47fa2981171 100644 (file)
@@ -240,6 +240,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);
index 7cde099ebd144a6b4eef65bbd97b617c42fe44e9..77d3c7b4264896a61f337dc1d33dfb2d8d6be599 100644 (file)
@@ -4543,7 +4543,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);
@@ -10954,9 +10954,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,
index 8b7f7f451372cbc9dc9f6f32c07cc513855e3282..bdb1d5ac14bb2d83eabaf83849a42dac84e26897 100644 (file)
@@ -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,
index cfc7ebaef584c81295a83afe99bfc36ba0fbcea0..3a21a39b456bb9c8e0b0124f699f73339a944395 100644 (file)
@@ -3320,7 +3320,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,
@@ -3513,7 +3513,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,
@@ -3953,7 +3953,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,
@@ -4046,7 +4046,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,