[libvirt] [PATCH v6 06/13] conf: Introduce address caching for PCI extensions
Yi Min Zhao
zyimin at linux.ibm.com
Mon Oct 15 01:28:57 UTC 2018
在 2018/10/11 下午6:31, Andrea Bolognani 写道:
> On Fri, 2018-09-28 at 16:46 +0800, Yi Min Zhao wrote:
> [...]
>> +static void
>> +virDomainPCIAddressSetExtensionFree(virDomainPCIAddressSetPtr addrs)
>> +{
>> + if (!addrs || !addrs->zpciIds)
>> + return;
>> +
>> + virHashFree(addrs->zpciIds->uids);
>> + virHashFree(addrs->zpciIds->fids);
>> + VIR_FREE(addrs->zpciIds);
>> +}
> Please keep the Free() function closer to the Alloc() function.
OK.
>
> [...]
>> +int
>> +virDomainPCIAddressSetExtensionAlloc(virDomainPCIAddressSetPtr addrs,
>> + virPCIDeviceAddressExtensionFlags extFlags)
>> +{
>> + if (extFlags & VIR_PCI_ADDRESS_EXTENSION_ZPCI) {
>> + if (addrs->zpciIds)
>> + return 0;
>> +
>> + if (VIR_ALLOC(addrs->zpciIds) < 0)
>> + return -1;
>> +
>> + if (!(addrs->zpciIds->uids = virHashCreateFull(10, NULL,
>> + virZPCIAddrCode,
>> + virZPCIAddrEqual,
>> + virZPCIAddrCopy,
>> + virZPCIAddrKeyFree)))
> The function names are inconsistent here: they all deal with hash
> keys, but only the free function contains the word "key" in its
> name.
>
> Please change them like so:
>
> virZPCIAddrCode() => virZPCIAddrKeyCode()
> virZPCIAddrEqual() => virZPCIAddrKeyEqual()
> virZPCIAddrCopy() => virZPCIAddrKeyCopy()
Sure.
> [...]
>> typedef struct _virDomainPCIAddressSet virDomainPCIAddressSet;
>> typedef virDomainPCIAddressSet *virDomainPCIAddressSetPtr;
>>
>> +char *virDomainPCIAddressAsString(virPCIDeviceAddressPtr addr)
>> + ATTRIBUTE_NONNULL(1);
> This hunk is a leftover from a previous respin, please drop it.
ok.
>
> [...]
>> @@ -124,6 +124,7 @@ virDomainPCIAddressReserveAddr;
>> virDomainPCIAddressReserveNextAddr;
>> virDomainPCIAddressSetAllMulti;
>> virDomainPCIAddressSetAlloc;
>> +virDomainPCIAddressSetExtensionAlloc;
> Hm. Instead of exporting this function just so you can call it from
> qemuDomainPCIAddressSetCreate(), wouldn't it make more sense to call
> it directly from inside virDomainPCIAddressSetAlloc()?
>
> You'd have to pass virPCIDeviceAddressExtensionFlags to the latter,
> of course, but that sounds fairly sensible; the only other user,
> the bhyve driver, can just pass _NONE.
Yeah.
> [...]
>> @@ -1509,6 +1509,13 @@ qemuDomainPCIAddressSetCreate(virDomainDefPtr def,
>>
>> addrs->dryRun = dryRun;
>>
>> + /* create zpci address set for s390 domain */
>> + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_ZPCI) &&
>> + virDomainPCIAddressSetExtensionAlloc(addrs,
>> + VIR_PCI_ADDRESS_EXTENSION_ZPCI)) {
> This should be
>
> if (... &&
> virDomainPCIAddressSetExtensionAlloc(...) < 0) {
> ...
OK
>
> With all of the above addressed,
>
> Reviewed-by: Andrea Bolognani <abologna at redhat.com>
>
Thanks!
--
Yi Min
More information about the libvir-list
mailing list