[libvirt] [PATCH 03/15] conf: nodedev: Convert virNodeDevObjHasCapStr to a simple wrapper

Michal Privoznik mprivozn at redhat.com
Fri Jan 26 11:40:34 UTC 2018


On 01/25/2018 10:23 AM, Erik Skultety wrote:
> This patch drops the capability matching redundancy by simply converting
> the string input to our internal types which are then in turn used for
> the actual capability matching.
> 
> Signed-off-by: Erik Skultety <eskultet at redhat.com>
> ---
>  src/conf/virnodedeviceobj.c | 50 +--------------------------------------------
>  1 file changed, 1 insertion(+), 49 deletions(-)
> 
> diff --git a/src/conf/virnodedeviceobj.c b/src/conf/virnodedeviceobj.c
> index ccad59a4b..5360df805 100644
> --- a/src/conf/virnodedeviceobj.c
> +++ b/src/conf/virnodedeviceobj.c
> @@ -128,55 +128,7 @@ static bool
>  virNodeDeviceObjHasCapStr(const virNodeDeviceObj *obj,
>                            const char *cap)
>  {
> -    virNodeDevCapsDefPtr caps = obj->def->caps;
> -    const char *fc_host_cap =
> -        virNodeDevCapTypeToString(VIR_NODE_DEV_CAP_FC_HOST);
> -    const char *vports_cap =
> -        virNodeDevCapTypeToString(VIR_NODE_DEV_CAP_VPORTS);
> -    const char *mdev_types =
> -        virNodeDevCapTypeToString(VIR_NODE_DEV_CAP_MDEV_TYPES);
> -
> -    while (caps) {
> -        if (STREQ(cap, virNodeDevCapTypeToString(caps->data.type))) {
> -            return true;
> -        } 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))
> -                    return true;
> -                break;
> -
> -            case 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 true;
> -                break;
> -
> -            case VIR_NODE_DEV_CAP_SYSTEM:
> -            case VIR_NODE_DEV_CAP_USB_DEV:
> -            case VIR_NODE_DEV_CAP_USB_INTERFACE:
> -            case VIR_NODE_DEV_CAP_NET:
> -            case VIR_NODE_DEV_CAP_SCSI_TARGET:
> -            case VIR_NODE_DEV_CAP_SCSI:
> -            case VIR_NODE_DEV_CAP_STORAGE:
> -            case VIR_NODE_DEV_CAP_FC_HOST:
> -            case VIR_NODE_DEV_CAP_VPORTS:
> -            case VIR_NODE_DEV_CAP_SCSI_GENERIC:
> -            case VIR_NODE_DEV_CAP_DRM:
> -            case VIR_NODE_DEV_CAP_MDEV_TYPES:
> -            case VIR_NODE_DEV_CAP_MDEV:
> -            case VIR_NODE_DEV_CAP_CCW_DEV:
> -            case VIR_NODE_DEV_CAP_LAST:
> -                break;
> -            }
> -        }
> -
> -        caps = caps->next;
> -    }
> -    return false;
> +    return virNodeDeviceObjHasCap(obj, virNodeDevCapTypeFromString(cap));

I wonder if we should check for the TypeFromString() conversion rather
than pass it to the other function directly.

Michal




More information about the libvir-list mailing list