Message ID | 4c2c4892374e97c6d3cfc71a5ed0448629fe375e.1463255562.git.crobinso@redhat.com |
---|---|
State | New |
Headers | show |
On 05/17/2016 10:39 AM, Andrea Bolognani wrote: > On Sat, 2016-05-14 at 16:00 -0400, Cole Robinson wrote: >> This wires up qemuDomainAssignAddresses into the new >> virDomainDefAssignAddressesCallback, so it's always triggered >> via virDomainDefPostParse. We are essentially doing this already >> with open coded calls sprinkled about > > Missing period. > >> qemu argv parse output changes slightly since previously it wasn't >> hitting qemuDomainAssignAddresses. >> --- >> src/qemu/qemu_domain.c | 25 ++++++++++++++++++++++ >> .../qemuargv2xmldata/qemuargv2xml-pseries-disk.xml | 4 +++- >> tests/qemuxml2argvtest.c | 2 +- >> tests/qemuxml2xmltest.c | 11 ++-------- >> 4 files changed, 31 insertions(+), 11 deletions(-) >> >> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c >> index b0eb3b6..50505a6 100644 >> --- a/src/qemu/qemu_domain.c >> +++ b/src/qemu/qemu_domain.c >> @@ -2293,9 +2293,34 @@ qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, >> } >> >> >> +static int >> +qemuDomainDefAssignAddressesCallback(virDomainDef *def, >> + virCapsPtr caps ATTRIBUTE_UNUSED, >> + unsigned int parseFlags ATTRIBUTE_UNUSED, > > So these two arguments are unused, and they remain unused by > the end of the series... I guess you wanted to have the same > signature as virDomainDefPostParseCallback()? > > Not sure if it's worth keeping them around, but I guess it's > not a big deal either way. > I was just doing it to be consistent with the other callbacks. I just left it as is since I can imagine some day we are going to want to abide parseFlags at least. >> + void *opaque) >> +{ >> + virQEMUDriverPtr driver = opaque; >> + virQEMUCapsPtr qemuCaps = NULL; >> + int ret = -1; >> + >> + if (!(qemuCaps = virQEMUCapsCacheLookup(driver->qemuCapsCache, >> + def->emulator))) >> + goto cleanup; >> + >> + if (qemuDomainAssignAddresses(def, qemuCaps, NULL) < 0) >> + goto cleanup; >> + >> + ret = 0; >> + cleanup: >> + virObjectUnref(qemuCaps); >> + return ret; >> +} >> + >> + >> virDomainDefParserConfig virQEMUDriverDomainDefParserConfig = { >> .devicesPostParseCallback = qemuDomainDeviceDefPostParse, >> .domainPostParseCallback = qemuDomainDefPostParse, >> + .assignAddressesCallback = qemuDomainDefAssignAddressesCallback, > > I'd say call it qemuDomainDefAssignAddresses for consistency's > sake. > >> .features = VIR_DOMAIN_DEF_FEATURE_MEMORY_HOTPLUG | >> VIR_DOMAIN_DEF_FEATURE_OFFLINE_VCPUPIN >> }; >> diff --git a/tests/qemuargv2xmldata/qemuargv2xml-pseries-disk.xml b/tests/qemuargv2xmldata/qemuargv2xml-pseries- >> disk.xml >> index 8cec27c..ab9195a 100644 >> --- a/tests/qemuargv2xmldata/qemuargv2xml-pseries-disk.xml >> +++ b/tests/qemuargv2xmldata/qemuargv2xml-pseries-disk.xml >> @@ -29,7 +29,9 @@ >> </disk> >> <controller type='usb' index='0'/> >> <controller type='pci' index='0' model='pci-root'/> >> - <controller type='scsi' index='0'/> >> + <controller type='scsi' index='0'> >> + <address type='spapr-vio' reg='0x2000'/> >> + </controller> >> <input type='keyboard' bus='usb'/> >> <input type='mouse' bus='usb'/> >> <graphics type='sdl'/> >> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c >> index d1cfbec..840efc9 100644 >> --- a/tests/qemuxml2argvtest.c >> +++ b/tests/qemuxml2argvtest.c >> @@ -1382,7 +1382,7 @@ mymain(void) >> QEMU_CAPS_PCI_OHCI, QEMU_CAPS_PCI_MULTIFUNCTION); >> DO_TEST("pseries-vio-user-assigned", >> QEMU_CAPS_CHARDEV, QEMU_CAPS_NODEFCONFIG); >> - DO_TEST_FAILURE("pseries-vio-address-clash", >> + DO_TEST_PARSE_ERROR("pseries-vio-address-clash", >> QEMU_CAPS_CHARDEV, QEMU_CAPS_NODEFCONFIG); >> DO_TEST("pseries-nvram", QEMU_CAPS_DEVICE_NVRAM); >> DO_TEST("pseries-usb-kbd", QEMU_CAPS_PCI_OHCI, >> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c >> index 5a43fa9..9eb2625 100644 >> --- a/tests/qemuxml2xmltest.c >> +++ b/tests/qemuxml2xmltest.c >> @@ -37,13 +37,9 @@ struct testInfo { >> }; >> >> static int >> -qemuXML2XMLPreFormatCallback(virDomainDefPtr def, const void *opaque) >> +qemuXML2XMLPreFormatCallback(virDomainDefPtr def ATTRIBUTE_UNUSED, >> + const void *opaque ATTRIBUTE_UNUSED) >> { >> - const struct testInfo *info = opaque; >> - >> - if (qemuDomainAssignAddresses(def, info->qemuCaps, NULL)) >> - return -1; >> - >> return 0; >> } > > If you're going to remove the whole function body, why not go > the extra mile? Get rid of the function altogether and just > pass NULL to testCompareDomXML2XMLFiles(). > This callback could be used for other types of testing, like assigning aliases which we don't presently test. So I decided to leave it in. Thanks, Cole -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index b0eb3b6..50505a6 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -2293,9 +2293,34 @@ qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, } +static int +qemuDomainDefAssignAddressesCallback(virDomainDef *def, + virCapsPtr caps ATTRIBUTE_UNUSED, + unsigned int parseFlags ATTRIBUTE_UNUSED, + void *opaque) +{ + virQEMUDriverPtr driver = opaque; + virQEMUCapsPtr qemuCaps = NULL; + int ret = -1; + + if (!(qemuCaps = virQEMUCapsCacheLookup(driver->qemuCapsCache, + def->emulator))) + goto cleanup; + + if (qemuDomainAssignAddresses(def, qemuCaps, NULL) < 0) + goto cleanup; + + ret = 0; + cleanup: + virObjectUnref(qemuCaps); + return ret; +} + + virDomainDefParserConfig virQEMUDriverDomainDefParserConfig = { .devicesPostParseCallback = qemuDomainDeviceDefPostParse, .domainPostParseCallback = qemuDomainDefPostParse, + .assignAddressesCallback = qemuDomainDefAssignAddressesCallback, .features = VIR_DOMAIN_DEF_FEATURE_MEMORY_HOTPLUG | VIR_DOMAIN_DEF_FEATURE_OFFLINE_VCPUPIN }; diff --git a/tests/qemuargv2xmldata/qemuargv2xml-pseries-disk.xml b/tests/qemuargv2xmldata/qemuargv2xml-pseries-disk.xml index 8cec27c..ab9195a 100644 --- a/tests/qemuargv2xmldata/qemuargv2xml-pseries-disk.xml +++ b/tests/qemuargv2xmldata/qemuargv2xml-pseries-disk.xml @@ -29,7 +29,9 @@ </disk> <controller type='usb' index='0'/> <controller type='pci' index='0' model='pci-root'/> - <controller type='scsi' index='0'/> + <controller type='scsi' index='0'> + <address type='spapr-vio' reg='0x2000'/> + </controller> <input type='keyboard' bus='usb'/> <input type='mouse' bus='usb'/> <graphics type='sdl'/> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index d1cfbec..840efc9 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1382,7 +1382,7 @@ mymain(void) QEMU_CAPS_PCI_OHCI, QEMU_CAPS_PCI_MULTIFUNCTION); DO_TEST("pseries-vio-user-assigned", QEMU_CAPS_CHARDEV, QEMU_CAPS_NODEFCONFIG); - DO_TEST_FAILURE("pseries-vio-address-clash", + DO_TEST_PARSE_ERROR("pseries-vio-address-clash", QEMU_CAPS_CHARDEV, QEMU_CAPS_NODEFCONFIG); DO_TEST("pseries-nvram", QEMU_CAPS_DEVICE_NVRAM); DO_TEST("pseries-usb-kbd", QEMU_CAPS_PCI_OHCI, diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 5a43fa9..9eb2625 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -37,13 +37,9 @@ struct testInfo { }; static int -qemuXML2XMLPreFormatCallback(virDomainDefPtr def, const void *opaque) +qemuXML2XMLPreFormatCallback(virDomainDefPtr def ATTRIBUTE_UNUSED, + const void *opaque ATTRIBUTE_UNUSED) { - const struct testInfo *info = opaque; - - if (qemuDomainAssignAddresses(def, info->qemuCaps, NULL)) - return -1; - return 0; } @@ -153,9 +149,6 @@ testCompareStatusXMLToXMLFiles(const void *opaque) goto cleanup; } - if (qemuDomainAssignAddresses(obj->def, data->qemuCaps, NULL)) - goto cleanup; - /* format it back */ if (!(actual = virDomainObjFormat(driver.xmlopt, obj, NULL, VIR_DOMAIN_DEF_FORMAT_SECURE))) {