From nobody Tue Apr 30 02:37:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.39 as permitted sender) client-ip=209.132.183.39; envelope-from=libvir-list-bounces@redhat.com; helo=mx6-phx2.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.39 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx6-phx2.redhat.com (mx6-phx2.redhat.com [209.132.183.39]) by mx.zohomail.com with SMTPS id 148841466922044.80938654172746; Wed, 1 Mar 2017 16:31:09 -0800 (PST) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by mx6-phx2.redhat.com (8.14.4/8.14.4) with ESMTP id v220RKKK005768; Wed, 1 Mar 2017 19:27:21 -0500 Received: from smtp.corp.redhat.com (int-mx16.intmail.prod.int.phx2.redhat.com [10.5.11.28]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v220RJsI009998 for ; Wed, 1 Mar 2017 19:27:19 -0500 Received: by smtp.corp.redhat.com (Postfix) id E4C4872380; Thu, 2 Mar 2017 00:27:19 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-78.phx2.redhat.com [10.3.116.78]) by smtp.corp.redhat.com (Postfix) with ESMTP id 777D82D655 for ; Thu, 2 Mar 2017 00:27:19 +0000 (UTC) From: John Ferlan To: libvir-list@redhat.com Date: Wed, 1 Mar 2017 19:27:14 -0500 Message-Id: <20170302002716.21337-2-jferlan@redhat.com> In-Reply-To: <20170302002716.21337-1-jferlan@redhat.com> References: <20170302002716.21337-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.74 on 10.5.11.28 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 1/3] conf: Introduce virnodedeviceobj X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Move all the NodeDeviceObj API's into their own module virnodedeviceobj from the node_device_conf Purely code motion at this point, plus adjustments to cleanly build. Signed-off-by: John Ferlan --- po/POTFILES.in | 1 + src/Makefile.am | 3 +- src/conf/node_device_conf.c | 505 -------------------------------- src/conf/node_device_conf.h | 50 ---- src/conf/virnodedeviceobj.c | 542 +++++++++++++++++++++++++++++++= ++++ src/conf/virnodedeviceobj.h | 78 +++++ src/libvirt_private.syms | 23 +- src/node_device/node_device_driver.h | 2 +- src/test/test_driver.c | 1 + 9 files changed, 638 insertions(+), 567 deletions(-) create mode 100644 src/conf/virnodedeviceobj.c create mode 100644 src/conf/virnodedeviceobj.h diff --git a/po/POTFILES.in b/po/POTFILES.in index 9f66697..7c7f530 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -42,6 +42,7 @@ src/conf/snapshot_conf.c src/conf/storage_conf.c src/conf/virchrdev.c src/conf/virdomainobjlist.c +src/conf/virnodedeviceobj.c src/conf/virsecretobj.c src/cpu/cpu.c src/cpu/cpu_arm.c diff --git a/src/Makefile.am b/src/Makefile.am index a85cd0d..7d42eac 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -390,7 +390,8 @@ SECRET_CONF_SOURCES =3D = \ =20 # Network driver generic impl APIs NODE_DEVICE_CONF_SOURCES =3D \ - conf/node_device_conf.c conf/node_device_conf.h + conf/node_device_conf.c conf/node_device_conf.h \ + conf/virnodedeviceobj.c conf/virnodedeviceobj.h =20 CPU_CONF_SOURCES =3D \ conf/cpu_conf.c conf/cpu_conf.h diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c index 43e23fc..bc36527 100644 --- a/src/conf/node_device_conf.c +++ b/src/conf/node_device_conf.c @@ -85,170 +85,6 @@ virNodeDevCapsDefParseString(const char *xpath, return 0; } =20 -int virNodeDeviceHasCap(const virNodeDeviceObj *dev, const char *cap) -{ - virNodeDevCapsDefPtr caps =3D dev->def->caps; - const char *fc_host_cap =3D - virNodeDevCapTypeToString(VIR_NODE_DEV_CAP_FC_HOST); - const char *vports_cap =3D - virNodeDevCapTypeToString(VIR_NODE_DEV_CAP_VPORTS); - - while (caps) { - if (STREQ(cap, virNodeDevCapTypeToString(caps->data.type))) - return 1; - else if (caps->data.type =3D=3D 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; - caps =3D caps->next; - } - return 0; -} - - -/* virNodeDeviceFindFCCapDef: - * @dev: Pointer to current device - * - * Search the device object 'caps' array for fc_host capability. - * - * Returns: - * Pointer to the caps or NULL if not found - */ -static virNodeDevCapsDefPtr -virNodeDeviceFindFCCapDef(const virNodeDeviceObj *dev) -{ - virNodeDevCapsDefPtr caps =3D dev->def->caps; - - while (caps) { - if (caps->data.type =3D=3D VIR_NODE_DEV_CAP_SCSI_HOST && - (caps->data.scsi_host.flags & VIR_NODE_DEV_CAP_FLAG_HBA_FC_HOS= T)) - break; - - caps =3D caps->next; - } - return caps; -} - - -/* virNodeDeviceFindVPORTCapDef: - * @dev: Pointer to current device - * - * Search the device object 'caps' array for vport_ops capability. - * - * Returns: - * Pointer to the caps or NULL if not found - */ -static virNodeDevCapsDefPtr -virNodeDeviceFindVPORTCapDef(const virNodeDeviceObj *dev) -{ - virNodeDevCapsDefPtr caps =3D dev->def->caps; - - while (caps) { - if (caps->data.type =3D=3D VIR_NODE_DEV_CAP_SCSI_HOST && - (caps->data.scsi_host.flags & VIR_NODE_DEV_CAP_FLAG_HBA_VPORT_= OPS)) - break; - - caps =3D caps->next; - } - return caps; -} - - -virNodeDeviceObjPtr -virNodeDeviceFindBySysfsPath(virNodeDeviceObjListPtr devs, - const char *sysfs_path) -{ - size_t i; - - for (i =3D 0; i < devs->count; i++) { - virNodeDeviceObjLock(devs->objs[i]); - if ((devs->objs[i]->def->sysfs_path !=3D NULL) && - (STREQ(devs->objs[i]->def->sysfs_path, sysfs_path))) { - return devs->objs[i]; - } - virNodeDeviceObjUnlock(devs->objs[i]); - } - - return NULL; -} - - -virNodeDeviceObjPtr virNodeDeviceFindByName(virNodeDeviceObjListPtr devs, - const char *name) -{ - size_t i; - - for (i =3D 0; i < devs->count; i++) { - virNodeDeviceObjLock(devs->objs[i]); - if (STREQ(devs->objs[i]->def->name, name)) - return devs->objs[i]; - virNodeDeviceObjUnlock(devs->objs[i]); - } - - return NULL; -} - - -static virNodeDeviceObjPtr -virNodeDeviceFindByWWNs(virNodeDeviceObjListPtr devs, - const char *parent_wwnn, - const char *parent_wwpn) -{ - size_t i; - - for (i =3D 0; i < devs->count; i++) { - virNodeDevCapsDefPtr cap; - virNodeDeviceObjLock(devs->objs[i]); - if ((cap =3D virNodeDeviceFindFCCapDef(devs->objs[i])) && - STREQ_NULLABLE(cap->data.scsi_host.wwnn, parent_wwnn) && - STREQ_NULLABLE(cap->data.scsi_host.wwpn, parent_wwpn)) - return devs->objs[i]; - virNodeDeviceObjUnlock(devs->objs[i]); - } - - return NULL; -} - - -static virNodeDeviceObjPtr -virNodeDeviceFindByFabricWWN(virNodeDeviceObjListPtr devs, - const char *parent_fabric_wwn) -{ - size_t i; - - for (i =3D 0; i < devs->count; i++) { - virNodeDevCapsDefPtr cap; - virNodeDeviceObjLock(devs->objs[i]); - if ((cap =3D virNodeDeviceFindFCCapDef(devs->objs[i])) && - STREQ_NULLABLE(cap->data.scsi_host.fabric_wwn, parent_fabric_w= wn)) - return devs->objs[i]; - virNodeDeviceObjUnlock(devs->objs[i]); - } - - return NULL; -} - - -static virNodeDeviceObjPtr -virNodeDeviceFindByCap(virNodeDeviceObjListPtr devs, - const char *cap) -{ - size_t i; - - for (i =3D 0; i < devs->count; i++) { - virNodeDeviceObjLock(devs->objs[i]); - if (virNodeDeviceHasCap(devs->objs[i], cap)) - return devs->objs[i]; - virNodeDeviceObjUnlock(devs->objs[i]); - } - - return NULL; -} - =20 void virNodeDeviceDefFree(virNodeDeviceDefPtr def) { @@ -278,82 +114,6 @@ void virNodeDeviceDefFree(virNodeDeviceDefPtr def) VIR_FREE(def); } =20 -void virNodeDeviceObjFree(virNodeDeviceObjPtr dev) -{ - if (!dev) - return; - - virNodeDeviceDefFree(dev->def); - if (dev->privateFree) - (*dev->privateFree)(dev->privateData); - - virMutexDestroy(&dev->lock); - - VIR_FREE(dev); -} - -void virNodeDeviceObjListFree(virNodeDeviceObjListPtr devs) -{ - size_t i; - for (i =3D 0; i < devs->count; i++) - virNodeDeviceObjFree(devs->objs[i]); - VIR_FREE(devs->objs); - devs->count =3D 0; -} - -virNodeDeviceObjPtr virNodeDeviceAssignDef(virNodeDeviceObjListPtr devs, - virNodeDeviceDefPtr def) -{ - virNodeDeviceObjPtr device; - - if ((device =3D virNodeDeviceFindByName(devs, def->name))) { - virNodeDeviceDefFree(device->def); - device->def =3D def; - return device; - } - - if (VIR_ALLOC(device) < 0) - return NULL; - - if (virMutexInit(&device->lock) < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, - "%s", _("cannot initialize mutex")); - VIR_FREE(device); - return NULL; - } - virNodeDeviceObjLock(device); - - if (VIR_APPEND_ELEMENT_COPY(devs->objs, devs->count, device) < 0) { - virNodeDeviceObjUnlock(device); - virNodeDeviceObjFree(device); - return NULL; - } - device->def =3D def; - - return device; - -} - -void virNodeDeviceObjRemove(virNodeDeviceObjListPtr devs, - virNodeDeviceObjPtr *dev) -{ - size_t i; - - virNodeDeviceObjUnlock(*dev); - - for (i =3D 0; i < devs->count; i++) { - virNodeDeviceObjLock(*dev); - if (devs->objs[i] =3D=3D *dev) { - virNodeDeviceObjUnlock(*dev); - virNodeDeviceObjFree(devs->objs[i]); - *dev =3D NULL; - - VIR_DELETE_ELEMENT(devs->objs, i, devs->count); - break; - } - virNodeDeviceObjUnlock(*dev); - } -} =20 static void virPCIELinkFormat(virBufferPtr buf, @@ -1976,152 +1736,6 @@ virNodeDeviceGetWWNs(virNodeDeviceDefPtr def, return ret; } =20 -/* - * Return the NPIV dev's parent device name - */ -/* virNodeDeviceFindFCParentHost: - * @parent: Pointer to node device object - * - * Search the capabilities for the device to find the FC capabilities - * in order to set the parent_host value. - * - * Returns: - * parent_host value on success (>=3D 0), -1 otherwise. - */ -static int -virNodeDeviceFindFCParentHost(virNodeDeviceObjPtr parent) -{ - virNodeDevCapsDefPtr cap =3D virNodeDeviceFindVPORTCapDef(parent); - - if (!cap) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Parent device %s is not capable " - "of vport operations"), - parent->def->name); - return -1; - } - - return cap->data.scsi_host.host; -} - - -static int -virNodeDeviceGetParentHostByParent(virNodeDeviceObjListPtr devs, - const char *dev_name, - const char *parent_name) -{ - virNodeDeviceObjPtr parent =3D NULL; - int ret; - - if (!(parent =3D virNodeDeviceFindByName(devs, parent_name))) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Could not find parent device for '%s'"), - dev_name); - return -1; - } - - ret =3D virNodeDeviceFindFCParentHost(parent); - - virNodeDeviceObjUnlock(parent); - - return ret; -} - - -static int -virNodeDeviceGetParentHostByWWNs(virNodeDeviceObjListPtr devs, - const char *dev_name, - const char *parent_wwnn, - const char *parent_wwpn) -{ - virNodeDeviceObjPtr parent =3D NULL; - int ret; - - if (!(parent =3D virNodeDeviceFindByWWNs(devs, parent_wwnn, parent_wwp= n))) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Could not find parent device for '%s'"), - dev_name); - return -1; - } - - ret =3D virNodeDeviceFindFCParentHost(parent); - - virNodeDeviceObjUnlock(parent); - - return ret; -} - - -static int -virNodeDeviceGetParentHostByFabricWWN(virNodeDeviceObjListPtr devs, - const char *dev_name, - const char *parent_fabric_wwn) -{ - virNodeDeviceObjPtr parent =3D NULL; - int ret; - - if (!(parent =3D virNodeDeviceFindByFabricWWN(devs, parent_fabric_wwn)= )) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Could not find parent device for '%s'"), - dev_name); - return -1; - } - - ret =3D virNodeDeviceFindFCParentHost(parent); - - virNodeDeviceObjUnlock(parent); - - return ret; -} - - -static int -virNodeDeviceFindVportParentHost(virNodeDeviceObjListPtr devs) -{ - virNodeDeviceObjPtr parent =3D NULL; - const char *cap =3D virNodeDevCapTypeToString(VIR_NODE_DEV_CAP_VPORTS); - int ret; - - if (!(parent =3D virNodeDeviceFindByCap(devs, cap))) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("Could not find any vport capable device")); - return -1; - } - - ret =3D virNodeDeviceFindFCParentHost(parent); - - virNodeDeviceObjUnlock(parent); - - return ret; -} - - -int -virNodeDeviceGetParentHost(virNodeDeviceObjListPtr devs, - virNodeDeviceDefPtr def, - int create) -{ - int parent_host =3D -1; - - if (def->parent) { - parent_host =3D virNodeDeviceGetParentHostByParent(devs, def->name, - def->parent); - } else if (def->parent_wwnn && def->parent_wwpn) { - parent_host =3D virNodeDeviceGetParentHostByWWNs(devs, def->name, - def->parent_wwnn, - def->parent_wwpn); - } else if (def->parent_fabric_wwn) { - parent_host =3D - virNodeDeviceGetParentHostByFabricWWN(devs, def->name, - def->parent_fabric_wwn); - } else if (create =3D=3D CREATE_DEVICE) { - /* Try to find a vport capable scsi_host when no parent supplied */ - parent_host =3D virNodeDeviceFindVportParentHost(devs); - } - - return parent_host; -} - =20 void virNodeDevCapsDefFree(virNodeDevCapsDefPtr caps) { @@ -2198,125 +1812,6 @@ void virNodeDevCapsDefFree(virNodeDevCapsDefPtr cap= s) } =20 =20 -void virNodeDeviceObjLock(virNodeDeviceObjPtr obj) -{ - virMutexLock(&obj->lock); -} - -void virNodeDeviceObjUnlock(virNodeDeviceObjPtr obj) -{ - virMutexUnlock(&obj->lock); -} - -static bool -virNodeDeviceCapMatch(virNodeDeviceObjPtr devobj, - int type) -{ - virNodeDevCapsDefPtr cap =3D NULL; - - for (cap =3D devobj->def->caps; cap; cap =3D cap->next) { - if (type =3D=3D cap->data.type) - return true; - - if (cap->data.type =3D=3D VIR_NODE_DEV_CAP_SCSI_HOST) { - if (type =3D=3D VIR_NODE_DEV_CAP_FC_HOST && - (cap->data.scsi_host.flags & - VIR_NODE_DEV_CAP_FLAG_HBA_FC_HOST)) - return true; - - if (type =3D=3D VIR_NODE_DEV_CAP_VPORTS && - (cap->data.scsi_host.flags & - VIR_NODE_DEV_CAP_FLAG_HBA_VPORT_OPS)) - return true; - } - } - - return false; -} - -#define MATCH(FLAG) ((flags & (VIR_CONNECT_LIST_NODE_DEVICES_CAP_ ## FLAG)= ) && \ - virNodeDeviceCapMatch(devobj, VIR_NODE_DEV_CAP_ ## FL= AG)) -static bool -virNodeDeviceMatch(virNodeDeviceObjPtr devobj, - unsigned int flags) -{ - /* filter by cap type */ - if (flags & VIR_CONNECT_LIST_NODE_DEVICES_FILTERS_CAP) { - if (!(MATCH(SYSTEM) || - MATCH(PCI_DEV) || - MATCH(USB_DEV) || - MATCH(USB_INTERFACE) || - MATCH(NET) || - MATCH(SCSI_HOST) || - MATCH(SCSI_TARGET) || - MATCH(SCSI) || - MATCH(STORAGE) || - MATCH(FC_HOST) || - MATCH(VPORTS) || - MATCH(SCSI_GENERIC) || - MATCH(DRM))) - return false; - } - - return true; -} -#undef MATCH - -int -virNodeDeviceObjListExport(virConnectPtr conn, - virNodeDeviceObjList devobjs, - virNodeDevicePtr **devices, - virNodeDeviceObjListFilter filter, - unsigned int flags) -{ - virNodeDevicePtr *tmp_devices =3D NULL; - virNodeDevicePtr device =3D NULL; - int ndevices =3D 0; - int ret =3D -1; - size_t i; - - if (devices && VIR_ALLOC_N(tmp_devices, devobjs.count + 1) < 0) - goto cleanup; - - for (i =3D 0; i < devobjs.count; i++) { - virNodeDeviceObjPtr devobj =3D devobjs.objs[i]; - virNodeDeviceObjLock(devobj); - if ((!filter || filter(conn, devobj->def)) && - virNodeDeviceMatch(devobj, flags)) { - if (devices) { - if (!(device =3D virGetNodeDevice(conn, devobj->def->name)= ) || - VIR_STRDUP(device->parent, devobj->def->parent) < 0) { - virObjectUnref(device); - virNodeDeviceObjUnlock(devobj); - goto cleanup; - } - tmp_devices[ndevices] =3D device; - } - ndevices++; - } - virNodeDeviceObjUnlock(devobj); - } - - if (tmp_devices) { - /* trim the array to the final size */ - ignore_value(VIR_REALLOC_N(tmp_devices, ndevices + 1)); - *devices =3D tmp_devices; - tmp_devices =3D NULL; - } - - ret =3D ndevices; - - cleanup: - if (tmp_devices) { - for (i =3D 0; i < ndevices; i++) - virObjectUnref(tmp_devices[i]); - } - - VIR_FREE(tmp_devices); - return ret; -} - - /* virNodeDeviceGetParentName * @conn: Connection pointer * @nodedev_name: Node device to lookup diff --git a/src/conf/node_device_conf.h b/src/conf/node_device_conf.h index 8213c27..6c94262 100644 --- a/src/conf/node_device_conf.h +++ b/src/conf/node_device_conf.h @@ -28,10 +28,8 @@ # include "internal.h" # include "virbitmap.h" # include "virutil.h" -# include "virthread.h" # include "virpci.h" # include "device_conf.h" -# include "object_event.h" =20 # include =20 @@ -253,34 +251,6 @@ struct _virNodeDeviceObjList { virNodeDeviceObjPtr *objs; }; =20 -typedef struct _virNodeDeviceDriverState virNodeDeviceDriverState; -typedef virNodeDeviceDriverState *virNodeDeviceDriverStatePtr; -struct _virNodeDeviceDriverState { - virMutex lock; - - virNodeDeviceObjList devs; /* currently-known devices */ - void *privateData; /* driver-specific private data */ - - /* Immutable pointer, self-locking APIs */ - virObjectEventStatePtr nodeDeviceEventState; -}; - - -int virNodeDeviceHasCap(const virNodeDeviceObj *dev, const char *cap); - -virNodeDeviceObjPtr virNodeDeviceFindByName(virNodeDeviceObjListPtr devs, - const char *name); -virNodeDeviceObjPtr -virNodeDeviceFindBySysfsPath(virNodeDeviceObjListPtr devs, - const char *sysfs_path) - ATTRIBUTE_NONNULL(2); - -virNodeDeviceObjPtr virNodeDeviceAssignDef(virNodeDeviceObjListPtr devs, - virNodeDeviceDefPtr def); - -void virNodeDeviceObjRemove(virNodeDeviceObjListPtr devs, - virNodeDeviceObjPtr *dev); - char *virNodeDeviceDefFormat(const virNodeDeviceDef *def); =20 virNodeDeviceDefPtr virNodeDeviceDefParseString(const char *str, @@ -298,21 +268,10 @@ int virNodeDeviceGetWWNs(virNodeDeviceDefPtr def, char **wwnn, char **wwpn); =20 -int virNodeDeviceGetParentHost(virNodeDeviceObjListPtr devs, - virNodeDeviceDefPtr def, - int create); - void virNodeDeviceDefFree(virNodeDeviceDefPtr def); =20 -void virNodeDeviceObjFree(virNodeDeviceObjPtr dev); - -void virNodeDeviceObjListFree(virNodeDeviceObjListPtr devs); - void virNodeDevCapsDefFree(virNodeDevCapsDefPtr caps); =20 -void virNodeDeviceObjLock(virNodeDeviceObjPtr obj); -void virNodeDeviceObjUnlock(virNodeDeviceObjPtr obj); - # define VIR_CONNECT_LIST_NODE_DEVICES_FILTERS_CAP \ (VIR_CONNECT_LIST_NODE_DEVICES_CAP_SYSTEM | \ VIR_CONNECT_LIST_NODE_DEVICES_CAP_PCI_DEV | \ @@ -328,15 +287,6 @@ void virNodeDeviceObjUnlock(virNodeDeviceObjPtr obj); VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_GENERIC | \ VIR_CONNECT_LIST_NODE_DEVICES_CAP_DRM) =20 -typedef bool (*virNodeDeviceObjListFilter)(virConnectPtr conn, - virNodeDeviceDefPtr def); - -int virNodeDeviceObjListExport(virConnectPtr conn, - virNodeDeviceObjList devobjs, - virNodeDevicePtr **devices, - virNodeDeviceObjListFilter filter, - unsigned int flags); - char *virNodeDeviceGetParentName(virConnectPtr conn, const char *nodedev_name); =20 diff --git a/src/conf/virnodedeviceobj.c b/src/conf/virnodedeviceobj.c new file mode 100644 index 0000000..83f7217 --- /dev/null +++ b/src/conf/virnodedeviceobj.c @@ -0,0 +1,542 @@ +/* + * virnodedeviceobj.c: node device object handling + * (derived from node_device_conf.c) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * . + */ + +#include + +#include "datatypes.h" +#include "node_device_conf.h" + +#include "viralloc.h" +#include "virnodedeviceobj.h" +#include "virerror.h" +#include "virlog.h" +#include "virstring.h" + +#define VIR_FROM_THIS VIR_FROM_NODEDEV + +VIR_LOG_INIT("conf.virnodedeviceobj"); + + +int virNodeDeviceHasCap(const virNodeDeviceObj *dev, const char *cap) +{ + virNodeDevCapsDefPtr caps =3D dev->def->caps; + const char *fc_host_cap =3D + virNodeDevCapTypeToString(VIR_NODE_DEV_CAP_FC_HOST); + const char *vports_cap =3D + virNodeDevCapTypeToString(VIR_NODE_DEV_CAP_VPORTS); + + while (caps) { + if (STREQ(cap, virNodeDevCapTypeToString(caps->data.type))) + return 1; + else if (caps->data.type =3D=3D 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; + caps =3D caps->next; + } + return 0; +} + + +/* virNodeDeviceFindFCCapDef: + * @dev: Pointer to current device + * + * Search the device object 'caps' array for fc_host capability. + * + * Returns: + * Pointer to the caps or NULL if not found + */ +static virNodeDevCapsDefPtr +virNodeDeviceFindFCCapDef(const virNodeDeviceObj *dev) +{ + virNodeDevCapsDefPtr caps =3D dev->def->caps; + + while (caps) { + if (caps->data.type =3D=3D VIR_NODE_DEV_CAP_SCSI_HOST && + (caps->data.scsi_host.flags & VIR_NODE_DEV_CAP_FLAG_HBA_FC_HOS= T)) + break; + + caps =3D caps->next; + } + return caps; +} + + +/* virNodeDeviceFindVPORTCapDef: + * @dev: Pointer to current device + * + * Search the device object 'caps' array for vport_ops capability. + * + * Returns: + * Pointer to the caps or NULL if not found + */ +static virNodeDevCapsDefPtr +virNodeDeviceFindVPORTCapDef(const virNodeDeviceObj *dev) +{ + virNodeDevCapsDefPtr caps =3D dev->def->caps; + + while (caps) { + if (caps->data.type =3D=3D VIR_NODE_DEV_CAP_SCSI_HOST && + (caps->data.scsi_host.flags & VIR_NODE_DEV_CAP_FLAG_HBA_VPORT_= OPS)) + break; + + caps =3D caps->next; + } + return caps; +} + + +virNodeDeviceObjPtr +virNodeDeviceFindBySysfsPath(virNodeDeviceObjListPtr devs, + const char *sysfs_path) +{ + size_t i; + + for (i =3D 0; i < devs->count; i++) { + virNodeDeviceObjLock(devs->objs[i]); + if ((devs->objs[i]->def->sysfs_path !=3D NULL) && + (STREQ(devs->objs[i]->def->sysfs_path, sysfs_path))) { + return devs->objs[i]; + } + virNodeDeviceObjUnlock(devs->objs[i]); + } + + return NULL; +} + + +virNodeDeviceObjPtr virNodeDeviceFindByName(virNodeDeviceObjListPtr devs, + const char *name) +{ + size_t i; + + for (i =3D 0; i < devs->count; i++) { + virNodeDeviceObjLock(devs->objs[i]); + if (STREQ(devs->objs[i]->def->name, name)) + return devs->objs[i]; + virNodeDeviceObjUnlock(devs->objs[i]); + } + + return NULL; +} + + +static virNodeDeviceObjPtr +virNodeDeviceFindByWWNs(virNodeDeviceObjListPtr devs, + const char *parent_wwnn, + const char *parent_wwpn) +{ + size_t i; + + for (i =3D 0; i < devs->count; i++) { + virNodeDevCapsDefPtr cap; + virNodeDeviceObjLock(devs->objs[i]); + if ((cap =3D virNodeDeviceFindFCCapDef(devs->objs[i])) && + STREQ_NULLABLE(cap->data.scsi_host.wwnn, parent_wwnn) && + STREQ_NULLABLE(cap->data.scsi_host.wwpn, parent_wwpn)) + return devs->objs[i]; + virNodeDeviceObjUnlock(devs->objs[i]); + } + + return NULL; +} + + +static virNodeDeviceObjPtr +virNodeDeviceFindByFabricWWN(virNodeDeviceObjListPtr devs, + const char *parent_fabric_wwn) +{ + size_t i; + + for (i =3D 0; i < devs->count; i++) { + virNodeDevCapsDefPtr cap; + virNodeDeviceObjLock(devs->objs[i]); + if ((cap =3D virNodeDeviceFindFCCapDef(devs->objs[i])) && + STREQ_NULLABLE(cap->data.scsi_host.fabric_wwn, parent_fabric_w= wn)) + return devs->objs[i]; + virNodeDeviceObjUnlock(devs->objs[i]); + } + + return NULL; +} + + +static virNodeDeviceObjPtr +virNodeDeviceFindByCap(virNodeDeviceObjListPtr devs, + const char *cap) +{ + size_t i; + + for (i =3D 0; i < devs->count; i++) { + virNodeDeviceObjLock(devs->objs[i]); + if (virNodeDeviceHasCap(devs->objs[i], cap)) + return devs->objs[i]; + virNodeDeviceObjUnlock(devs->objs[i]); + } + + return NULL; +} + + +void virNodeDeviceObjFree(virNodeDeviceObjPtr dev) +{ + if (!dev) + return; + + virNodeDeviceDefFree(dev->def); + if (dev->privateFree) + (*dev->privateFree)(dev->privateData); + + virMutexDestroy(&dev->lock); + + VIR_FREE(dev); +} + +void virNodeDeviceObjListFree(virNodeDeviceObjListPtr devs) +{ + size_t i; + for (i =3D 0; i < devs->count; i++) + virNodeDeviceObjFree(devs->objs[i]); + VIR_FREE(devs->objs); + devs->count =3D 0; +} + +virNodeDeviceObjPtr virNodeDeviceAssignDef(virNodeDeviceObjListPtr devs, + virNodeDeviceDefPtr def) +{ + virNodeDeviceObjPtr device; + + if ((device =3D virNodeDeviceFindByName(devs, def->name))) { + virNodeDeviceDefFree(device->def); + device->def =3D def; + return device; + } + + if (VIR_ALLOC(device) < 0) + return NULL; + + if (virMutexInit(&device->lock) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + "%s", _("cannot initialize mutex")); + VIR_FREE(device); + return NULL; + } + virNodeDeviceObjLock(device); + + if (VIR_APPEND_ELEMENT_COPY(devs->objs, devs->count, device) < 0) { + virNodeDeviceObjUnlock(device); + virNodeDeviceObjFree(device); + return NULL; + } + device->def =3D def; + + return device; + +} + +void virNodeDeviceObjRemove(virNodeDeviceObjListPtr devs, + virNodeDeviceObjPtr *dev) +{ + size_t i; + + virNodeDeviceObjUnlock(*dev); + + for (i =3D 0; i < devs->count; i++) { + virNodeDeviceObjLock(*dev); + if (devs->objs[i] =3D=3D *dev) { + virNodeDeviceObjUnlock(*dev); + virNodeDeviceObjFree(devs->objs[i]); + *dev =3D NULL; + + VIR_DELETE_ELEMENT(devs->objs, i, devs->count); + break; + } + virNodeDeviceObjUnlock(*dev); + } +} + + +/* + * Return the NPIV dev's parent device name + */ +/* virNodeDeviceFindFCParentHost: + * @parent: Pointer to node device object + * + * Search the capabilities for the device to find the FC capabilities + * in order to set the parent_host value. + * + * Returns: + * parent_host value on success (>=3D 0), -1 otherwise. + */ +static int +virNodeDeviceFindFCParentHost(virNodeDeviceObjPtr parent) +{ + virNodeDevCapsDefPtr cap =3D virNodeDeviceFindVPORTCapDef(parent); + + if (!cap) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Parent device %s is not capable " + "of vport operations"), + parent->def->name); + return -1; + } + + return cap->data.scsi_host.host; +} + + +static int +virNodeDeviceGetParentHostByParent(virNodeDeviceObjListPtr devs, + const char *dev_name, + const char *parent_name) +{ + virNodeDeviceObjPtr parent =3D NULL; + int ret; + + if (!(parent =3D virNodeDeviceFindByName(devs, parent_name))) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Could not find parent device for '%s'"), + dev_name); + return -1; + } + + ret =3D virNodeDeviceFindFCParentHost(parent); + + virNodeDeviceObjUnlock(parent); + + return ret; +} + + +static int +virNodeDeviceGetParentHostByWWNs(virNodeDeviceObjListPtr devs, + const char *dev_name, + const char *parent_wwnn, + const char *parent_wwpn) +{ + virNodeDeviceObjPtr parent =3D NULL; + int ret; + + if (!(parent =3D virNodeDeviceFindByWWNs(devs, parent_wwnn, parent_wwp= n))) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Could not find parent device for '%s'"), + dev_name); + return -1; + } + + ret =3D virNodeDeviceFindFCParentHost(parent); + + virNodeDeviceObjUnlock(parent); + + return ret; +} + + +static int +virNodeDeviceGetParentHostByFabricWWN(virNodeDeviceObjListPtr devs, + const char *dev_name, + const char *parent_fabric_wwn) +{ + virNodeDeviceObjPtr parent =3D NULL; + int ret; + + if (!(parent =3D virNodeDeviceFindByFabricWWN(devs, parent_fabric_wwn)= )) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Could not find parent device for '%s'"), + dev_name); + return -1; + } + + ret =3D virNodeDeviceFindFCParentHost(parent); + + virNodeDeviceObjUnlock(parent); + + return ret; +} + + +static int +virNodeDeviceFindVportParentHost(virNodeDeviceObjListPtr devs) +{ + virNodeDeviceObjPtr parent =3D NULL; + const char *cap =3D virNodeDevCapTypeToString(VIR_NODE_DEV_CAP_VPORTS); + int ret; + + if (!(parent =3D virNodeDeviceFindByCap(devs, cap))) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Could not find any vport capable device")); + return -1; + } + + ret =3D virNodeDeviceFindFCParentHost(parent); + + virNodeDeviceObjUnlock(parent); + + return ret; +} + + +int +virNodeDeviceGetParentHost(virNodeDeviceObjListPtr devs, + virNodeDeviceDefPtr def, + int create) +{ + int parent_host =3D -1; + + if (def->parent) { + parent_host =3D virNodeDeviceGetParentHostByParent(devs, def->name, + def->parent); + } else if (def->parent_wwnn && def->parent_wwpn) { + parent_host =3D virNodeDeviceGetParentHostByWWNs(devs, def->name, + def->parent_wwnn, + def->parent_wwpn); + } else if (def->parent_fabric_wwn) { + parent_host =3D + virNodeDeviceGetParentHostByFabricWWN(devs, def->name, + def->parent_fabric_wwn); + } else if (create =3D=3D CREATE_DEVICE) { + /* Try to find a vport capable scsi_host when no parent supplied */ + parent_host =3D virNodeDeviceFindVportParentHost(devs); + } + + return parent_host; +} + + +void virNodeDeviceObjLock(virNodeDeviceObjPtr obj) +{ + virMutexLock(&obj->lock); +} + +void virNodeDeviceObjUnlock(virNodeDeviceObjPtr obj) +{ + virMutexUnlock(&obj->lock); +} + +static bool +virNodeDeviceCapMatch(virNodeDeviceObjPtr devobj, + int type) +{ + virNodeDevCapsDefPtr cap =3D NULL; + + for (cap =3D devobj->def->caps; cap; cap =3D cap->next) { + if (type =3D=3D cap->data.type) + return true; + + if (cap->data.type =3D=3D VIR_NODE_DEV_CAP_SCSI_HOST) { + if (type =3D=3D VIR_NODE_DEV_CAP_FC_HOST && + (cap->data.scsi_host.flags & + VIR_NODE_DEV_CAP_FLAG_HBA_FC_HOST)) + return true; + + if (type =3D=3D VIR_NODE_DEV_CAP_VPORTS && + (cap->data.scsi_host.flags & + VIR_NODE_DEV_CAP_FLAG_HBA_VPORT_OPS)) + return true; + } + } + + return false; +} + +#define MATCH(FLAG) ((flags & (VIR_CONNECT_LIST_NODE_DEVICES_CAP_ ## FLAG)= ) && \ + virNodeDeviceCapMatch(devobj, VIR_NODE_DEV_CAP_ ## FL= AG)) +static bool +virNodeDeviceMatch(virNodeDeviceObjPtr devobj, + unsigned int flags) +{ + /* filter by cap type */ + if (flags & VIR_CONNECT_LIST_NODE_DEVICES_FILTERS_CAP) { + if (!(MATCH(SYSTEM) || + MATCH(PCI_DEV) || + MATCH(USB_DEV) || + MATCH(USB_INTERFACE) || + MATCH(NET) || + MATCH(SCSI_HOST) || + MATCH(SCSI_TARGET) || + MATCH(SCSI) || + MATCH(STORAGE) || + MATCH(FC_HOST) || + MATCH(VPORTS) || + MATCH(SCSI_GENERIC) || + MATCH(DRM))) + return false; + } + + return true; +} +#undef MATCH + +int +virNodeDeviceObjListExport(virConnectPtr conn, + virNodeDeviceObjList devobjs, + virNodeDevicePtr **devices, + virNodeDeviceObjListFilter filter, + unsigned int flags) +{ + virNodeDevicePtr *tmp_devices =3D NULL; + virNodeDevicePtr device =3D NULL; + int ndevices =3D 0; + int ret =3D -1; + size_t i; + + if (devices && VIR_ALLOC_N(tmp_devices, devobjs.count + 1) < 0) + goto cleanup; + + for (i =3D 0; i < devobjs.count; i++) { + virNodeDeviceObjPtr devobj =3D devobjs.objs[i]; + virNodeDeviceObjLock(devobj); + if ((!filter || filter(conn, devobj->def)) && + virNodeDeviceMatch(devobj, flags)) { + if (devices) { + if (!(device =3D virGetNodeDevice(conn, devobj->def->name)= ) || + VIR_STRDUP(device->parent, devobj->def->parent) < 0) { + virObjectUnref(device); + virNodeDeviceObjUnlock(devobj); + goto cleanup; + } + tmp_devices[ndevices] =3D device; + } + ndevices++; + } + virNodeDeviceObjUnlock(devobj); + } + + if (tmp_devices) { + /* trim the array to the final size */ + ignore_value(VIR_REALLOC_N(tmp_devices, ndevices + 1)); + *devices =3D tmp_devices; + tmp_devices =3D NULL; + } + + ret =3D ndevices; + + cleanup: + if (tmp_devices) { + for (i =3D 0; i < ndevices; i++) + virObjectUnref(tmp_devices[i]); + } + + VIR_FREE(tmp_devices); + return ret; +} diff --git a/src/conf/virnodedeviceobj.h b/src/conf/virnodedeviceobj.h new file mode 100644 index 0000000..6ad7fb1 --- /dev/null +++ b/src/conf/virnodedeviceobj.h @@ -0,0 +1,78 @@ +/* + * virnodedeviceobj.h: node device object handling for node devices + * (derived from node_device_conf.h) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * . + */ + +#ifndef __VIRNODEDEVICEOBJ_H__ +# define __VIRNODEDEVICEOBJ_H__ + +# include "internal.h" +# include "virthread.h" + +# include "node_device_conf.h" +# include "object_event.h" + + +typedef struct _virNodeDeviceDriverState virNodeDeviceDriverState; +typedef virNodeDeviceDriverState *virNodeDeviceDriverStatePtr; +struct _virNodeDeviceDriverState { + virMutex lock; + + virNodeDeviceObjList devs; /* currently-known devices */ + void *privateData; /* driver-specific private data */ + + /* Immutable pointer, self-locking APIs */ + virObjectEventStatePtr nodeDeviceEventState; +}; + + +int virNodeDeviceHasCap(const virNodeDeviceObj *dev, const char *cap); + +virNodeDeviceObjPtr virNodeDeviceFindByName(virNodeDeviceObjListPtr devs, + const char *name); +virNodeDeviceObjPtr +virNodeDeviceFindBySysfsPath(virNodeDeviceObjListPtr devs, + const char *sysfs_path) + ATTRIBUTE_NONNULL(2); + +virNodeDeviceObjPtr virNodeDeviceAssignDef(virNodeDeviceObjListPtr devs, + virNodeDeviceDefPtr def); + +void virNodeDeviceObjRemove(virNodeDeviceObjListPtr devs, + virNodeDeviceObjPtr *dev); + +int virNodeDeviceGetParentHost(virNodeDeviceObjListPtr devs, + virNodeDeviceDefPtr def, + int create); + +void virNodeDeviceObjFree(virNodeDeviceObjPtr dev); + +void virNodeDeviceObjListFree(virNodeDeviceObjListPtr devs); + +void virNodeDeviceObjLock(virNodeDeviceObjPtr obj); +void virNodeDeviceObjUnlock(virNodeDeviceObjPtr obj); + +typedef bool (*virNodeDeviceObjListFilter)(virConnectPtr conn, + virNodeDeviceDefPtr def); + +int virNodeDeviceObjListExport(virConnectPtr conn, + virNodeDeviceObjList devobjs, + virNodeDevicePtr **devices, + virNodeDeviceObjListFilter filter, + unsigned int flags); + +#endif /* __VIRNODEDEVICEOBJ_H__ */ diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index bce0487..8639979 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -694,23 +694,13 @@ virNetDevIPRouteParseXML; virNodeDevCapsDefFree; virNodeDevCapTypeFromString; virNodeDevCapTypeToString; -virNodeDeviceAssignDef; virNodeDeviceDefFormat; virNodeDeviceDefFree; virNodeDeviceDefParseFile; virNodeDeviceDefParseNode; virNodeDeviceDefParseString; -virNodeDeviceFindByName; -virNodeDeviceFindBySysfsPath; -virNodeDeviceGetParentHost; virNodeDeviceGetParentName; virNodeDeviceGetWWNs; -virNodeDeviceHasCap; -virNodeDeviceObjListExport; -virNodeDeviceObjListFree; -virNodeDeviceObjLock; -virNodeDeviceObjRemove; -virNodeDeviceObjUnlock; =20 =20 # conf/node_device_event.h @@ -958,6 +948,19 @@ virDomainObjListRemoveLocked; virDomainObjListRename; =20 =20 +# conf/virnodedeviceobj.h +virNodeDeviceAssignDef; +virNodeDeviceFindByName; +virNodeDeviceFindBySysfsPath; +virNodeDeviceGetParentHost; +virNodeDeviceHasCap; +virNodeDeviceObjListExport; +virNodeDeviceObjListFree; +virNodeDeviceObjLock; +virNodeDeviceObjRemove; +virNodeDeviceObjUnlock; + + # conf/virsecretobj.h virSecretLoadAllConfigs; virSecretObjDeleteConfig; diff --git a/src/node_device/node_device_driver.h b/src/node_device/node_de= vice_driver.h index 56f89ab..bc8af8a 100644 --- a/src/node_device/node_device_driver.h +++ b/src/node_device/node_device_driver.h @@ -26,7 +26,7 @@ =20 # include "internal.h" # include "driver.h" -# include "node_device_conf.h" +# include "virnodedeviceobj.h" =20 # define LINUX_NEW_DEVICE_WAIT_TIME 60 =20 diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 314f08c..c6214c6 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -51,6 +51,7 @@ #include "storage_conf.h" #include "storage_event.h" #include "node_device_conf.h" +#include "virnodedeviceobj.h" #include "node_device_event.h" #include "virxml.h" #include "virthread.h" --=20 2.9.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:37:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.37 as permitted sender) client-ip=209.132.183.37; envelope-from=libvir-list-bounces@redhat.com; helo=mx5-phx2.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.37 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx5-phx2.redhat.com (mx5-phx2.redhat.com [209.132.183.37]) by mx.zohomail.com with SMTPS id 1488414705602317.34755151321303; Wed, 1 Mar 2017 16:31:45 -0800 (PST) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by mx5-phx2.redhat.com (8.14.4/8.14.4) with ESMTP id v220SEke062273; Wed, 1 Mar 2017 19:28:14 -0500 Received: from smtp.corp.redhat.com (int-mx16.intmail.prod.int.phx2.redhat.com [10.5.11.28]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v220RK76010008 for ; Wed, 1 Mar 2017 19:27:20 -0500 Received: by smtp.corp.redhat.com (Postfix) id 6D2BB72380; Thu, 2 Mar 2017 00:27:20 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-78.phx2.redhat.com [10.3.116.78]) by smtp.corp.redhat.com (Postfix) with ESMTP id 176A72D655 for ; Thu, 2 Mar 2017 00:27:20 +0000 (UTC) From: John Ferlan To: libvir-list@redhat.com Date: Wed, 1 Mar 2017 19:27:15 -0500 Message-Id: <20170302002716.21337-3-jferlan@redhat.com> In-Reply-To: <20170302002716.21337-1-jferlan@redhat.com> References: <20170302002716.21337-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.74 on 10.5.11.28 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 2/3] conf: Clean up nodedev code X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Alter the static functions from virNodeDev* to just nodeDev* as a visual cue to determine which are local or not when reading code. Cleanup spacing between functions, function defs, etc. to match more modern techniques used in libvirt Signed-off-by: John Ferlan --- src/conf/node_device_conf.c | 476 +++++++++++++++++++++++-----------------= ---- src/conf/virnodedeviceobj.c | 128 ++++++------ 2 files changed, 322 insertions(+), 282 deletions(-) diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c index bc36527..09e815a 100644 --- a/src/conf/node_device_conf.c +++ b/src/conf/node_device_conf.c @@ -72,9 +72,9 @@ VIR_ENUM_IMPL(virNodeDevDRM, VIR_NODE_DEV_DRM_LAST, "render") =20 static int -virNodeDevCapsDefParseString(const char *xpath, - xmlXPathContextPtr ctxt, - char **string) +nodeDevCapsDefParseString(const char *xpath, + xmlXPathContextPtr ctxt, + char **string) { char *s; =20 @@ -86,7 +86,8 @@ virNodeDevCapsDefParseString(const char *xpath, } =20 =20 -void virNodeDeviceDefFree(virNodeDeviceDefPtr def) +void +virNodeDeviceDefFree(virNodeDeviceDefPtr def) { virNodeDevCapsDefPtr caps; =20 @@ -116,9 +117,9 @@ void virNodeDeviceDefFree(virNodeDeviceDefPtr def) =20 =20 static void -virPCIELinkFormat(virBufferPtr buf, - virPCIELinkPtr lnk, - const char *attrib) +nodeDevPCIELinkFormat(virBufferPtr buf, + virPCIELinkPtr lnk, + const char *attrib) { if (!lnk) return; @@ -133,9 +134,10 @@ virPCIELinkFormat(virBufferPtr buf, virBufferAddLit(buf, "/>\n"); } =20 + static void -virPCIEDeviceInfoFormat(virBufferPtr buf, - virPCIEDeviceInfoPtr info) +nodeDevPCIEDeviceInfoFormat(virBufferPtr buf, + virPCIEDeviceInfoPtr info) { if (!info->link_cap && !info->link_sta) { virBufferAddLit(buf, "\n"); @@ -145,14 +147,16 @@ virPCIEDeviceInfoFormat(virBufferPtr buf, virBufferAddLit(buf, "\n"); virBufferAdjustIndent(buf, 2); =20 - virPCIELinkFormat(buf, info->link_cap, "cap"); - virPCIELinkFormat(buf, info->link_sta, "sta"); + nodeDevPCIELinkFormat(buf, info->link_cap, "cap"); + nodeDevPCIELinkFormat(buf, info->link_sta, "sta"); =20 virBufferAdjustIndent(buf, -2); virBufferAddLit(buf, "\n"); } =20 -char *virNodeDeviceDefFormat(const virNodeDeviceDef *def) + +char * +virNodeDeviceDefFormat(const virNodeDeviceDef *def) { virBuffer buf =3D VIR_BUFFER_INITIALIZER; virNodeDevCapsDefPtr caps; @@ -305,7 +309,7 @@ char *virNodeDeviceDefFormat(const virNodeDeviceDef *de= f) data->pci_dev.numa_node); =20 if (data->pci_dev.flags & VIR_NODE_DEV_CAP_FLAG_PCIE) - virPCIEDeviceInfoFormat(&buf, data->pci_dev.pci_express); + nodeDevPCIEDeviceInfoFormat(&buf, data->pci_dev.pci_expres= s); break; case VIR_NODE_DEV_CAP_USB_DEV: virBufferAsprintf(&buf, "%d\n", data->usb_dev.bus); @@ -489,8 +493,9 @@ char *virNodeDeviceDefFormat(const virNodeDeviceDef *de= f) return virBufferContentAndReset(&buf); } =20 + /** - * virNodeDevCapsDefParseIntOptional: + * nodeDevCapsDefParseIntOptional: * @xpath: XPath to evaluate * @ctxt: Context * @value: Where to store parsed value @@ -502,11 +507,11 @@ char *virNodeDeviceDefFormat(const virNodeDeviceDef *= def) * 1 on success */ static int -virNodeDevCapsDefParseIntOptional(const char *xpath, - xmlXPathContextPtr ctxt, - int *value, - virNodeDeviceDefPtr def, - const char *invalid_error_fmt) +nodeDevCapsDefParseIntOptional(const char *xpath, + xmlXPathContextPtr ctxt, + int *value, + virNodeDeviceDefPtr def, + const char *invalid_error_fmt) { int ret; int val; @@ -524,13 +529,14 @@ virNodeDevCapsDefParseIntOptional(const char *xpath, return 1; } =20 + static int -virNodeDevCapsDefParseULong(const char *xpath, - xmlXPathContextPtr ctxt, - unsigned *value, - virNodeDeviceDefPtr def, - const char *missing_error_fmt, - const char *invalid_error_fmt) +nodeDevCapsDefParseULong(const char *xpath, + xmlXPathContextPtr ctxt, + unsigned *value, + virNodeDeviceDefPtr def, + const char *missing_error_fmt, + const char *invalid_error_fmt) { int ret; unsigned long val; @@ -547,13 +553,14 @@ virNodeDevCapsDefParseULong(const char *xpath, return 0; } =20 + static int -virNodeDevCapsDefParseULongLong(const char *xpath, - xmlXPathContextPtr ctxt, - unsigned long long *value, - virNodeDeviceDefPtr def, - const char *missing_error_fmt, - const char *invalid_error_fmt) +nodeDevCapsDefParseULongLong(const char *xpath, + xmlXPathContextPtr ctxt, + unsigned long long *value, + virNodeDeviceDefPtr def, + const char *missing_error_fmt, + const char *invalid_error_fmt) { int ret; unsigned long long val; @@ -570,11 +577,12 @@ virNodeDevCapsDefParseULongLong(const char *xpath, return 0; } =20 + static int -virNodeDevCapDRMParseXML(xmlXPathContextPtr ctxt, - virNodeDeviceDefPtr def, - xmlNodePtr node, - virNodeDevCapDataPtr data) +nodeDevCapDRMParseXML(xmlXPathContextPtr ctxt, + virNodeDeviceDefPtr def, + xmlNodePtr node, + virNodeDevCapDataPtr data) { xmlNodePtr orignode; int ret =3D -1, val; @@ -600,11 +608,12 @@ virNodeDevCapDRMParseXML(xmlXPathContextPtr ctxt, return ret; } =20 + static int -virNodeDevCapStorageParseXML(xmlXPathContextPtr ctxt, - virNodeDeviceDefPtr def, - xmlNodePtr node, - virNodeDevCapDataPtr data) +nodeDevCapStorageParseXML(xmlXPathContextPtr ctxt, + virNodeDeviceDefPtr def, + xmlNodePtr node, + virNodeDevCapDataPtr data) { xmlNodePtr orignode, *nodes =3D NULL; size_t i; @@ -657,9 +666,9 @@ virNodeDevCapStorageParseXML(xmlXPathContextPtr ctxt, data->storage.media_label =3D virXPathString("string(./media_l= abel[1])", ctxt); =20 val =3D 0; - if (virNodeDevCapsDefParseULongLong("number(./media_size[1])",= ctxt, &val, def, - _("no removable media size= supplied for '%s'"), - _("invalid removable media= size supplied for '%s'")) < 0) { + if (nodeDevCapsDefParseULongLong("number(./media_size[1])", ct= xt, &val, def, + _("no removable media size su= pplied for '%s'"), + _("invalid removable media si= ze supplied for '%s'")) < 0) { ctxt->node =3D orignode2; VIR_FREE(type); goto out; @@ -680,9 +689,9 @@ virNodeDevCapStorageParseXML(xmlXPathContextPtr ctxt, =20 if (!(data->storage.flags & VIR_NODE_DEV_CAP_STORAGE_REMOVABLE)) { val =3D 0; - if (virNodeDevCapsDefParseULongLong("number(./size[1])", ctxt, &va= l, def, - _("no size supplied for '%s'"), - _("invalid size supplied for '= %s'")) < 0) + if (nodeDevCapsDefParseULongLong("number(./size[1])", ctxt, &val, = def, + _("no size supplied for '%s'"), + _("invalid size supplied for '%s'= ")) < 0) goto out; data->storage.size =3D val; } @@ -694,11 +703,12 @@ virNodeDevCapStorageParseXML(xmlXPathContextPtr ctxt, return ret; } =20 + static int -virNodeDevCapSCSIParseXML(xmlXPathContextPtr ctxt, - virNodeDeviceDefPtr def, - xmlNodePtr node, - virNodeDevCapDataPtr data) +nodeDevCapSCSIParseXML(xmlXPathContextPtr ctxt, + virNodeDeviceDefPtr def, + xmlNodePtr node, + virNodeDevCapDataPtr data) { xmlNodePtr orignode; int ret =3D -1; @@ -706,28 +716,28 @@ virNodeDevCapSCSIParseXML(xmlXPathContextPtr ctxt, orignode =3D ctxt->node; ctxt->node =3D node; =20 - if (virNodeDevCapsDefParseULong("number(./host[1])", ctxt, - &data->scsi.host, def, - _("no SCSI host ID supplied for '%s'"), - _("invalid SCSI host ID supplied for '= %s'")) < 0) + if (nodeDevCapsDefParseULong("number(./host[1])", ctxt, + &data->scsi.host, def, + _("no SCSI host ID supplied for '%s'"), + _("invalid SCSI host ID supplied for '%s'= ")) < 0) goto out; =20 - if (virNodeDevCapsDefParseULong("number(./bus[1])", ctxt, - &data->scsi.bus, def, - _("no SCSI bus ID supplied for '%s'"), - _("invalid SCSI bus ID supplied for '%= s'")) < 0) + if (nodeDevCapsDefParseULong("number(./bus[1])", ctxt, + &data->scsi.bus, def, + _("no SCSI bus ID supplied for '%s'"), + _("invalid SCSI bus ID supplied for '%s'"= )) < 0) goto out; =20 - if (virNodeDevCapsDefParseULong("number(./target[1])", ctxt, - &data->scsi.target, def, - _("no SCSI target ID supplied for '%s'= "), + if (nodeDevCapsDefParseULong("number(./target[1])", ctxt, + &data->scsi.target, def, + _("no SCSI target ID supplied for '%s'"), _("invalid SCSI target ID supplied for= '%s'")) < 0) goto out; =20 - if (virNodeDevCapsDefParseULong("number(./lun[1])", ctxt, - &data->scsi.lun, def, - _("no SCSI LUN ID supplied for '%s'"), - _("invalid SCSI LUN ID supplied for '%= s'")) < 0) + if (nodeDevCapsDefParseULong("number(./lun[1])", ctxt, + &data->scsi.lun, def, + _("no SCSI LUN ID supplied for '%s'"), + _("invalid SCSI LUN ID supplied for '%s'"= )) < 0) goto out; =20 data->scsi.type =3D virXPathString("string(./type[1])", ctxt); @@ -740,10 +750,10 @@ virNodeDevCapSCSIParseXML(xmlXPathContextPtr ctxt, =20 =20 static int -virNodeDevCapSCSITargetParseXML(xmlXPathContextPtr ctxt, - virNodeDeviceDefPtr def, - xmlNodePtr node, - virNodeDevCapDataPtr data) +nodeDevCapSCSITargetParseXML(xmlXPathContextPtr ctxt, + virNodeDeviceDefPtr def, + xmlNodePtr node, + virNodeDevCapDataPtr data) { xmlNodePtr orignode; int ret =3D -1; @@ -768,12 +778,12 @@ virNodeDevCapSCSITargetParseXML(xmlXPathContextPtr ct= xt, =20 =20 static int -virNodeDevCapSCSIHostParseXML(xmlXPathContextPtr ctxt, - virNodeDeviceDefPtr def, - xmlNodePtr node, - virNodeDevCapDataPtr data, - int create, - const char *virt_type) +nodeDevCapSCSIHostParseXML(xmlXPathContextPtr ctxt, + virNodeDeviceDefPtr def, + xmlNodePtr node, + virNodeDevCapDataPtr data, + int create, + const char *virt_type) { xmlNodePtr orignode, *nodes =3D NULL; int ret =3D -1, n =3D 0; @@ -784,17 +794,17 @@ virNodeDevCapSCSIHostParseXML(xmlXPathContextPtr ctxt, ctxt->node =3D node; =20 if (create =3D=3D EXISTING_DEVICE) { - if (virNodeDevCapsDefParseULong("number(./host[1])", ctxt, - &data->scsi_host.host, def, - _("no SCSI host ID supplied for '%= s'"), - _("invalid SCSI host ID supplied f= or '%s'")) < 0) { + if (nodeDevCapsDefParseULong("number(./host[1])", ctxt, + &data->scsi_host.host, def, + _("no SCSI host ID supplied for '%s'"= ), + _("invalid SCSI host ID supplied for = '%s'")) < 0) { goto out; } /* Optional unique_id value */ data->scsi_host.unique_id =3D -1; - if (virNodeDevCapsDefParseIntOptional("number(./unique_id[1])", ct= xt, - &data->scsi_host.unique_id, = def, - _("invalid unique_id supplie= d for '%s'")) < 0) { + if (nodeDevCapsDefParseIntOptional("number(./unique_id[1])", ctxt, + &data->scsi_host.unique_id, def, + _("invalid unique_id supplied f= or '%s'")) < 0) { goto out; } } @@ -825,9 +835,9 @@ virNodeDevCapSCSIHostParseXML(xmlXPathContextPtr ctxt, orignode2 =3D ctxt->node; ctxt->node =3D nodes[i]; =20 - if (virNodeDevCapsDefParseString("string(./wwnn[1])", - ctxt, - &data->scsi_host.wwnn) < 0) { + if (nodeDevCapsDefParseString("string(./wwnn[1])", + ctxt, + &data->scsi_host.wwnn) < 0) { if (virRandomGenerateWWN(&data->scsi_host.wwnn, virt_type)= < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("no WWNN supplied for '%s', and " @@ -837,9 +847,9 @@ virNodeDevCapSCSIHostParseXML(xmlXPathContextPtr ctxt, } } =20 - if (virNodeDevCapsDefParseString("string(./wwpn[1])", - ctxt, - &data->scsi_host.wwpn) < 0) { + if (nodeDevCapsDefParseString("string(./wwpn[1])", + ctxt, + &data->scsi_host.wwpn) < 0) { if (virRandomGenerateWWN(&data->scsi_host.wwpn, virt_type)= < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("no WWPN supplied for '%s', and " @@ -849,9 +859,9 @@ virNodeDevCapSCSIHostParseXML(xmlXPathContextPtr ctxt, } } =20 - if (virNodeDevCapsDefParseString("string(./fabric_wwn[1])", - ctxt, - &data->scsi_host.fabric_wwn) = < 0) + if (nodeDevCapsDefParseString("string(./fabric_wwn[1])", + ctxt, + &data->scsi_host.fabric_wwn) < 0) VIR_DEBUG("No fabric_wwn defined for '%s'", def->name); =20 ctxt->node =3D orignode2; @@ -877,10 +887,10 @@ virNodeDevCapSCSIHostParseXML(xmlXPathContextPtr ctxt, =20 =20 static int -virNodeDevCapNetParseXML(xmlXPathContextPtr ctxt, - virNodeDeviceDefPtr def, - xmlNodePtr node, - virNodeDevCapDataPtr data) +nodeDevCapNetParseXML(xmlXPathContextPtr ctxt, + virNodeDeviceDefPtr def, + xmlNodePtr node, + virNodeDevCapDataPtr data) { xmlNodePtr orignode, lnk; size_t i =3D -1; @@ -954,11 +964,12 @@ virNodeDevCapNetParseXML(xmlXPathContextPtr ctxt, return ret; } =20 + static int -virNodeDevCapUSBInterfaceParseXML(xmlXPathContextPtr ctxt, - virNodeDeviceDefPtr def, - xmlNodePtr node, - virNodeDevCapDataPtr data) +nodeDevCapUSBInterfaceParseXML(xmlXPathContextPtr ctxt, + virNodeDeviceDefPtr def, + xmlNodePtr node, + virNodeDevCapDataPtr data) { xmlNodePtr orignode; int ret =3D -1; @@ -966,27 +977,27 @@ virNodeDevCapUSBInterfaceParseXML(xmlXPathContextPtr = ctxt, orignode =3D ctxt->node; ctxt->node =3D node; =20 - if (virNodeDevCapsDefParseULong("number(./number[1])", ctxt, - &data->usb_if.number, def, - _("no USB interface number supplied fo= r '%s'"), - _("invalid USB interface number suppli= ed for '%s'")) < 0) + if (nodeDevCapsDefParseULong("number(./number[1])", ctxt, + &data->usb_if.number, def, + _("no USB interface number supplied for '= %s'"), + _("invalid USB interface number supplied = for '%s'")) < 0) goto out; =20 - if (virNodeDevCapsDefParseULong("number(./class[1])", ctxt, - &data->usb_if._class, def, - _("no USB interface class supplied for= '%s'"), - _("invalid USB interface class supplie= d for '%s'")) < 0) + if (nodeDevCapsDefParseULong("number(./class[1])", ctxt, + &data->usb_if._class, def, + _("no USB interface class supplied for '%= s'"), + _("invalid USB interface class supplied f= or '%s'")) < 0) goto out; =20 - if (virNodeDevCapsDefParseULong("number(./subclass[1])", ctxt, - &data->usb_if.subclass, def, - _("no USB interface subclass supplied = for '%s'"), - _("invalid USB interface subclass supp= lied for '%s'")) < 0) + if (nodeDevCapsDefParseULong("number(./subclass[1])", ctxt, + &data->usb_if.subclass, def, + _("no USB interface subclass supplied for= '%s'"), + _("invalid USB interface subclass supplie= d for '%s'")) < 0) goto out; =20 - if (virNodeDevCapsDefParseULong("number(./protocol[1])", ctxt, - &data->usb_if.protocol, def, - _("no USB interface protocol supplied = for '%s'"), + if (nodeDevCapsDefParseULong("number(./protocol[1])", ctxt, + &data->usb_if.protocol, def, + _("no USB interface protocol supplied for= '%s'"), _("invalid USB interface protocol supp= lied for '%s'")) < 0) goto out; =20 @@ -998,13 +1009,14 @@ virNodeDevCapUSBInterfaceParseXML(xmlXPathContextPtr= ctxt, return ret; } =20 + static int -virNodeDevCapsDefParseHexId(const char *xpath, - xmlXPathContextPtr ctxt, - unsigned *value, - virNodeDeviceDefPtr def, - const char *missing_error_fmt, - const char *invalid_error_fmt) +nodeDevCapsDefParseHexId(const char *xpath, + xmlXPathContextPtr ctxt, + unsigned *value, + virNodeDeviceDefPtr def, + const char *missing_error_fmt, + const char *invalid_error_fmt) { int ret; unsigned long val; @@ -1021,11 +1033,12 @@ virNodeDevCapsDefParseHexId(const char *xpath, return 0; } =20 + static int -virNodeDevCapUSBDevParseXML(xmlXPathContextPtr ctxt, - virNodeDeviceDefPtr def, - xmlNodePtr node, - virNodeDevCapDataPtr data) +nodeDevCapUSBDevParseXML(xmlXPathContextPtr ctxt, + virNodeDeviceDefPtr def, + xmlNodePtr node, + virNodeDevCapDataPtr data) { xmlNodePtr orignode; int ret =3D -1; @@ -1033,28 +1046,28 @@ virNodeDevCapUSBDevParseXML(xmlXPathContextPtr ctxt, orignode =3D ctxt->node; ctxt->node =3D node; =20 - if (virNodeDevCapsDefParseULong("number(./bus[1])", ctxt, - &data->usb_dev.bus, def, - _("no USB bus number supplied for '%s'= "), - _("invalid USB bus number supplied for= '%s'")) < 0) + if (nodeDevCapsDefParseULong("number(./bus[1])", ctxt, + &data->usb_dev.bus, def, + _("no USB bus number supplied for '%s'"), + _("invalid USB bus number supplied for '%= s'")) < 0) goto out; =20 - if (virNodeDevCapsDefParseULong("number(./device[1])", ctxt, - &data->usb_dev.device, def, - _("no USB device number supplied for '= %s'"), - _("invalid USB device number supplied = for '%s'")) < 0) + if (nodeDevCapsDefParseULong("number(./device[1])", ctxt, + &data->usb_dev.device, def, + _("no USB device number supplied for '%s'= "), + _("invalid USB device number supplied for= '%s'")) < 0) goto out; =20 - if (virNodeDevCapsDefParseHexId("string(./vendor[1]/@id)", ctxt, - &data->usb_dev.vendor, def, - _("no USB vendor ID supplied for '%s'"= ), - _("invalid USB vendor ID supplied for = '%s'")) < 0) + if (nodeDevCapsDefParseHexId("string(./vendor[1]/@id)", ctxt, + &data->usb_dev.vendor, def, + _("no USB vendor ID supplied for '%s'"), + _("invalid USB vendor ID supplied for '%s= '")) < 0) goto out; =20 - if (virNodeDevCapsDefParseHexId("string(./product[1]/@id)", ctxt, - &data->usb_dev.product, def, - _("no USB product ID supplied for '%s'= "), - _("invalid USB product ID supplied for= '%s'")) < 0) + if (nodeDevCapsDefParseHexId("string(./product[1]/@id)", ctxt, + &data->usb_dev.product, def, + _("no USB product ID supplied for '%s'"), + _("invalid USB product ID supplied for '%= s'")) < 0) goto out; =20 data->usb_dev.vendor_name =3D virXPathString("string(./vendor[1])", c= txt); @@ -1066,10 +1079,11 @@ virNodeDevCapUSBDevParseXML(xmlXPathContextPtr ctxt, return ret; } =20 + static int -virNodeDevCapPCIDevIommuGroupParseXML(xmlXPathContextPtr ctxt, - xmlNodePtr iommuGroupNode, - virNodeDevCapDataPtr data) +nodeDevCapPCIDevIommuGroupParseXML(xmlXPathContextPtr ctxt, + xmlNodePtr iommuGroupNode, + virNodeDevCapDataPtr data) { xmlNodePtr origNode =3D ctxt->node; xmlNodePtr *addrNodes =3D NULL; @@ -1122,10 +1136,11 @@ virNodeDevCapPCIDevIommuGroupParseXML(xmlXPathConte= xtPtr ctxt, return ret; } =20 + static int -virPCIEDeviceInfoLinkParseXML(xmlXPathContextPtr ctxt, - xmlNodePtr linkNode, - virPCIELinkPtr lnk) +nodeDevPCIEDeviceInfoLinkParseXML(xmlXPathContextPtr ctxt, + xmlNodePtr linkNode, + virPCIELinkPtr lnk) { xmlNodePtr origNode =3D ctxt->node; int ret =3D -1, speed; @@ -1168,10 +1183,11 @@ virPCIEDeviceInfoLinkParseXML(xmlXPathContextPtr ct= xt, return ret; } =20 + static int -virPCIEDeviceInfoParseXML(xmlXPathContextPtr ctxt, - xmlNodePtr pciExpressNode, - virPCIEDeviceInfoPtr pci_express) +nodeDevPCIEDeviceInfoParseXML(xmlXPathContextPtr ctxt, + xmlNodePtr pciExpressNode, + virPCIEDeviceInfoPtr pci_express) { xmlNodePtr lnk, origNode =3D ctxt->node; int ret =3D -1; @@ -1182,8 +1198,8 @@ virPCIEDeviceInfoParseXML(xmlXPathContextPtr ctxt, if (VIR_ALLOC(pci_express->link_cap) < 0) goto cleanup; =20 - if (virPCIEDeviceInfoLinkParseXML(ctxt, lnk, - pci_express->link_cap) < 0) + if (nodeDevPCIEDeviceInfoLinkParseXML(ctxt, lnk, + pci_express->link_cap) < 0) goto cleanup; } =20 @@ -1191,8 +1207,8 @@ virPCIEDeviceInfoParseXML(xmlXPathContextPtr ctxt, if (VIR_ALLOC(pci_express->link_sta) < 0) goto cleanup; =20 - if (virPCIEDeviceInfoLinkParseXML(ctxt, lnk, - pci_express->link_sta) < 0) + if (nodeDevPCIEDeviceInfoLinkParseXML(ctxt, lnk, + pci_express->link_sta) < 0) goto cleanup; } =20 @@ -1204,9 +1220,9 @@ virPCIEDeviceInfoParseXML(xmlXPathContextPtr ctxt, =20 =20 static int -virNodeDevPCICapabilityParseXML(xmlXPathContextPtr ctxt, - xmlNodePtr node, - virNodeDevCapDataPtr data) +nodeDevPCICapabilityParseXML(xmlXPathContextPtr ctxt, + xmlNodePtr node, + virNodeDevCapDataPtr data) { char *maxFuncsStr =3D virXMLPropString(node, "maxCount"); char *type =3D virXMLPropString(node, "type"); @@ -1292,10 +1308,10 @@ virNodeDevPCICapabilityParseXML(xmlXPathContextPtr = ctxt, =20 =20 static int -virNodeDevCapPCIDevParseXML(xmlXPathContextPtr ctxt, - virNodeDeviceDefPtr def, - xmlNodePtr node, - virNodeDevCapDataPtr data) +nodeDevCapPCIDevParseXML(xmlXPathContextPtr ctxt, + virNodeDeviceDefPtr def, + xmlNodePtr node, + virNodeDevCapDataPtr data) { xmlNodePtr orignode, iommuGroupNode, pciExpress; xmlNodePtr *nodes =3D NULL; @@ -1308,40 +1324,40 @@ virNodeDevCapPCIDevParseXML(xmlXPathContextPtr ctxt, orignode =3D ctxt->node; ctxt->node =3D node; =20 - if (virNodeDevCapsDefParseULong("number(./domain[1])", ctxt, - &data->pci_dev.domain, def, - _("no PCI domain ID supplied for '%s'"= ), - _("invalid PCI domain ID supplied for = '%s'")) < 0) + if (nodeDevCapsDefParseULong("number(./domain[1])", ctxt, + &data->pci_dev.domain, def, + _("no PCI domain ID supplied for '%s'"), + _("invalid PCI domain ID supplied for '%s= '")) < 0) goto out; =20 - if (virNodeDevCapsDefParseULong("number(./bus[1])", ctxt, - &data->pci_dev.bus, def, - _("no PCI bus ID supplied for '%s'"), - _("invalid PCI bus ID supplied for '%s= '")) < 0) + if (nodeDevCapsDefParseULong("number(./bus[1])", ctxt, + &data->pci_dev.bus, def, + _("no PCI bus ID supplied for '%s'"), + _("invalid PCI bus ID supplied for '%s'")= ) < 0) goto out; =20 - if (virNodeDevCapsDefParseULong("number(./slot[1])", ctxt, - &data->pci_dev.slot, def, - _("no PCI slot ID supplied for '%s'"), - _("invalid PCI slot ID supplied for '%= s'")) < 0) + if (nodeDevCapsDefParseULong("number(./slot[1])", ctxt, + &data->pci_dev.slot, def, + _("no PCI slot ID supplied for '%s'"), + _("invalid PCI slot ID supplied for '%s'"= )) < 0) goto out; =20 - if (virNodeDevCapsDefParseULong("number(./function[1])", ctxt, - &data->pci_dev.function, def, - _("no PCI function ID supplied for '%s= '"), - _("invalid PCI function ID supplied fo= r '%s'")) < 0) + if (nodeDevCapsDefParseULong("number(./function[1])", ctxt, + &data->pci_dev.function, def, + _("no PCI function ID supplied for '%s'"), + _("invalid PCI function ID supplied for '= %s'")) < 0) goto out; =20 - if (virNodeDevCapsDefParseHexId("string(./vendor[1]/@id)", ctxt, - &data->pci_dev.vendor, def, - _("no PCI vendor ID supplied for '%s'"= ), - _("invalid PCI vendor ID supplied for = '%s'")) < 0) + if (nodeDevCapsDefParseHexId("string(./vendor[1]/@id)", ctxt, + &data->pci_dev.vendor, def, + _("no PCI vendor ID supplied for '%s'"), + _("invalid PCI vendor ID supplied for '%s= '")) < 0) goto out; =20 - if (virNodeDevCapsDefParseHexId("string(./product[1]/@id)", ctxt, - &data->pci_dev.product, def, - _("no PCI product ID supplied for '%s'= "), - _("invalid PCI product ID supplied for= '%s'")) < 0) + if (nodeDevCapsDefParseHexId("string(./product[1]/@id)", ctxt, + &data->pci_dev.product, def, + _("no PCI product ID supplied for '%s'"), + _("invalid PCI product ID supplied for '%= s'")) < 0) goto out; =20 data->pci_dev.vendor_name =3D virXPathString("string(./vendor[1])", c= txt); @@ -1351,30 +1367,30 @@ virNodeDevCapPCIDevParseXML(xmlXPathContextPtr ctxt, goto out; =20 for (i =3D 0; i < n; i++) { - if (virNodeDevPCICapabilityParseXML(ctxt, nodes[i], data) < 0) + if (nodeDevPCICapabilityParseXML(ctxt, nodes[i], data) < 0) goto out; } VIR_FREE(nodes); =20 if ((iommuGroupNode =3D virXPathNode("./iommuGroup[1]", ctxt))) { - if (virNodeDevCapPCIDevIommuGroupParseXML(ctxt, iommuGroupNode, - data) < 0) { + if (nodeDevCapPCIDevIommuGroupParseXML(ctxt, iommuGroupNode, + data) < 0) { goto out; } } =20 /* The default value is -1 since zero is valid NUMA node number */ data->pci_dev.numa_node =3D -1; - if (virNodeDevCapsDefParseIntOptional("number(./numa[1]/@node)", ctxt, - &data->pci_dev.numa_node, def, - _("invalid NUMA node ID supplied= for '%s'")) < 0) + if (nodeDevCapsDefParseIntOptional("number(./numa[1]/@node)", ctxt, + &data->pci_dev.numa_node, def, + _("invalid NUMA node ID supplied fo= r '%s'")) < 0) goto out; =20 if ((pciExpress =3D virXPathNode("./pci-express[1]", ctxt))) { if (VIR_ALLOC(pci_express) < 0) goto out; =20 - if (virPCIEDeviceInfoParseXML(ctxt, pciExpress, pci_express) < 0) + if (nodeDevPCIEDeviceInfoParseXML(ctxt, pciExpress, pci_express) <= 0) goto out; =20 data->pci_dev.pci_express =3D pci_express; @@ -1391,11 +1407,12 @@ virNodeDevCapPCIDevParseXML(xmlXPathContextPtr ctxt, return ret; } =20 + static int -virNodeDevCapSystemParseXML(xmlXPathContextPtr ctxt, - virNodeDeviceDefPtr def, - xmlNodePtr node, - virNodeDevCapDataPtr data) +nodeDevCapSystemParseXML(xmlXPathContextPtr ctxt, + virNodeDeviceDefPtr def, + xmlNodePtr node, + virNodeDevCapDataPtr data) { xmlNodePtr orignode; int ret =3D -1; @@ -1435,12 +1452,13 @@ virNodeDevCapSystemParseXML(xmlXPathContextPtr ctxt, return ret; } =20 + static virNodeDevCapsDefPtr -virNodeDevCapsDefParseXML(xmlXPathContextPtr ctxt, - virNodeDeviceDefPtr def, - xmlNodePtr node, - int create, - const char *virt_type) +nodeDevCapsDefParseXML(xmlXPathContextPtr ctxt, + virNodeDeviceDefPtr def, + xmlNodePtr node, + int create, + const char *virt_type) { virNodeDevCapsDefPtr caps; char *tmp; @@ -1467,37 +1485,37 @@ virNodeDevCapsDefParseXML(xmlXPathContextPtr ctxt, =20 switch (caps->data.type) { case VIR_NODE_DEV_CAP_SYSTEM: - ret =3D virNodeDevCapSystemParseXML(ctxt, def, node, &caps->data); + ret =3D nodeDevCapSystemParseXML(ctxt, def, node, &caps->data); break; case VIR_NODE_DEV_CAP_PCI_DEV: - ret =3D virNodeDevCapPCIDevParseXML(ctxt, def, node, &caps->data); + ret =3D nodeDevCapPCIDevParseXML(ctxt, def, node, &caps->data); break; case VIR_NODE_DEV_CAP_USB_DEV: - ret =3D virNodeDevCapUSBDevParseXML(ctxt, def, node, &caps->data); + ret =3D nodeDevCapUSBDevParseXML(ctxt, def, node, &caps->data); break; case VIR_NODE_DEV_CAP_USB_INTERFACE: - ret =3D virNodeDevCapUSBInterfaceParseXML(ctxt, def, node, &caps->= data); + ret =3D nodeDevCapUSBInterfaceParseXML(ctxt, def, node, &caps->dat= a); break; case VIR_NODE_DEV_CAP_NET: - ret =3D virNodeDevCapNetParseXML(ctxt, def, node, &caps->data); + ret =3D nodeDevCapNetParseXML(ctxt, def, node, &caps->data); break; case VIR_NODE_DEV_CAP_SCSI_HOST: - ret =3D virNodeDevCapSCSIHostParseXML(ctxt, def, node, - &caps->data, - create, - virt_type); + ret =3D nodeDevCapSCSIHostParseXML(ctxt, def, node, + &caps->data, + create, + virt_type); break; case VIR_NODE_DEV_CAP_SCSI_TARGET: - ret =3D virNodeDevCapSCSITargetParseXML(ctxt, def, node, &caps->da= ta); + ret =3D nodeDevCapSCSITargetParseXML(ctxt, def, node, &caps->data); break; case VIR_NODE_DEV_CAP_SCSI: - ret =3D virNodeDevCapSCSIParseXML(ctxt, def, node, &caps->data); + ret =3D nodeDevCapSCSIParseXML(ctxt, def, node, &caps->data); break; case VIR_NODE_DEV_CAP_STORAGE: - ret =3D virNodeDevCapStorageParseXML(ctxt, def, node, &caps->data); + ret =3D nodeDevCapStorageParseXML(ctxt, def, node, &caps->data); break; case VIR_NODE_DEV_CAP_DRM: - ret =3D virNodeDevCapDRMParseXML(ctxt, def, node, &caps->data); + ret =3D nodeDevCapDRMParseXML(ctxt, def, node, &caps->data); break; case VIR_NODE_DEV_CAP_FC_HOST: case VIR_NODE_DEV_CAP_VPORTS: @@ -1519,10 +1537,11 @@ virNodeDevCapsDefParseXML(xmlXPathContextPtr ctxt, return NULL; } =20 + static virNodeDeviceDefPtr -virNodeDeviceDefParseXML(xmlXPathContextPtr ctxt, - int create, - const char *virt_type) +nodeDeviceDefParseXML(xmlXPathContextPtr ctxt, + int create, + const char *virt_type) { virNodeDeviceDefPtr def; virNodeDevCapsDefPtr *next_cap; @@ -1614,10 +1633,10 @@ virNodeDeviceDefParseXML(xmlXPathContextPtr ctxt, =20 next_cap =3D &def->caps; for (i =3D 0; i < n; i++) { - *next_cap =3D virNodeDevCapsDefParseXML(ctxt, def, - nodes[i], - create, - virt_type); + *next_cap =3D nodeDevCapsDefParseXML(ctxt, def, + nodes[i], + create, + virt_type); if (!*next_cap) goto error; =20 @@ -1633,6 +1652,7 @@ virNodeDeviceDefParseXML(xmlXPathContextPtr ctxt, return NULL; } =20 + virNodeDeviceDefPtr virNodeDeviceDefParseNode(xmlDocPtr xml, xmlNodePtr root, @@ -1657,18 +1677,19 @@ virNodeDeviceDefParseNode(xmlDocPtr xml, } =20 ctxt->node =3D root; - def =3D virNodeDeviceDefParseXML(ctxt, create, virt_type); + def =3D nodeDeviceDefParseXML(ctxt, create, virt_type); =20 cleanup: xmlXPathFreeContext(ctxt); return def; } =20 + static virNodeDeviceDefPtr -virNodeDeviceDefParse(const char *str, - const char *filename, - int create, - const char *virt_type) +nodeDeviceDefParse(const char *str, + const char *filename, + int create, + const char *virt_type) { xmlDocPtr xml; virNodeDeviceDefPtr def =3D NULL; @@ -1682,22 +1703,25 @@ virNodeDeviceDefParse(const char *str, return def; } =20 + virNodeDeviceDefPtr virNodeDeviceDefParseString(const char *str, int create, const char *virt_type) { - return virNodeDeviceDefParse(str, NULL, create, virt_type); + return nodeDeviceDefParse(str, NULL, create, virt_type); } =20 + virNodeDeviceDefPtr virNodeDeviceDefParseFile(const char *filename, int create, const char *virt_type) { - return virNodeDeviceDefParse(NULL, filename, create, virt_type); + return nodeDeviceDefParse(NULL, filename, create, virt_type); } =20 + /* * Return fc_host dev's WWNN and WWPN */ diff --git a/src/conf/virnodedeviceobj.c b/src/conf/virnodedeviceobj.c index 83f7217..a416fb8 100644 --- a/src/conf/virnodedeviceobj.c +++ b/src/conf/virnodedeviceobj.c @@ -33,7 +33,9 @@ VIR_LOG_INIT("conf.virnodedeviceobj"); =20 =20 -int virNodeDeviceHasCap(const virNodeDeviceObj *dev, const char *cap) +int +virNodeDeviceHasCap(const virNodeDeviceObj *dev, + const char *cap) { virNodeDevCapsDefPtr caps =3D dev->def->caps; const char *fc_host_cap =3D @@ -58,7 +60,7 @@ int virNodeDeviceHasCap(const virNodeDeviceObj *dev, cons= t char *cap) } =20 =20 -/* virNodeDeviceFindFCCapDef: +/* nodeDeviceFindFCCapDef: * @dev: Pointer to current device * * Search the device object 'caps' array for fc_host capability. @@ -67,7 +69,7 @@ int virNodeDeviceHasCap(const virNodeDeviceObj *dev, cons= t char *cap) * Pointer to the caps or NULL if not found */ static virNodeDevCapsDefPtr -virNodeDeviceFindFCCapDef(const virNodeDeviceObj *dev) +nodeDeviceFindFCCapDef(const virNodeDeviceObj *dev) { virNodeDevCapsDefPtr caps =3D dev->def->caps; =20 @@ -125,8 +127,9 @@ virNodeDeviceFindBySysfsPath(virNodeDeviceObjListPtr de= vs, } =20 =20 -virNodeDeviceObjPtr virNodeDeviceFindByName(virNodeDeviceObjListPtr devs, - const char *name) +virNodeDeviceObjPtr +virNodeDeviceFindByName(virNodeDeviceObjListPtr devs, + const char *name) { size_t i; =20 @@ -142,16 +145,16 @@ virNodeDeviceObjPtr virNodeDeviceFindByName(virNodeDe= viceObjListPtr devs, =20 =20 static virNodeDeviceObjPtr -virNodeDeviceFindByWWNs(virNodeDeviceObjListPtr devs, - const char *parent_wwnn, - const char *parent_wwpn) +nodeDeviceFindByWWNs(virNodeDeviceObjListPtr devs, + const char *parent_wwnn, + const char *parent_wwpn) { size_t i; =20 for (i =3D 0; i < devs->count; i++) { virNodeDevCapsDefPtr cap; virNodeDeviceObjLock(devs->objs[i]); - if ((cap =3D virNodeDeviceFindFCCapDef(devs->objs[i])) && + if ((cap =3D nodeDeviceFindFCCapDef(devs->objs[i])) && STREQ_NULLABLE(cap->data.scsi_host.wwnn, parent_wwnn) && STREQ_NULLABLE(cap->data.scsi_host.wwpn, parent_wwpn)) return devs->objs[i]; @@ -163,15 +166,15 @@ virNodeDeviceFindByWWNs(virNodeDeviceObjListPtr devs, =20 =20 static virNodeDeviceObjPtr -virNodeDeviceFindByFabricWWN(virNodeDeviceObjListPtr devs, - const char *parent_fabric_wwn) +nodeDeviceFindByFabricWWN(virNodeDeviceObjListPtr devs, + const char *parent_fabric_wwn) { size_t i; =20 for (i =3D 0; i < devs->count; i++) { virNodeDevCapsDefPtr cap; virNodeDeviceObjLock(devs->objs[i]); - if ((cap =3D virNodeDeviceFindFCCapDef(devs->objs[i])) && + if ((cap =3D nodeDeviceFindFCCapDef(devs->objs[i])) && STREQ_NULLABLE(cap->data.scsi_host.fabric_wwn, parent_fabric_w= wn)) return devs->objs[i]; virNodeDeviceObjUnlock(devs->objs[i]); @@ -182,8 +185,8 @@ virNodeDeviceFindByFabricWWN(virNodeDeviceObjListPtr de= vs, =20 =20 static virNodeDeviceObjPtr -virNodeDeviceFindByCap(virNodeDeviceObjListPtr devs, - const char *cap) +nodeDeviceFindByCap(virNodeDeviceObjListPtr devs, + const char *cap) { size_t i; =20 @@ -198,7 +201,8 @@ virNodeDeviceFindByCap(virNodeDeviceObjListPtr devs, } =20 =20 -void virNodeDeviceObjFree(virNodeDeviceObjPtr dev) +void +virNodeDeviceObjFree(virNodeDeviceObjPtr dev) { if (!dev) return; @@ -212,7 +216,9 @@ void virNodeDeviceObjFree(virNodeDeviceObjPtr dev) VIR_FREE(dev); } =20 -void virNodeDeviceObjListFree(virNodeDeviceObjListPtr devs) + +void +virNodeDeviceObjListFree(virNodeDeviceObjListPtr devs) { size_t i; for (i =3D 0; i < devs->count; i++) @@ -221,8 +227,10 @@ void virNodeDeviceObjListFree(virNodeDeviceObjListPtr = devs) devs->count =3D 0; } =20 -virNodeDeviceObjPtr virNodeDeviceAssignDef(virNodeDeviceObjListPtr devs, - virNodeDeviceDefPtr def) + +virNodeDeviceObjPtr +virNodeDeviceAssignDef(virNodeDeviceObjListPtr devs, + virNodeDeviceDefPtr def) { virNodeDeviceObjPtr device; =20 @@ -254,8 +262,10 @@ virNodeDeviceObjPtr virNodeDeviceAssignDef(virNodeDevi= ceObjListPtr devs, =20 } =20 -void virNodeDeviceObjRemove(virNodeDeviceObjListPtr devs, - virNodeDeviceObjPtr *dev) + +void +virNodeDeviceObjRemove(virNodeDeviceObjListPtr devs, + virNodeDeviceObjPtr *dev) { size_t i; =20 @@ -279,7 +289,7 @@ void virNodeDeviceObjRemove(virNodeDeviceObjListPtr dev= s, /* * Return the NPIV dev's parent device name */ -/* virNodeDeviceFindFCParentHost: +/* nodeDeviceFindFCParentHost: * @parent: Pointer to node device object * * Search the capabilities for the device to find the FC capabilities @@ -289,7 +299,7 @@ void virNodeDeviceObjRemove(virNodeDeviceObjListPtr dev= s, * parent_host value on success (>=3D 0), -1 otherwise. */ static int -virNodeDeviceFindFCParentHost(virNodeDeviceObjPtr parent) +nodeDeviceFindFCParentHost(virNodeDeviceObjPtr parent) { virNodeDevCapsDefPtr cap =3D virNodeDeviceFindVPORTCapDef(parent); =20 @@ -306,9 +316,9 @@ virNodeDeviceFindFCParentHost(virNodeDeviceObjPtr paren= t) =20 =20 static int -virNodeDeviceGetParentHostByParent(virNodeDeviceObjListPtr devs, - const char *dev_name, - const char *parent_name) +nodeDeviceGetParentHostByParent(virNodeDeviceObjListPtr devs, + const char *dev_name, + const char *parent_name) { virNodeDeviceObjPtr parent =3D NULL; int ret; @@ -320,7 +330,7 @@ virNodeDeviceGetParentHostByParent(virNodeDeviceObjList= Ptr devs, return -1; } =20 - ret =3D virNodeDeviceFindFCParentHost(parent); + ret =3D nodeDeviceFindFCParentHost(parent); =20 virNodeDeviceObjUnlock(parent); =20 @@ -329,22 +339,22 @@ virNodeDeviceGetParentHostByParent(virNodeDeviceObjLi= stPtr devs, =20 =20 static int -virNodeDeviceGetParentHostByWWNs(virNodeDeviceObjListPtr devs, - const char *dev_name, - const char *parent_wwnn, - const char *parent_wwpn) +nodeDeviceGetParentHostByWWNs(virNodeDeviceObjListPtr devs, + const char *dev_name, + const char *parent_wwnn, + const char *parent_wwpn) { virNodeDeviceObjPtr parent =3D NULL; int ret; =20 - if (!(parent =3D virNodeDeviceFindByWWNs(devs, parent_wwnn, parent_wwp= n))) { + if (!(parent =3D nodeDeviceFindByWWNs(devs, parent_wwnn, parent_wwpn))= ) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Could not find parent device for '%s'"), dev_name); return -1; } =20 - ret =3D virNodeDeviceFindFCParentHost(parent); + ret =3D nodeDeviceFindFCParentHost(parent); =20 virNodeDeviceObjUnlock(parent); =20 @@ -353,21 +363,21 @@ virNodeDeviceGetParentHostByWWNs(virNodeDeviceObjList= Ptr devs, =20 =20 static int -virNodeDeviceGetParentHostByFabricWWN(virNodeDeviceObjListPtr devs, - const char *dev_name, - const char *parent_fabric_wwn) +nodeDeviceGetParentHostByFabricWWN(virNodeDeviceObjListPtr devs, + const char *dev_name, + const char *parent_fabric_wwn) { virNodeDeviceObjPtr parent =3D NULL; int ret; =20 - if (!(parent =3D virNodeDeviceFindByFabricWWN(devs, parent_fabric_wwn)= )) { + if (!(parent =3D nodeDeviceFindByFabricWWN(devs, parent_fabric_wwn))) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Could not find parent device for '%s'"), dev_name); return -1; } =20 - ret =3D virNodeDeviceFindFCParentHost(parent); + ret =3D nodeDeviceFindFCParentHost(parent); =20 virNodeDeviceObjUnlock(parent); =20 @@ -376,19 +386,19 @@ virNodeDeviceGetParentHostByFabricWWN(virNodeDeviceOb= jListPtr devs, =20 =20 static int -virNodeDeviceFindVportParentHost(virNodeDeviceObjListPtr devs) +nodeDeviceFindVportParentHost(virNodeDeviceObjListPtr devs) { virNodeDeviceObjPtr parent =3D NULL; const char *cap =3D virNodeDevCapTypeToString(VIR_NODE_DEV_CAP_VPORTS); int ret; =20 - if (!(parent =3D virNodeDeviceFindByCap(devs, cap))) { + if (!(parent =3D nodeDeviceFindByCap(devs, cap))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Could not find any vport capable device")); return -1; } =20 - ret =3D virNodeDeviceFindFCParentHost(parent); + ret =3D nodeDeviceFindFCParentHost(parent); =20 virNodeDeviceObjUnlock(parent); =20 @@ -404,38 +414,42 @@ virNodeDeviceGetParentHost(virNodeDeviceObjListPtr de= vs, int parent_host =3D -1; =20 if (def->parent) { - parent_host =3D virNodeDeviceGetParentHostByParent(devs, def->name, - def->parent); + parent_host =3D nodeDeviceGetParentHostByParent(devs, def->name, + def->parent); } else if (def->parent_wwnn && def->parent_wwpn) { - parent_host =3D virNodeDeviceGetParentHostByWWNs(devs, def->name, - def->parent_wwnn, - def->parent_wwpn); + parent_host =3D nodeDeviceGetParentHostByWWNs(devs, def->name, + def->parent_wwnn, + def->parent_wwpn); } else if (def->parent_fabric_wwn) { parent_host =3D - virNodeDeviceGetParentHostByFabricWWN(devs, def->name, - def->parent_fabric_wwn); + nodeDeviceGetParentHostByFabricWWN(devs, def->name, + def->parent_fabric_wwn); } else if (create =3D=3D CREATE_DEVICE) { /* Try to find a vport capable scsi_host when no parent supplied */ - parent_host =3D virNodeDeviceFindVportParentHost(devs); + parent_host =3D nodeDeviceFindVportParentHost(devs); } =20 return parent_host; } =20 =20 -void virNodeDeviceObjLock(virNodeDeviceObjPtr obj) +void +virNodeDeviceObjLock(virNodeDeviceObjPtr obj) { virMutexLock(&obj->lock); } =20 -void virNodeDeviceObjUnlock(virNodeDeviceObjPtr obj) + +void +virNodeDeviceObjUnlock(virNodeDeviceObjPtr obj) { virMutexUnlock(&obj->lock); } =20 + static bool -virNodeDeviceCapMatch(virNodeDeviceObjPtr devobj, - int type) +nodeDeviceCapMatch(virNodeDeviceObjPtr devobj, + int type) { virNodeDevCapsDefPtr cap =3D NULL; =20 @@ -459,11 +473,12 @@ virNodeDeviceCapMatch(virNodeDeviceObjPtr devobj, return false; } =20 + #define MATCH(FLAG) ((flags & (VIR_CONNECT_LIST_NODE_DEVICES_CAP_ ## FLAG)= ) && \ - virNodeDeviceCapMatch(devobj, VIR_NODE_DEV_CAP_ ## FL= AG)) + nodeDeviceCapMatch(devobj, VIR_NODE_DEV_CAP_ ## FLAG)) static bool -virNodeDeviceMatch(virNodeDeviceObjPtr devobj, - unsigned int flags) +nodeDeviceMatch(virNodeDeviceObjPtr devobj, + unsigned int flags) { /* filter by cap type */ if (flags & VIR_CONNECT_LIST_NODE_DEVICES_FILTERS_CAP) { @@ -487,6 +502,7 @@ virNodeDeviceMatch(virNodeDeviceObjPtr devobj, } #undef MATCH =20 + int virNodeDeviceObjListExport(virConnectPtr conn, virNodeDeviceObjList devobjs, @@ -507,7 +523,7 @@ virNodeDeviceObjListExport(virConnectPtr conn, virNodeDeviceObjPtr devobj =3D devobjs.objs[i]; virNodeDeviceObjLock(devobj); if ((!filter || filter(conn, devobj->def)) && - virNodeDeviceMatch(devobj, flags)) { + nodeDeviceMatch(devobj, flags)) { if (devices) { if (!(device =3D virGetNodeDevice(conn, devobj->def->name)= ) || VIR_STRDUP(device->parent, devobj->def->parent) < 0) { --=20 2.9.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:37:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.25 as permitted sender) client-ip=209.132.183.25; envelope-from=libvir-list-bounces@redhat.com; helo=mx4-phx2.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.25 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by mx.zohomail.com with SMTPS id 1488414648500506.7799929308437; Wed, 1 Mar 2017 16:30:48 -0800 (PST) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v220RLXd001981; Wed, 1 Mar 2017 19:27:22 -0500 Received: from smtp.corp.redhat.com (int-mx16.intmail.prod.int.phx2.redhat.com [10.5.11.28]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v220RK6l010020 for ; Wed, 1 Mar 2017 19:27:20 -0500 Received: by smtp.corp.redhat.com (Postfix) id D480672380; Thu, 2 Mar 2017 00:27:20 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-78.phx2.redhat.com [10.3.116.78]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9390A2D655 for ; Thu, 2 Mar 2017 00:27:20 +0000 (UTC) From: John Ferlan To: libvir-list@redhat.com Date: Wed, 1 Mar 2017 19:27:16 -0500 Message-Id: <20170302002716.21337-4-jferlan@redhat.com> In-Reply-To: <20170302002716.21337-1-jferlan@redhat.com> References: <20170302002716.21337-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.74 on 10.5.11.28 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 3/3] conf: Use consistent function name prefixes for virnodedeviceobj X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Use "virNodeDeviceObj" as a prefix for any external API in virnodedeviceobj Signed-off-by: John Ferlan --- src/conf/virnodedeviceobj.c | 28 ++++++++++++++-------------- src/conf/virnodedeviceobj.h | 18 +++++++++--------- src/node_device/node_device_driver.c | 24 ++++++++++++------------ src/node_device/node_device_hal.c | 10 ++++------ src/node_device/node_device_udev.c | 12 ++++++------ src/test/test_driver.c | 28 ++++++++++++++-------------- 6 files changed, 59 insertions(+), 61 deletions(-) diff --git a/src/conf/virnodedeviceobj.c b/src/conf/virnodedeviceobj.c index a416fb8..ee0b2ae 100644 --- a/src/conf/virnodedeviceobj.c +++ b/src/conf/virnodedeviceobj.c @@ -34,8 +34,8 @@ VIR_LOG_INIT("conf.virnodedeviceobj"); =20 =20 int -virNodeDeviceHasCap(const virNodeDeviceObj *dev, - const char *cap) +virNodeDeviceObjHasCap(const virNodeDeviceObj *dev, + const char *cap) { virNodeDevCapsDefPtr caps =3D dev->def->caps; const char *fc_host_cap =3D @@ -109,8 +109,8 @@ virNodeDeviceFindVPORTCapDef(const virNodeDeviceObj *de= v) =20 =20 virNodeDeviceObjPtr -virNodeDeviceFindBySysfsPath(virNodeDeviceObjListPtr devs, - const char *sysfs_path) +virNodeDeviceObjFindBySysfsPath(virNodeDeviceObjListPtr devs, + const char *sysfs_path) { size_t i; =20 @@ -128,8 +128,8 @@ virNodeDeviceFindBySysfsPath(virNodeDeviceObjListPtr de= vs, =20 =20 virNodeDeviceObjPtr -virNodeDeviceFindByName(virNodeDeviceObjListPtr devs, - const char *name) +virNodeDeviceObjFindByName(virNodeDeviceObjListPtr devs, + const char *name) { size_t i; =20 @@ -192,7 +192,7 @@ nodeDeviceFindByCap(virNodeDeviceObjListPtr devs, =20 for (i =3D 0; i < devs->count; i++) { virNodeDeviceObjLock(devs->objs[i]); - if (virNodeDeviceHasCap(devs->objs[i], cap)) + if (virNodeDeviceObjHasCap(devs->objs[i], cap)) return devs->objs[i]; virNodeDeviceObjUnlock(devs->objs[i]); } @@ -229,12 +229,12 @@ virNodeDeviceObjListFree(virNodeDeviceObjListPtr devs) =20 =20 virNodeDeviceObjPtr -virNodeDeviceAssignDef(virNodeDeviceObjListPtr devs, - virNodeDeviceDefPtr def) +virNodeDeviceObjAssignDef(virNodeDeviceObjListPtr devs, + virNodeDeviceDefPtr def) { virNodeDeviceObjPtr device; =20 - if ((device =3D virNodeDeviceFindByName(devs, def->name))) { + if ((device =3D virNodeDeviceObjFindByName(devs, def->name))) { virNodeDeviceDefFree(device->def); device->def =3D def; return device; @@ -323,7 +323,7 @@ nodeDeviceGetParentHostByParent(virNodeDeviceObjListPtr= devs, virNodeDeviceObjPtr parent =3D NULL; int ret; =20 - if (!(parent =3D virNodeDeviceFindByName(devs, parent_name))) { + if (!(parent =3D virNodeDeviceObjFindByName(devs, parent_name))) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Could not find parent device for '%s'"), dev_name); @@ -407,9 +407,9 @@ nodeDeviceFindVportParentHost(virNodeDeviceObjListPtr d= evs) =20 =20 int -virNodeDeviceGetParentHost(virNodeDeviceObjListPtr devs, - virNodeDeviceDefPtr def, - int create) +virNodeDeviceObjGetParentHost(virNodeDeviceObjListPtr devs, + virNodeDeviceDefPtr def, + int create) { int parent_host =3D -1; =20 diff --git a/src/conf/virnodedeviceobj.h b/src/conf/virnodedeviceobj.h index 6ad7fb1..b4409b7 100644 --- a/src/conf/virnodedeviceobj.h +++ b/src/conf/virnodedeviceobj.h @@ -40,24 +40,24 @@ struct _virNodeDeviceDriverState { }; =20 =20 -int virNodeDeviceHasCap(const virNodeDeviceObj *dev, const char *cap); +int virNodeDeviceObjHasCap(const virNodeDeviceObj *dev, const char *cap); =20 -virNodeDeviceObjPtr virNodeDeviceFindByName(virNodeDeviceObjListPtr devs, +virNodeDeviceObjPtr virNodeDeviceObjFindByName(virNodeDeviceObjListPtr dev= s, const char *name); virNodeDeviceObjPtr -virNodeDeviceFindBySysfsPath(virNodeDeviceObjListPtr devs, - const char *sysfs_path) +virNodeDeviceObjFindBySysfsPath(virNodeDeviceObjListPtr devs, + const char *sysfs_path) ATTRIBUTE_NONNULL(2); =20 -virNodeDeviceObjPtr virNodeDeviceAssignDef(virNodeDeviceObjListPtr devs, - virNodeDeviceDefPtr def); +virNodeDeviceObjPtr virNodeDeviceObjAssignDef(virNodeDeviceObjListPtr devs, + virNodeDeviceDefPtr def); =20 void virNodeDeviceObjRemove(virNodeDeviceObjListPtr devs, virNodeDeviceObjPtr *dev); =20 -int virNodeDeviceGetParentHost(virNodeDeviceObjListPtr devs, - virNodeDeviceDefPtr def, - int create); +int virNodeDeviceObjGetParentHost(virNodeDeviceObjListPtr devs, + virNodeDeviceDefPtr def, + int create); =20 void virNodeDeviceObjFree(virNodeDeviceObjPtr dev); =20 diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_de= vice_driver.c index 5d57006..0869b1b 100644 --- a/src/node_device/node_device_driver.c +++ b/src/node_device/node_device_driver.c @@ -173,7 +173,7 @@ nodeNumOfDevices(virConnectPtr conn, virNodeDeviceObjLock(obj); if (virNodeNumOfDevicesCheckACL(conn, obj->def) && ((cap =3D=3D NULL) || - virNodeDeviceHasCap(obj, cap))) + virNodeDeviceObjHasCap(obj, cap))) ++ndevs; virNodeDeviceObjUnlock(obj); } @@ -202,7 +202,7 @@ nodeListDevices(virConnectPtr conn, virNodeDeviceObjLock(obj); if (virNodeListDevicesCheckACL(conn, obj->def) && (cap =3D=3D NULL || - virNodeDeviceHasCap(obj, cap))) { + virNodeDeviceObjHasCap(obj, cap))) { if (VIR_STRDUP(names[ndevs++], obj->def->name) < 0) { virNodeDeviceObjUnlock(obj); goto failure; @@ -249,7 +249,7 @@ nodeDeviceLookupByName(virConnectPtr conn, const char *= name) virNodeDevicePtr ret =3D NULL; =20 nodeDeviceLock(); - obj =3D virNodeDeviceFindByName(&driver->devs, name); + obj =3D virNodeDeviceObjFindByName(&driver->devs, name); nodeDeviceUnlock(); =20 if (!obj) { @@ -337,7 +337,7 @@ nodeDeviceGetXMLDesc(virNodeDevicePtr dev, virCheckFlags(0, NULL); =20 nodeDeviceLock(); - obj =3D virNodeDeviceFindByName(&driver->devs, dev->name); + obj =3D virNodeDeviceObjFindByName(&driver->devs, dev->name); nodeDeviceUnlock(); =20 if (!obj) { @@ -370,7 +370,7 @@ nodeDeviceGetParent(virNodeDevicePtr dev) char *ret =3D NULL; =20 nodeDeviceLock(); - obj =3D virNodeDeviceFindByName(&driver->devs, dev->name); + obj =3D virNodeDeviceObjFindByName(&driver->devs, dev->name); nodeDeviceUnlock(); =20 if (!obj) { @@ -407,7 +407,7 @@ nodeDeviceNumOfCaps(virNodeDevicePtr dev) int ret =3D -1; =20 nodeDeviceLock(); - obj =3D virNodeDeviceFindByName(&driver->devs, dev->name); + obj =3D virNodeDeviceObjFindByName(&driver->devs, dev->name); nodeDeviceUnlock(); =20 if (!obj) { @@ -452,7 +452,7 @@ nodeDeviceListCaps(virNodeDevicePtr dev, char **const n= ames, int maxnames) int ret =3D -1; =20 nodeDeviceLock(); - obj =3D virNodeDeviceFindByName(&driver->devs, dev->name); + obj =3D virNodeDeviceObjFindByName(&driver->devs, dev->name); nodeDeviceUnlock(); =20 if (!obj) { @@ -590,8 +590,8 @@ nodeDeviceCreateXML(virConnectPtr conn, if (virNodeDeviceGetWWNs(def, &wwnn, &wwpn) =3D=3D -1) goto cleanup; =20 - if ((parent_host =3D virNodeDeviceGetParentHost(&driver->devs, def, - CREATE_DEVICE)) < 0) + if ((parent_host =3D virNodeDeviceObjGetParentHost(&driver->devs, def, + CREATE_DEVICE)) < 0) goto cleanup; =20 if (virVHBAManageVport(parent_host, wwpn, wwnn, VPORT_CREATE) < 0) @@ -625,7 +625,7 @@ nodeDeviceDestroy(virNodeDevicePtr dev) int parent_host =3D -1; =20 nodeDeviceLock(); - if (!(obj =3D virNodeDeviceFindByName(&driver->devs, dev->name))) { + if (!(obj =3D virNodeDeviceObjFindByName(&driver->devs, dev->name))) { virReportError(VIR_ERR_NO_NODE_DEVICE, _("no node device with matching name '%s'"), dev->name); @@ -645,8 +645,8 @@ nodeDeviceDestroy(virNodeDevicePtr dev) def =3D obj->def; virNodeDeviceObjUnlock(obj); obj =3D NULL; - if ((parent_host =3D virNodeDeviceGetParentHost(&driver->devs, def, - EXISTING_DEVICE)) < 0) + if ((parent_host =3D virNodeDeviceObjGetParentHost(&driver->devs, def, + EXISTING_DEVICE)) < 0) goto cleanup; =20 if (virVHBAManageVport(parent_host, wwpn, wwnn, VPORT_DELETE) < 0) diff --git a/src/node_device/node_device_hal.c b/src/node_device/node_devic= e_hal.c index fb7bf25..f17618c 100644 --- a/src/node_device/node_device_hal.c +++ b/src/node_device/node_device_hal.c @@ -493,9 +493,7 @@ dev_create(const char *udi) /* Some devices don't have a path in sysfs, so ignore failure */ (void)get_str_prop(ctx, udi, "linux.sysfs_path", &devicePath); =20 - dev =3D virNodeDeviceAssignDef(&driver->devs, - def); - + dev =3D virNodeDeviceObjAssignDef(&driver->devs, def); if (!dev) { VIR_FREE(devicePath); goto failure; @@ -525,7 +523,7 @@ dev_refresh(const char *udi) virNodeDeviceObjPtr dev; =20 nodeDeviceLock(); - dev =3D virNodeDeviceFindByName(&driver->devs, name); + dev =3D virNodeDeviceObjFindByName(&driver->devs, name); if (dev) { /* Simply "rediscover" device -- incrementally handling changes * to sub-capabilities (like net.80203) is nasty ... so avoid it. @@ -557,7 +555,7 @@ device_removed(LibHalContext *ctx ATTRIBUTE_UNUSED, virNodeDeviceObjPtr dev; =20 nodeDeviceLock(); - dev =3D virNodeDeviceFindByName(&driver->devs, name); + dev =3D virNodeDeviceObjFindByName(&driver->devs, name); VIR_DEBUG("%s", name); if (dev) virNodeDeviceObjRemove(&driver->devs, &dev); @@ -575,7 +573,7 @@ device_cap_added(LibHalContext *ctx, virNodeDeviceObjPtr dev; =20 nodeDeviceLock(); - dev =3D virNodeDeviceFindByName(&driver->devs, name); + dev =3D virNodeDeviceObjFindByName(&driver->devs, name); nodeDeviceUnlock(); VIR_DEBUG("%s %s", cap, name); if (dev) { diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_devi= ce_udev.c index 1016075..6bc0a53 100644 --- a/src/node_device/node_device_udev.c +++ b/src/node_device/node_device_udev.c @@ -1099,7 +1099,7 @@ static int udevRemoveOneDevice(struct udev_device *de= vice) int ret =3D -1; =20 name =3D udev_device_get_syspath(device); - dev =3D virNodeDeviceFindBySysfsPath(&driver->devs, name); + dev =3D virNodeDeviceObjFindBySysfsPath(&driver->devs, name); =20 if (!dev) { VIR_DEBUG("Failed to find device to remove that has udev name '%s'= ", @@ -1146,8 +1146,8 @@ static int udevSetParent(struct udev_device *device, goto cleanup; } =20 - dev =3D virNodeDeviceFindBySysfsPath(&driver->devs, - parent_sysfs_path); + dev =3D virNodeDeviceObjFindBySysfsPath(&driver->devs, + parent_sysfs_path); if (dev !=3D NULL) { if (VIR_STRDUP(def->parent, dev->def->name) < 0) { virNodeDeviceObjUnlock(dev); @@ -1203,7 +1203,7 @@ static int udevAddOneDevice(struct udev_device *devic= e) if (udevSetParent(device, def) !=3D 0) goto cleanup; =20 - dev =3D virNodeDeviceFindByName(&driver->devs, def->name); + dev =3D virNodeDeviceObjFindByName(&driver->devs, def->name); if (dev) { virNodeDeviceObjUnlock(dev); new_device =3D false; @@ -1211,7 +1211,7 @@ static int udevAddOneDevice(struct udev_device *devic= e) =20 /* If this is a device change, the old definition will be freed * and the current definition will take its place. */ - dev =3D virNodeDeviceAssignDef(&driver->devs, def); + dev =3D virNodeDeviceObjAssignDef(&driver->devs, def); if (dev =3D=3D NULL) goto cleanup; =20 @@ -1492,7 +1492,7 @@ static int udevSetupSystemDev(void) udevGetDMIData(&def->caps->data); #endif =20 - dev =3D virNodeDeviceAssignDef(&driver->devs, def); + dev =3D virNodeDeviceObjAssignDef(&driver->devs, def); if (dev =3D=3D NULL) goto cleanup; =20 diff --git a/src/test/test_driver.c b/src/test/test_driver.c index c6214c6..61c82b9 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -1166,7 +1166,7 @@ testParseNodedevs(testDriverPtr privconn, if (!def) goto error; =20 - if (!(obj =3D virNodeDeviceAssignDef(&privconn->devs, def))) { + if (!(obj =3D virNodeDeviceObjAssignDef(&privconn->devs, def))) { virNodeDeviceDefFree(def); goto error; } @@ -5424,7 +5424,7 @@ testNodeNumOfDevices(virConnectPtr conn, testDriverLock(driver); for (i =3D 0; i < driver->devs.count; i++) if ((cap =3D=3D NULL) || - virNodeDeviceHasCap(driver->devs.objs[i], cap)) + virNodeDeviceObjHasCap(driver->devs.objs[i], cap)) ++ndevs; testDriverUnlock(driver); =20 @@ -5448,7 +5448,7 @@ testNodeListDevices(virConnectPtr conn, for (i =3D 0; i < driver->devs.count && ndevs < maxnames; i++) { virNodeDeviceObjLock(driver->devs.objs[i]); if (cap =3D=3D NULL || - virNodeDeviceHasCap(driver->devs.objs[i], cap)) { + virNodeDeviceObjHasCap(driver->devs.objs[i], cap)) { if (VIR_STRDUP(names[ndevs++], driver->devs.objs[i]->def->name= ) < 0) { virNodeDeviceObjUnlock(driver->devs.objs[i]); goto failure; @@ -5476,7 +5476,7 @@ testNodeDeviceLookupByName(virConnectPtr conn, const = char *name) virNodeDevicePtr ret =3D NULL; =20 testDriverLock(driver); - obj =3D virNodeDeviceFindByName(&driver->devs, name); + obj =3D virNodeDeviceObjFindByName(&driver->devs, name); testDriverUnlock(driver); =20 if (!obj) { @@ -5508,7 +5508,7 @@ testNodeDeviceGetXMLDesc(virNodeDevicePtr dev, virCheckFlags(0, NULL); =20 testDriverLock(driver); - obj =3D virNodeDeviceFindByName(&driver->devs, dev->name); + obj =3D virNodeDeviceObjFindByName(&driver->devs, dev->name); testDriverUnlock(driver); =20 if (!obj) { @@ -5534,7 +5534,7 @@ testNodeDeviceGetParent(virNodeDevicePtr dev) char *ret =3D NULL; =20 testDriverLock(driver); - obj =3D virNodeDeviceFindByName(&driver->devs, dev->name); + obj =3D virNodeDeviceObjFindByName(&driver->devs, dev->name); testDriverUnlock(driver); =20 if (!obj) { @@ -5568,7 +5568,7 @@ testNodeDeviceNumOfCaps(virNodeDevicePtr dev) int ret =3D -1; =20 testDriverLock(driver); - obj =3D virNodeDeviceFindByName(&driver->devs, dev->name); + obj =3D virNodeDeviceObjFindByName(&driver->devs, dev->name); testDriverUnlock(driver); =20 if (!obj) { @@ -5599,7 +5599,7 @@ testNodeDeviceListCaps(virNodeDevicePtr dev, char **c= onst names, int maxnames) int ret =3D -1; =20 testDriverLock(driver); - obj =3D virNodeDeviceFindByName(&driver->devs, dev->name); + obj =3D virNodeDeviceObjFindByName(&driver->devs, dev->name); testDriverUnlock(driver); =20 if (!obj) { @@ -5647,7 +5647,7 @@ testNodeDeviceMockCreateVport(testDriverPtr driver, * using the scsi_host11 definition, changing the name and the * scsi_host capability fields before calling virNodeDeviceAssignDef * to add the def to the node device objects list. */ - if (!(objcopy =3D virNodeDeviceFindByName(&driver->devs, "scsi_host11"= ))) + if (!(objcopy =3D virNodeDeviceObjFindByName(&driver->devs, "scsi_host= 11"))) goto cleanup; =20 xml =3D virNodeDeviceDefFormat(objcopy->def); @@ -5687,7 +5687,7 @@ testNodeDeviceMockCreateVport(testDriverPtr driver, caps =3D caps->next; } =20 - if (!(obj =3D virNodeDeviceAssignDef(&driver->devs, def))) + if (!(obj =3D virNodeDeviceObjAssignDef(&driver->devs, def))) goto cleanup; def =3D NULL; =20 @@ -5730,7 +5730,7 @@ testNodeDeviceCreateXML(virConnectPtr conn, /* Unlike the "real" code we don't need the parent_host in order to * call virVHBAManageVport, but still let's make sure the code finds * something valid and no one messed up the mock environment. */ - if (virNodeDeviceGetParentHost(&driver->devs, def, CREATE_DEVICE) < 0) + if (virNodeDeviceObjGetParentHost(&driver->devs, def, CREATE_DEVICE) <= 0) goto cleanup; =20 /* In the real code, we'd call virVHBAManageVport followed by @@ -5772,7 +5772,7 @@ testNodeDeviceDestroy(virNodeDevicePtr dev) virObjectEventPtr event =3D NULL; =20 testDriverLock(driver); - obj =3D virNodeDeviceFindByName(&driver->devs, dev->name); + obj =3D virNodeDeviceObjFindByName(&driver->devs, dev->name); testDriverUnlock(driver); =20 if (!obj) { @@ -5796,8 +5796,8 @@ testNodeDeviceDestroy(virNodeDevicePtr dev) =20 /* We do this just for basic validation, but also avoid finding a * vport capable HBA if for some reason our vHBA doesn't exist */ - if (virNodeDeviceGetParentHost(&driver->devs, obj->def, - EXISTING_DEVICE) < 0) { + if (virNodeDeviceObjGetParentHost(&driver->devs, obj->def, + EXISTING_DEVICE) < 0) { obj =3D NULL; goto out; } --=20 2.9.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list