]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: domain: split out post parse default device handling
authorCole Robinson <crobinso@redhat.com>
Thu, 7 Jan 2016 01:35:36 +0000 (20:35 -0500)
committerCole Robinson <crobinso@redhat.com>
Fri, 8 Jan 2016 18:25:20 +0000 (13:25 -0500)
Should be a no-op

src/qemu/qemu_domain.c

index 080f508eb9f3438d27544d54fbb92ec2904ac744..3bc27bc76491b13bc1c00ca95deb10567de4c5a4 100644 (file)
@@ -1035,12 +1035,9 @@ virDomainXMLNamespace virQEMUDriverDomainXMLNamespace = {
 
 
 static int
-qemuDomainDefPostParse(virDomainDefPtr def,
-                       virCapsPtr caps,
-                       void *opaque)
+qemuDomainDefAddDefaultDevices(virDomainDefPtr def,
+                               virQEMUCapsPtr qemuCaps)
 {
-    virQEMUDriverPtr driver = opaque;
-    virQEMUCapsPtr qemuCaps = NULL;
     bool addDefaultUSB = true;
     bool addImplicitSATA = false;
     bool addPCIRoot = false;
@@ -1051,20 +1048,6 @@ qemuDomainDefPostParse(virDomainDefPtr def,
     bool addPanicDevice = false;
     int ret = -1;
 
-    if (def->os.bootloader || def->os.bootloaderArgs) {
-        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-                       _("bootloader is not supported by QEMU"));
-        return ret;
-    }
-
-    /* check for emulator and create a default one if needed */
-    if (!def->emulator &&
-        !(def->emulator = virDomainDefGetDefaultEmulator(def, caps)))
-        return ret;
-
-
-    qemuCaps = virQEMUCapsCacheLookup(driver->qemuCapsCache, def->emulator);
-
     /* Add implicit PCI root controller if the machine has one */
     switch (def->os.arch) {
     case VIR_ARCH_I686:
@@ -1218,6 +1201,37 @@ qemuDomainDefPostParse(virDomainDefPtr def,
         }
     }
 
+    ret = 0;
+ cleanup:
+    return ret;
+}
+
+
+static int
+qemuDomainDefPostParse(virDomainDefPtr def,
+                       virCapsPtr caps,
+                       void *opaque)
+{
+    virQEMUDriverPtr driver = opaque;
+    virQEMUCapsPtr qemuCaps = NULL;
+    int ret = -1;
+
+    if (def->os.bootloader || def->os.bootloaderArgs) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                       _("bootloader is not supported by QEMU"));
+        return ret;
+    }
+
+    /* check for emulator and create a default one if needed */
+    if (!def->emulator &&
+        !(def->emulator = virDomainDefGetDefaultEmulator(def, caps)))
+        return ret;
+
+    qemuCaps = virQEMUCapsCacheLookup(driver->qemuCapsCache, def->emulator);
+
+    if (qemuDomainDefAddDefaultDevices(def, qemuCaps) < 0)
+        goto cleanup;
+
     ret = 0;
  cleanup:
     virObjectUnref(qemuCaps);