[libvirt] [PATCH 1/4] conf: fix virDevicePCIAddressEqual args
Michal Privoznik
mprivozn at redhat.com
Fri Oct 12 13:58:48 UTC 2012
On 12.10.2012 11:58, Laine Stump wrote:
> This function really should have been taking virDevicePCIAddress*
> instead of the inefficient virDevicePCIAddress (results in copying two
> entire structs onto the stack rather than just two pointers), and
> returning a bool true/false (not matching is not necessarily a
> "failure", as a -1 return would imply, and also using "if
> (!virDevicePCIAddressEqual(x, y))" to mean "if x == y" is just a bit
> counterintuitive).
> ---
> src/conf/device_conf.c | 21 +++++++++------------
> src/conf/device_conf.h | 4 ++--
> src/network/bridge_driver.c | 8 ++++----
> 3 files changed, 15 insertions(+), 18 deletions(-)
>
> diff --git a/src/conf/device_conf.c b/src/conf/device_conf.c
> index a852960..7b97f45 100644
> --- a/src/conf/device_conf.c
> +++ b/src/conf/device_conf.c
> @@ -130,18 +130,15 @@ virDevicePCIAddressFormat(virBufferPtr buf,
> return 0;
> }
>
> -int
> -virDevicePCIAddressEqual(virDevicePCIAddress addr1,
> - virDevicePCIAddress addr2)
> +bool
> +virDevicePCIAddressEqual(virDevicePCIAddress *addr1,
> + virDevicePCIAddress *addr2)
> {
> - int ret = -1;
> -
> - if (addr1.domain == addr2.domain &&
> - addr1.bus == addr2.bus &&
> - addr1.slot == addr2.slot &&
> - addr1.function == addr2.function) {
> - ret = 0;
> + if (addr1->domain == addr2->domain &&
> + addr1->bus == addr2->bus &&
> + addr1->slot == addr2->slot &&
> + addr1->function == addr2->function) {
> + return true;
> }
> -
> - return ret;
> + return false;
> }
> diff --git a/src/conf/device_conf.h b/src/conf/device_conf.h
> index 26d5637..5318738 100644
> --- a/src/conf/device_conf.h
> +++ b/src/conf/device_conf.h
> @@ -59,8 +59,8 @@ int virDevicePCIAddressFormat(virBufferPtr buf,
> virDevicePCIAddress addr,
> bool includeTypeInAddr);
>
> -int virDevicePCIAddressEqual(virDevicePCIAddress addr1,
> - virDevicePCIAddress addr2);
> +bool virDevicePCIAddressEqual(virDevicePCIAddress *addr1,
> + virDevicePCIAddress *addr2);
>
>
> VIR_ENUM_DECL(virDeviceAddressPciMulti)
> diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
> index a41c49c..917dd34 100644
> --- a/src/network/bridge_driver.c
> +++ b/src/network/bridge_driver.c
> @@ -3820,8 +3820,8 @@ networkNotifyActualDevice(virDomainNetDefPtr iface)
> for (ii = 0; ii < netdef->nForwardIfs; ii++) {
> if (netdef->forwardIfs[ii].type
> == VIR_NETWORK_FORWARD_HOSTDEV_DEVICE_PCI &&
> - (virDevicePCIAddressEqual(hostdev->source.subsys.u.pci,
> - netdef->forwardIfs[ii].device.pci) == 0)) {
> + virDevicePCIAddressEqual(&hostdev->source.subsys.u.pci,
> + &netdef->forwardIfs[ii].device.pci)) {
> dev = &netdef->forwardIfs[ii];
> break;
> }
> @@ -3972,8 +3972,8 @@ networkReleaseActualDevice(virDomainNetDefPtr iface)
> for (ii = 0; ii < netdef->nForwardIfs; ii++) {
> if (netdef->forwardIfs[ii].type
> == VIR_NETWORK_FORWARD_HOSTDEV_DEVICE_PCI &&
> - (virDevicePCIAddressEqual(hostdev->source.subsys.u.pci,
> - netdef->forwardIfs[ii].device.pci) == 0)) {
> + virDevicePCIAddressEqual(&hostdev->source.subsys.u.pci,
> + &netdef->forwardIfs[ii].device.pci)) {
> dev = &netdef->forwardIfs[ii];
> break;
> }
>
ACK
Michal
More information about the libvir-list
mailing list