From nobody Mon Feb 9 02:13:05 2026 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 1489180485178979.9834590897486; Fri, 10 Mar 2017 13:14:45 -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 v2ALBV1W009195; Fri, 10 Mar 2017 16:11:31 -0500 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v2ALAxVI023971 for ; Fri, 10 Mar 2017 16:10:59 -0500 Received: from localhost.localdomain.com (ovpn-117-9.phx2.redhat.com [10.3.117.9]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id v2ALArRr011410 for ; Fri, 10 Mar 2017 16:10:59 -0500 From: John Ferlan To: libvir-list@redhat.com Date: Fri, 10 Mar 2017 16:10:43 -0500 Message-Id: <20170310211050.27784-12-jferlan@redhat.com> In-Reply-To: <20170310211050.27784-1-jferlan@redhat.com> References: <20170310211050.27784-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 11/18] conf: Rework storage_conf to use adapter specific typedefs 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" Rework the helpers/APIs to use the FCHost and SCSIHost adapter types. Continue to realign the code for shorter lines. Signed-off-by: John Ferlan --- src/conf/storage_conf.c | 112 ++++++++++++++++++++++++++------------------= ---- 1 file changed, 61 insertions(+), 51 deletions(-) diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c index 8709101..45dc860 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -2085,16 +2085,16 @@ virStoragePoolObjIsDuplicate(virStoragePoolObjListP= tr pools, =20 =20 static int -getSCSIHostNumber(virStoragePoolSourceAdapter adapter, +getSCSIHostNumber(virStorageAdapterSCSIHostPtr scsi_host, unsigned int *hostnum) { int ret =3D -1; unsigned int num; char *name =3D NULL; =20 - if (adapter.data.scsi_host.has_parent) { - virPCIDeviceAddress addr =3D adapter.data.scsi_host.parentaddr; - unsigned int unique_id =3D adapter.data.scsi_host.unique_id; + if (scsi_host->has_parent) { + virPCIDeviceAddress addr =3D scsi_host->parentaddr; + unsigned int unique_id =3D scsi_host->unique_id; =20 if (!(name =3D virSCSIHostGetNameByParentaddr(addr.domain, addr.bus, @@ -2105,7 +2105,7 @@ getSCSIHostNumber(virStoragePoolSourceAdapter adapter, if (virSCSIHostGetNumber(name, &num) < 0) goto cleanup; } else { - if (virSCSIHostGetNumber(adapter.data.scsi_host.name, &num) < 0) + if (virSCSIHostGetNumber(scsi_host->name, &num) < 0) goto cleanup; } =20 @@ -2136,7 +2136,7 @@ virStorageIsSameHostnum(const char *name, * matchFCHostToSCSIHost: * * @conn: Connection pointer - * @fc_adapter: fc_host adapter (either def or pool->def) + * @fchost: fc_host adapter ptr (either def or pool->def) * @scsi_hostnum: Already determined "scsi_pool" hostnum * * Returns true/false whether there is a match between the incoming @@ -2144,7 +2144,7 @@ virStorageIsSameHostnum(const char *name, */ static bool matchFCHostToSCSIHost(virConnectPtr conn, - virStoragePoolSourceAdapter fc_adapter, + virStorageAdapterFCHostPtr fchost, unsigned int scsi_hostnum) { bool ret =3D false; @@ -2155,15 +2155,14 @@ matchFCHostToSCSIHost(virConnectPtr conn, /* If we have a parent defined, get its hostnum, and compare to the * scsi_hostnum. If they are the same, then we have a match */ - if (fc_adapter.data.fchost.parent && - virStorageIsSameHostnum(fc_adapter.data.fchost.parent, scsi_hostnu= m)) + if (fchost->parent && + virStorageIsSameHostnum(fchost->parent, scsi_hostnum)) return true; =20 - /* If we find an fc_adapter name, then either libvirt created a vHBA + /* If we find an fc adapter name, then either libvirt created a vHBA * for this fc_host or a 'virsh nodedev-create' generated a vHBA. */ - if ((name =3D virVHBAGetHostByWWN(NULL, fc_adapter.data.fchost.wwnn, - fc_adapter.data.fchost.wwpn))) { + if ((name =3D virVHBAGetHostByWWN(NULL, fchost->wwnn, fchost->wwpn))) { =20 /* Get the scsi_hostN for the vHBA in order to see if it * matches our scsi_hostnum @@ -2178,7 +2177,7 @@ matchFCHostToSCSIHost(virConnectPtr conn, * If the parent fc_hostnum is the same as the scsi_hostnum, we * have a match. */ - if (conn && !fc_adapter.data.fchost.parent) { + if (conn && !fchost->parent) { if (virAsprintf(&scsi_host_name, "scsi_%s", name) < 0) goto cleanup; if ((parent_name =3D virNodeDeviceGetParentName(conn, @@ -2210,25 +2209,21 @@ matchFCHostToSCSIHost(virConnectPtr conn, return ret; } =20 + static bool -matchSCSIAdapterParent(virStoragePoolObjPtr pool, - virStoragePoolDefPtr def) +matchSCSIAdapterParent(virStorageAdapterSCSIHostPtr pool_scsi_host, + virStorageAdapterSCSIHostPtr def_scsi_host) { - virPCIDeviceAddressPtr pooladdr =3D - &pool->def->source.adapter.data.scsi_host.parentaddr; - virPCIDeviceAddressPtr defaddr =3D - &def->source.adapter.data.scsi_host.parentaddr; - int pool_unique_id =3D - pool->def->source.adapter.data.scsi_host.unique_id; - int def_unique_id =3D - def->source.adapter.data.scsi_host.unique_id; + virPCIDeviceAddressPtr pooladdr =3D &pool_scsi_host->parentaddr; + virPCIDeviceAddressPtr defaddr =3D &def_scsi_host->parentaddr; + if (pooladdr->domain =3D=3D defaddr->domain && pooladdr->bus =3D=3D defaddr->bus && pooladdr->slot =3D=3D defaddr->slot && pooladdr->function =3D=3D defaddr->function && - pool_unique_id =3D=3D def_unique_id) { + pool_scsi_host->unique_id =3D=3D def_scsi_host->unique_id) return true; - } + return false; } =20 @@ -2271,6 +2266,8 @@ virStoragePoolSourceFindDuplicate(virConnectPtr conn, int ret =3D 1; virStoragePoolObjPtr pool =3D NULL; virStoragePoolObjPtr matchpool =3D NULL; + virStoragePoolSourceAdapterPtr pool_adapter; + virStoragePoolSourceAdapterPtr def_adapter; =20 /* Check the pool list for duplicate underlying storage */ for (i =3D 0; i < pools->count; i++) { @@ -2306,63 +2303,76 @@ virStoragePoolSourceFindDuplicate(virConnectPtr con= n, break; =20 case VIR_STORAGE_POOL_SCSI: - if (pool->def->source.adapter.type =3D=3D + pool_adapter =3D &pool->def->source.adapter; + def_adapter =3D &def->source.adapter; + + if (pool_adapter->type =3D=3D VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_FC_HOST && - def->source.adapter.type =3D=3D + def_adapter->type =3D=3D VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_FC_HOST) { - if (STREQ(pool->def->source.adapter.data.fchost.wwnn, - def->source.adapter.data.fchost.wwnn) && - STREQ(pool->def->source.adapter.data.fchost.wwpn, - def->source.adapter.data.fchost.wwpn)) + virStorageAdapterFCHostPtr pool_fchost =3D + &pool_adapter->data.fchost; + virStorageAdapterFCHostPtr def_fchost =3D + &def_adapter->data.fchost; + + if (STREQ(pool_fchost->wwnn, def_fchost->wwnn) && + STREQ(pool_fchost->wwpn, def_fchost->wwpn)) matchpool =3D pool; - } else if (pool->def->source.adapter.type =3D=3D + } else if (pool_adapter->type =3D=3D VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_SCSI_HOST && - def->source.adapter.type =3D=3D + def_adapter->type =3D=3D VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_SCSI_HOST) { + virStorageAdapterSCSIHostPtr pool_scsi_host =3D + &pool_adapter->data.scsi_host; + virStorageAdapterSCSIHostPtr def_scsi_host =3D + &def_adapter->data.scsi_host; unsigned int pool_hostnum, def_hostnum; =20 - if (pool->def->source.adapter.data.scsi_host.has_parent && - def->source.adapter.data.scsi_host.has_parent && - matchSCSIAdapterParent(pool, def)) { + if (pool_scsi_host->has_parent && + def_scsi_host->has_parent && + matchSCSIAdapterParent(pool_scsi_host, def_scsi_host))= { matchpool =3D pool; break; } =20 - if (getSCSIHostNumber(pool->def->source.adapter, - &pool_hostnum) < 0 || - getSCSIHostNumber(def->source.adapter, &def_hostnum) <= 0) + if (getSCSIHostNumber(pool_scsi_host, &pool_hostnum) < 0 || + getSCSIHostNumber(def_scsi_host, &def_hostnum) < 0) break; if (pool_hostnum =3D=3D def_hostnum) matchpool =3D pool; - } else if (pool->def->source.adapter.type =3D=3D + } else if (pool_adapter->type =3D=3D VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_FC_HOST && - def->source.adapter.type =3D=3D + def_adapter->type =3D=3D VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_SCSI_HOST) { + virStorageAdapterFCHostPtr pool_fchost =3D + &pool_adapter->data.fchost; + virStorageAdapterSCSIHostPtr def_scsi_host =3D + &def_adapter->data.scsi_host; unsigned int scsi_hostnum; =20 /* Get the scsi_hostN for the scsi_host source adapter def= */ - if (getSCSIHostNumber(def->source.adapter, - &scsi_hostnum) < 0) + if (getSCSIHostNumber(def_scsi_host, &scsi_hostnum) < 0) break; =20 - if (matchFCHostToSCSIHost(conn, pool->def->source.adapter, - scsi_hostnum)) { + if (matchFCHostToSCSIHost(conn, pool_fchost, scsi_hostnum)= ) { matchpool =3D pool; break; } =20 - } else if (pool->def->source.adapter.type =3D=3D + } else if (pool_adapter->type =3D=3D VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_SCSI_HOST && - def->source.adapter.type =3D=3D + def_adapter->type =3D=3D VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_FC_HOST) { + virStorageAdapterSCSIHostPtr pool_scsi_host =3D + &pool_adapter->data.scsi_host; + virStorageAdapterFCHostPtr def_fchost =3D + &def_adapter->data.fchost; unsigned int scsi_hostnum; =20 - if (getSCSIHostNumber(pool->def->source.adapter, - &scsi_hostnum) < 0) + if (getSCSIHostNumber(pool_scsi_host, &scsi_hostnum) < 0) break; =20 - if (matchFCHostToSCSIHost(conn, def->source.adapter, - scsi_hostnum)) { + if (matchFCHostToSCSIHost(conn, def_fchost, scsi_hostnum))= { matchpool =3D pool; break; } --=20 2.9.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list