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(a)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.