
On 05/26/2017 03:14 AM, Peter Krempa wrote:
On Thu, May 25, 2017 at 15:57:01 -0400, John Ferlan wrote:
In order to ensure that whenever something is added to virNodeDevCapType that both functions are considered for processing of a new capability, change the if-then-else construct into a switch statement.
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/virnodedeviceobj.c | 80 +++++++++++++++++++++++++++++++++------------ 1 file changed, 60 insertions(+), 20 deletions(-)
diff --git a/src/conf/virnodedeviceobj.c b/src/conf/virnodedeviceobj.c index bbb6eeb..913cdda 100644 --- a/src/conf/virnodedeviceobj.c +++ b/src/conf/virnodedeviceobj.c @@ -48,19 +48,41 @@ virNodeDeviceObjHasCap(const virNodeDeviceObj *dev, while (caps) { if (STREQ(cap, virNodeDevCapTypeToString(caps->data.type))) { return 1; - } else if (caps->data.type == VIR_NODE_DEV_CAP_SCSI_HOST) { - if ((STREQ(cap, fc_host_cap) && - (caps->data.scsi_host.flags & - VIR_NODE_DEV_CAP_FLAG_HBA_FC_HOST)) || - (STREQ(cap, vports_cap) && - (caps->data.scsi_host.flags & - VIR_NODE_DEV_CAP_FLAG_HBA_VPORT_OPS))) - return 1; - } else if (caps->data.type == VIR_NODE_DEV_CAP_PCI_DEV) { - if ((STREQ(cap, mdev_types)) && - (caps->data.pci_dev.flags & - VIR_NODE_DEV_CAP_FLAG_PCI_MDEV)) - return 1; + } else { + switch (caps->data.type) { + case VIR_NODE_DEV_CAP_PCI_DEV: + if ((STREQ(cap, mdev_types)) && + (caps->data.pci_dev.flags & + VIR_NODE_DEV_CAP_FLAG_PCI_MDEV))
Since you are touching this, put this on a single line. It looks very ugly this way. It also fits into the 80 col boundary, so I don't see a reaosn for this.
For MDEV - it can fit, for SCSI_HOST, not as clean, but it could be: if ((STREQ(cap, fc_host_cap) && (caps->data.scsi_host.flags & VIR_NODE_DEV_CAP_FLAG_HBA_FC_HOST)) || (STREQ(cap, vports_cap) && (caps->data.scsi_host.flags & VIR_NODE_DEV_CAP_FLAG_HBA_VPORT_OPS))) return 1; Although I'm not sure I like the way that looks. So, as an option I could also: ... virNodeDevCapSCSIHostPtr scsi_host; ... and case VIR_NODE_DEV_CAP_SCSI_HOST: scsi_host = &caps->data.scsi_host; if ((STREQ(cap, fc_host_cap) && (scsi_host->flags & VIR_NODE_DEV_CAP_FLAG_HBA_FC_HOST)) || (STREQ(cap, vports_cap) && (scsi_host->flags & VIR_NODE_DEV_CAP_FLAG_HBA_VPORT_OPS))) return 1; and case VIR_NODE_DEV_CAP_SCSI_HOST: scsi_host = &cap->data.scsi_host; if (type == VIR_NODE_DEV_CAP_FC_HOST && (scsi_host->flags & VIR_NODE_DEV_CAP_FLAG_HBA_FC_HOST)) return true; if (type == VIR_NODE_DEV_CAP_VPORTS && (scsi_host->flags & VIR_NODE_DEV_CAP_FLAG_HBA_VPORT_OPS)) return true; But does that "violate" the too many changes at once "guideline"? John
ACK with this adjustment applied to the whole patch.