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