From 9cec6239c182cf5aa2a1b8392b7a5e7422aa7b56 Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Wed, 6 Jan 2016 20:35:36 -0500 Subject: [PATCH] qemu: domain: split out post parse default device handling Should be a no-op --- src/qemu/qemu_domain.c | 52 +++++++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 080f508eb9..3bc27bc764 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -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);