[libvirt] [PATCH v5 09/13] conf: Allocate/release 'uid' and 'fid' in PCI address
Andrea Bolognani
abologna at redhat.com
Tue Sep 11 13:59:21 UTC 2018
On Tue, 2018-09-04 at 16:39 +0800, Yi Min Zhao wrote:
[...]
> If the user
> define zPCI extension address but zPCI capability doesn't exist, an
> error will be reported.
You're (no longer) checking for the capability here, so the commit
message should be updated accordingly.
[...]
> +bool
> +virDeviceInfoPCIAddressExtensionIsPresent(const virDomainDeviceInfo *info)
> +{
> + return info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI &&
> + !virZPCIDeviceAddressIsEmpty(&info->addr.pci.zpci);
The second line is not aligned properly.
Actually, you'll probably want to restructure this a bit so that it
only looks into info->addr.pci.zpci if the zPCI extension flag is
present, after which the comment above will likely no longer apply.
[...]
> +static int
> +virDomainZPCIAddressReserveId(virHashTablePtr set,
> + unsigned int id,
> + const char *name)
> +{
> + if (virHashLookup(set, &id)) {
> + virReportError(VIR_ERR_INTERNAL_ERROR,
> + _("zPCI %s %u is already reserved"),
> + name, id);
Please format the id as octal for easier debugging when something
goes wrong. Same below.
[...]
> +static void
> +virDomainZPCIAddressReleaseUid(virHashTablePtr set,
> + virZPCIDeviceAddressPtr addr)
> +{
> + if (virHashRemoveEntry(set, &addr->uid) < 0) {
> + virReportError(VIR_ERR_INTERNAL_ERROR,
> + _("Release uid %u failed"), addr->uid);
> + }
You should have a generic virDomainZPCIAddressReleaseId() function
that you call from ReleaseUid() and ReleaseFid(), just like you
have for reserving them.
Additionally, it looks like failure to release an id is not a
fatal error since processing continue, so you should use VIR_WARN()
or something like that instead of virReportError() when that
happens.
[...]
> +int
> +virDomainPCIAddressExtensionReserveNextAddr(virDomainPCIAddressSetPtr addrs,
> + virPCIDeviceAddressPtr dev,
> + virDomainPCIAddressExtensionFlags extFlags)
> +{
> + if ((extFlags & VIR_PCI_ADDRESS_EXTENSION_ZPCI) &&
> + virZPCIDeviceAddressIsEmpty(&dev->zpci)) {
You shouldn't need the second check: just go ahead and reserve the
next address regardless of what's currently stored in the device
info, no?
[...]
> +void
> +virDomainPCIAddressExtensionReleaseAddr(virDomainPCIAddressSetPtr addrs,
> + virPCIDeviceAddressPtr addr,
> + int extFlags)
> +{
> + if ((extFlags & VIR_PCI_ADDRESS_EXTENSION_ZPCI))
You don't need two sets of parentheses here :)
--
Andrea Bolognani / Red Hat / Virtualization
More information about the libvir-list
mailing list