[libvirt] [PATCH v2 04/14] nodedev: Use switch for virNodeDeviceObjHasCap and virNodeDeviceCapMatch
Peter Krempa
pkrempa at redhat.com
Fri May 26 12:36:39 UTC 2017
On Fri, May 26, 2017 at 08:22:26 -0400, John Ferlan wrote:
>
>
> 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 at 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)))
That is WAY worse. The binary mask should be on a single line since it's
semantically connected.
Also the 80 col rule is not really strict. Especially if it hinders
readability of the code. The above suggestion is a very good example
where you'd completely destroy readability.
> return 1;
>
> Although I'm not sure I like the way that looks.
[...]
>
> But does that "violate" the too many changes at once "guideline"?
If you feel so, leave it as-is.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170526/5d4d0592/attachment-0001.sig>
More information about the libvir-list
mailing list