From nobody Sat Apr 27 20:34:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1495742261917646.5397449748649; Thu, 25 May 2017 12:57:41 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 607737F4D1; Thu, 25 May 2017 19:57:39 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 29FE5176A9; Thu, 25 May 2017 19:57:39 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id D636D180BAF9; Thu, 25 May 2017 19:57:38 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v4PJvON4016841 for ; Thu, 25 May 2017 15:57:24 -0400 Received: by smtp.corp.redhat.com (Postfix) id 9ED057F8D9; Thu, 25 May 2017 19:57:24 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-108.phx2.redhat.com [10.3.116.108]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2A3A217DF6 for ; Thu, 25 May 2017 19:57:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 607737F4D1 Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 607737F4D1 From: John Ferlan To: libvir-list@redhat.com Date: Thu, 25 May 2017 15:56:58 -0400 Message-Id: <20170525195711.27087-2-jferlan@redhat.com> In-Reply-To: <20170525195711.27087-1-jferlan@redhat.com> References: <20170525195711.27087-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 01/14] test: Adjust cleanup/error paths for nodedev test APIs 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-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Thu, 25 May 2017 19:57:40 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" - Rather than "goto cleanup;" on failure to virNodeDeviceObjFindByName an @obj, just return directly. This then allows the cleanup: label code to not have to check "if (obj)" before calling virNodeDeviceObjUnlock. This also simplifies some exit logic... - In testNodeDeviceObjFindByName use an error: label to handle the failure and don't do the ncaps++ within the VIR_STRDUP() source target index. Only increment ncaps after success. Easier on eyes at error label too. - In testNodeDeviceDestroy use "cleanup" rather than "out" for the goto Signed-off-by: John Ferlan --- src/test/test_driver.c | 75 +++++++++++++++++++---------------------------= ---- 1 file changed, 29 insertions(+), 46 deletions(-) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 2db3f7d..3389edd 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -4512,7 +4512,6 @@ testDestroyVport(testDriverPtr privconn, const char *wwnn ATTRIBUTE_UNUSED, const char *wwpn ATTRIBUTE_UNUSED) { - int ret =3D -1; virNodeDeviceObjPtr obj =3D NULL; virObjectEventPtr event =3D NULL; =20 @@ -4526,7 +4525,7 @@ testDestroyVport(testDriverPtr privconn, if (!(obj =3D virNodeDeviceObjFindByName(&privconn->devs, "scsi_host12= "))) { virReportError(VIR_ERR_NO_NODE_DEVICE, "%s", _("no node device with matching name 'scsi_host12'"= )); - goto cleanup; + return -1; } =20 event =3D virNodeDeviceEventLifecycleNew("scsi_host12", @@ -4535,13 +4534,8 @@ testDestroyVport(testDriverPtr privconn, =20 virNodeDeviceObjRemove(&privconn->devs, &obj); =20 - ret =3D 0; - - cleanup: - if (obj) - virNodeDeviceObjUnlock(obj); testObjectEventQueue(privconn, event); - return ret; + return 0; } =20 =20 @@ -5328,16 +5322,14 @@ testNodeDeviceLookupByName(virConnectPtr conn, cons= t char *name) virNodeDevicePtr ret =3D NULL; =20 if (!(obj =3D testNodeDeviceObjFindByName(driver, name))) - goto cleanup; + return NULL; =20 if ((ret =3D virGetNodeDevice(conn, name))) { if (VIR_STRDUP(ret->parent, obj->def->parent) < 0) virObjectUnref(ret); } =20 - cleanup: - if (obj) - virNodeDeviceObjUnlock(obj); + virNodeDeviceObjUnlock(obj); return ret; } =20 @@ -5352,13 +5344,11 @@ testNodeDeviceGetXMLDesc(virNodeDevicePtr dev, virCheckFlags(0, NULL); =20 if (!(obj =3D testNodeDeviceObjFindByName(driver, dev->name))) - goto cleanup; + return NULL; =20 ret =3D virNodeDeviceDefFormat(obj->def); =20 - cleanup: - if (obj) - virNodeDeviceObjUnlock(obj); + virNodeDeviceObjUnlock(obj); return ret; } =20 @@ -5370,7 +5360,7 @@ testNodeDeviceGetParent(virNodeDevicePtr dev) char *ret =3D NULL; =20 if (!(obj =3D testNodeDeviceObjFindByName(driver, dev->name))) - goto cleanup; + return NULL; =20 if (obj->def->parent) { ignore_value(VIR_STRDUP(ret, obj->def->parent)); @@ -5379,9 +5369,7 @@ testNodeDeviceGetParent(virNodeDevicePtr dev) "%s", _("no parent for this device")); } =20 - cleanup: - if (obj) - virNodeDeviceObjUnlock(obj); + virNodeDeviceObjUnlock(obj); return ret; } =20 @@ -5393,19 +5381,15 @@ testNodeDeviceNumOfCaps(virNodeDevicePtr dev) virNodeDeviceObjPtr obj; virNodeDevCapsDefPtr caps; int ncaps =3D 0; - int ret =3D -1; =20 if (!(obj =3D testNodeDeviceObjFindByName(driver, dev->name))) - goto cleanup; + return -1; =20 for (caps =3D obj->def->caps; caps; caps =3D caps->next) ++ncaps; - ret =3D ncaps; =20 - cleanup: - if (obj) - virNodeDeviceObjUnlock(obj); - return ret; + virNodeDeviceObjUnlock(obj); + return ncaps; } =20 =20 @@ -5416,26 +5400,25 @@ testNodeDeviceListCaps(virNodeDevicePtr dev, char *= *const names, int maxnames) virNodeDeviceObjPtr obj; virNodeDevCapsDefPtr caps; int ncaps =3D 0; - int ret =3D -1; =20 if (!(obj =3D testNodeDeviceObjFindByName(driver, dev->name))) - goto cleanup; + return -1; =20 for (caps =3D obj->def->caps; caps && ncaps < maxnames; caps =3D caps-= >next) { - if (VIR_STRDUP(names[ncaps++], virNodeDevCapTypeToString(caps->dat= a.type)) < 0) - goto cleanup; + if (VIR_STRDUP(names[ncaps], + virNodeDevCapTypeToString(caps->data.type)) < 0) + goto error; + ncaps++; } - ret =3D ncaps; =20 - cleanup: - if (obj) - virNodeDeviceObjUnlock(obj); - if (ret =3D=3D -1) { - --ncaps; - while (--ncaps >=3D 0) - VIR_FREE(names[ncaps]); - } - return ret; + virNodeDeviceObjUnlock(obj); + return ncaps; + + error: + while (--ncaps >=3D 0) + VIR_FREE(names[ncaps]); + virNodeDeviceObjUnlock(obj); + return -1; } =20 =20 @@ -5584,13 +5567,13 @@ testNodeDeviceDestroy(virNodeDevicePtr dev) virObjectEventPtr event =3D NULL; =20 if (!(obj =3D testNodeDeviceObjFindByName(driver, dev->name))) - goto out; + return -1; =20 if (virNodeDeviceGetWWNs(obj->def, &wwnn, &wwpn) =3D=3D -1) - goto out; + goto cleanup; =20 if (VIR_STRDUP(parent_name, obj->def->parent) < 0) - goto out; + goto cleanup; =20 /* virNodeDeviceGetParentHost will cause the device object's lock to be * taken, so we have to dup the parent's name and drop the lock @@ -5603,7 +5586,7 @@ testNodeDeviceDestroy(virNodeDevicePtr dev) if (virNodeDeviceObjGetParentHost(&driver->devs, obj->def, EXISTING_DEVICE) < 0) { obj =3D NULL; - goto out; + goto cleanup; } =20 event =3D virNodeDeviceEventLifecycleNew(dev->name, @@ -5613,7 +5596,7 @@ testNodeDeviceDestroy(virNodeDevicePtr dev) virNodeDeviceObjLock(obj); virNodeDeviceObjRemove(&driver->devs, &obj); =20 - out: + cleanup: if (obj) virNodeDeviceObjUnlock(obj); testObjectEventQueue(driver, event); --=20 2.9.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat Apr 27 20:34:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1495742250914431.2878812558006; Thu, 25 May 2017 12:57:30 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 97EC119CF24; Thu, 25 May 2017 19:57:28 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 68FD6756BF; Thu, 25 May 2017 19:57:28 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id CE034180BAF8; Thu, 25 May 2017 19:57:27 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v4PJvP37016849 for ; Thu, 25 May 2017 15:57:25 -0400 Received: by smtp.corp.redhat.com (Postfix) id 9292A7F8DB; Thu, 25 May 2017 19:57:25 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-108.phx2.redhat.com [10.3.116.108]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4D4F717DF6 for ; Thu, 25 May 2017 19:57:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 97EC119CF24 Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 97EC119CF24 From: John Ferlan To: libvir-list@redhat.com Date: Thu, 25 May 2017 15:56:59 -0400 Message-Id: <20170525195711.27087-3-jferlan@redhat.com> In-Reply-To: <20170525195711.27087-1-jferlan@redhat.com> References: <20170525195711.27087-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 02/14] nodedev: Fix locking in virNodeDeviceObjRemove 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-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Thu, 25 May 2017 19:57:29 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" The current mechanism doesn't lock each element in devs->objs as it's looking at it, rather it keeps locking/unlocking the passed element for which the removal is being attempted. Fix things to lock each element as we're looking at them. Signed-off-by: John Ferlan --- src/conf/virnodedeviceobj.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/conf/virnodedeviceobj.c b/src/conf/virnodedeviceobj.c index 02ac544..1352720 100644 --- a/src/conf/virnodedeviceobj.c +++ b/src/conf/virnodedeviceobj.c @@ -281,16 +281,16 @@ virNodeDeviceObjRemove(virNodeDeviceObjListPtr devs, virNodeDeviceObjUnlock(*dev); =20 for (i =3D 0; i < devs->count; i++) { - virNodeDeviceObjLock(*dev); + virNodeDeviceObjLock(devs->objs[i]); if (devs->objs[i] =3D=3D *dev) { - virNodeDeviceObjUnlock(*dev); + virNodeDeviceObjUnlock(devs->objs[i]); virNodeDeviceObjFree(devs->objs[i]); *dev =3D NULL; =20 VIR_DELETE_ELEMENT(devs->objs, i, devs->count); break; } - virNodeDeviceObjUnlock(*dev); + virNodeDeviceObjUnlock(devs->objs[i]); } } =20 --=20 2.9.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat Apr 27 20:34:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1495742266310397.82536538822603; Thu, 25 May 2017 12:57:46 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 14D0317AC58; Thu, 25 May 2017 19:57:44 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DDFD817D39; Thu, 25 May 2017 19:57:43 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 980734A492; Thu, 25 May 2017 19:57:43 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v4PJvR6P016857 for ; Thu, 25 May 2017 15:57:27 -0400 Received: by smtp.corp.redhat.com (Postfix) id 364BC7FDE9; Thu, 25 May 2017 19:57:26 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-108.phx2.redhat.com [10.3.116.108]) by smtp.corp.redhat.com (Postfix) with ESMTP id DCBC617DF6 for ; Thu, 25 May 2017 19:57:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 14D0317AC58 Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 14D0317AC58 From: John Ferlan To: libvir-list@redhat.com Date: Thu, 25 May 2017 15:57:00 -0400 Message-Id: <20170525195711.27087-4-jferlan@redhat.com> In-Reply-To: <20170525195711.27087-1-jferlan@redhat.com> References: <20170525195711.27087-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 03/14] nodedev: Need to check for vport capable scsi_host for vHBA searches 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-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Thu, 25 May 2017 19:57:45 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" When searching for an NPIV capable fc_host, not only does there need to be an "fc_host" capability with the specified wwnn/wwpn or fabric_wwn, but that scsi_host must be vport capable; otherwise, one could end up picking an exising vHBA/NPIV which wouldn't be good. Currently not a problem since scsi_hosts are in an as found forward linked list and the vport capable scsi_hosts will always appear before a vHBA by definition. However, in the near term future a hash table will be used to lookup the devices and that could cause problems for these algorithms. Signed-off-by: John Ferlan --- src/conf/virnodedeviceobj.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/conf/virnodedeviceobj.c b/src/conf/virnodedeviceobj.c index 1352720..bbb6eeb 100644 --- a/src/conf/virnodedeviceobj.c +++ b/src/conf/virnodedeviceobj.c @@ -165,7 +165,8 @@ virNodeDeviceFindByWWNs(virNodeDeviceObjListPtr devs, 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)) + STREQ_NULLABLE(cap->data.scsi_host.wwpn, parent_wwpn) && + virNodeDeviceFindVPORTCapDef(devs->objs[i])) return devs->objs[i]; virNodeDeviceObjUnlock(devs->objs[i]); } @@ -184,7 +185,8 @@ virNodeDeviceFindByFabricWWN(virNodeDeviceObjListPtr de= vs, 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)) + STREQ_NULLABLE(cap->data.scsi_host.fabric_wwn, parent_fabric_w= wn) && + virNodeDeviceFindVPORTCapDef(devs->objs[i])) return devs->objs[i]; virNodeDeviceObjUnlock(devs->objs[i]); } --=20 2.9.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat Apr 27 20:34:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1495742269946569.1694920340253; Thu, 25 May 2017 12:57:49 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E89DF796F1; Thu, 25 May 2017 19:57:47 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A48347F8DC; Thu, 25 May 2017 19:57:47 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 58145181A72C; Thu, 25 May 2017 19:57:47 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v4PJvR7X016862 for ; Thu, 25 May 2017 15:57:27 -0400 Received: by smtp.corp.redhat.com (Postfix) id 4358217DF6; Thu, 25 May 2017 19:57:27 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-108.phx2.redhat.com [10.3.116.108]) by smtp.corp.redhat.com (Postfix) with ESMTP id F29C37F8D9 for ; Thu, 25 May 2017 19:57:26 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com E89DF796F1 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com E89DF796F1 From: John Ferlan To: libvir-list@redhat.com Date: Thu, 25 May 2017 15:57:01 -0400 Message-Id: <20170525195711.27087-5-jferlan@redhat.com> In-Reply-To: <20170525195711.27087-1-jferlan@redhat.com> References: <20170525195711.27087-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 04/14] nodedev: Use switch for virNodeDeviceObjHasCap and virNodeDeviceCapMatch 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-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 25 May 2017 19:57:48 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" In order to ensure that whenever something is added to virNodeDevCapType that both functions are considered for processing of a new capability, change the if-then-else construct into a switch statement. Signed-off-by: John Ferlan --- src/conf/virnodedeviceobj.c | 80 +++++++++++++++++++++++++++++++++--------= ---- 1 file changed, 60 insertions(+), 20 deletions(-) diff --git a/src/conf/virnodedeviceobj.c b/src/conf/virnodedeviceobj.c index bbb6eeb..913cdda 100644 --- a/src/conf/virnodedeviceobj.c +++ b/src/conf/virnodedeviceobj.c @@ -48,19 +48,41 @@ virNodeDeviceObjHasCap(const virNodeDeviceObj *dev, while (caps) { if (STREQ(cap, virNodeDevCapTypeToString(caps->data.type))) { return 1; - } else if (caps->data.type =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; - } else if (caps->data.type =3D=3D VIR_NODE_DEV_CAP_PCI_DEV) { - if ((STREQ(cap, mdev_types)) && - (caps->data.pci_dev.flags & - VIR_NODE_DEV_CAP_FLAG_PCI_MDEV)) - return 1; + } else { + switch (caps->data.type) { + case VIR_NODE_DEV_CAP_PCI_DEV: + if ((STREQ(cap, mdev_types)) && + (caps->data.pci_dev.flags & + VIR_NODE_DEV_CAP_FLAG_PCI_MDEV)) + return 1; + break; + + case VIR_NODE_DEV_CAP_SCSI_HOST: + if ((STREQ(cap, fc_host_cap) && + (caps->data.scsi_host.flags & + VIR_NODE_DEV_CAP_FLAG_HBA_FC_HOST)) || + (STREQ(cap, vports_cap) && + (caps->data.scsi_host.flags & + VIR_NODE_DEV_CAP_FLAG_HBA_VPORT_OPS))) + return 1; + break; + + case VIR_NODE_DEV_CAP_SYSTEM: + case VIR_NODE_DEV_CAP_USB_DEV: + case VIR_NODE_DEV_CAP_USB_INTERFACE: + case VIR_NODE_DEV_CAP_NET: + case VIR_NODE_DEV_CAP_SCSI_TARGET: + case VIR_NODE_DEV_CAP_SCSI: + case VIR_NODE_DEV_CAP_STORAGE: + case VIR_NODE_DEV_CAP_FC_HOST: + case VIR_NODE_DEV_CAP_VPORTS: + case VIR_NODE_DEV_CAP_SCSI_GENERIC: + case VIR_NODE_DEV_CAP_DRM: + case VIR_NODE_DEV_CAP_MDEV_TYPES: + case VIR_NODE_DEV_CAP_MDEV: + case VIR_NODE_DEV_CAP_LAST: + break; + } } =20 caps =3D caps->next; @@ -468,7 +490,15 @@ virNodeDeviceCapMatch(virNodeDeviceObjPtr devobj, if (type =3D=3D cap->data.type) return true; =20 - if (cap->data.type =3D=3D VIR_NODE_DEV_CAP_SCSI_HOST) { + switch (cap->data.type) { + case VIR_NODE_DEV_CAP_PCI_DEV: + if (type =3D=3D VIR_NODE_DEV_CAP_MDEV_TYPES && + (cap->data.pci_dev.flags & + VIR_NODE_DEV_CAP_FLAG_PCI_MDEV)) + return true; + break; + + case 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)) @@ -478,13 +508,23 @@ virNodeDeviceCapMatch(virNodeDeviceObjPtr devobj, (cap->data.scsi_host.flags & VIR_NODE_DEV_CAP_FLAG_HBA_VPORT_OPS)) return true; - } + break; =20 - if (cap->data.type =3D=3D VIR_NODE_DEV_CAP_PCI_DEV) { - if (type =3D=3D VIR_NODE_DEV_CAP_MDEV_TYPES && - (cap->data.pci_dev.flags & - VIR_NODE_DEV_CAP_FLAG_PCI_MDEV)) - return true; + case VIR_NODE_DEV_CAP_SYSTEM: + case VIR_NODE_DEV_CAP_USB_DEV: + case VIR_NODE_DEV_CAP_USB_INTERFACE: + case VIR_NODE_DEV_CAP_NET: + case VIR_NODE_DEV_CAP_SCSI_TARGET: + case VIR_NODE_DEV_CAP_SCSI: + case VIR_NODE_DEV_CAP_STORAGE: + case VIR_NODE_DEV_CAP_FC_HOST: + case VIR_NODE_DEV_CAP_VPORTS: + case VIR_NODE_DEV_CAP_SCSI_GENERIC: + case VIR_NODE_DEV_CAP_DRM: + case VIR_NODE_DEV_CAP_MDEV_TYPES: + case VIR_NODE_DEV_CAP_MDEV: + case VIR_NODE_DEV_CAP_LAST: + break; } } =20 --=20 2.9.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat Apr 27 20:34:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 149574225211153.58852260135882; Thu, 25 May 2017 12:57:32 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id EB7DD448D6F; Thu, 25 May 2017 19:57:29 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AD4B718B41; Thu, 25 May 2017 19:57:29 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 612594A48E; Thu, 25 May 2017 19:57:29 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v4PJvRaH016870 for ; Thu, 25 May 2017 15:57:27 -0400 Received: by smtp.corp.redhat.com (Postfix) id E16D77F8DC; Thu, 25 May 2017 19:57:27 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-108.phx2.redhat.com [10.3.116.108]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9B41817DF6 for ; Thu, 25 May 2017 19:57:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com EB7DD448D6F Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com EB7DD448D6F From: John Ferlan To: libvir-list@redhat.com Date: Thu, 25 May 2017 15:57:02 -0400 Message-Id: <20170525195711.27087-6-jferlan@redhat.com> In-Reply-To: <20170525195711.27087-1-jferlan@redhat.com> References: <20170525195711.27087-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 05/14] nodedev: Use common naming 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-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Thu, 25 May 2017 19:57:31 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" A virNodeDeviceObjPtr is an @obj A virNodeDeviceObjListPtr is an @devs Signed-off-by: John Ferlan --- src/conf/virnodedeviceobj.c | 130 ++++++++++++++++++++++------------------= ---- 1 file changed, 65 insertions(+), 65 deletions(-) diff --git a/src/conf/virnodedeviceobj.c b/src/conf/virnodedeviceobj.c index 913cdda..a2d09ad 100644 --- a/src/conf/virnodedeviceobj.c +++ b/src/conf/virnodedeviceobj.c @@ -34,10 +34,10 @@ VIR_LOG_INIT("conf.virnodedeviceobj"); =20 =20 static int -virNodeDeviceObjHasCap(const virNodeDeviceObj *dev, +virNodeDeviceObjHasCap(const virNodeDeviceObj *obj, const char *cap) { - virNodeDevCapsDefPtr caps =3D dev->def->caps; + virNodeDevCapsDefPtr caps =3D obj->def->caps; const char *fc_host_cap =3D virNodeDevCapTypeToString(VIR_NODE_DEV_CAP_FC_HOST); const char *vports_cap =3D @@ -100,9 +100,9 @@ virNodeDeviceObjHasCap(const virNodeDeviceObj *dev, * Pointer to the caps or NULL if not found */ static virNodeDevCapsDefPtr -virNodeDeviceFindFCCapDef(const virNodeDeviceObj *dev) +virNodeDeviceFindFCCapDef(const virNodeDeviceObj *obj) { - virNodeDevCapsDefPtr caps =3D dev->def->caps; + virNodeDevCapsDefPtr caps =3D obj->def->caps; =20 while (caps) { if (caps->data.type =3D=3D VIR_NODE_DEV_CAP_SCSI_HOST && @@ -124,9 +124,9 @@ virNodeDeviceFindFCCapDef(const virNodeDeviceObj *dev) * Pointer to the caps or NULL if not found */ static virNodeDevCapsDefPtr -virNodeDeviceFindVPORTCapDef(const virNodeDeviceObj *dev) +virNodeDeviceFindVPORTCapDef(const virNodeDeviceObj *obj) { - virNodeDevCapsDefPtr caps =3D dev->def->caps; + virNodeDevCapsDefPtr caps =3D obj->def->caps; =20 while (caps) { if (caps->data.type =3D=3D VIR_NODE_DEV_CAP_SCSI_HOST && @@ -235,18 +235,18 @@ virNodeDeviceFindByCap(virNodeDeviceObjListPtr devs, =20 =20 void -virNodeDeviceObjFree(virNodeDeviceObjPtr dev) +virNodeDeviceObjFree(virNodeDeviceObjPtr obj) { - if (!dev) + if (!obj) return; =20 - virNodeDeviceDefFree(dev->def); - if (dev->privateFree) - (*dev->privateFree)(dev->privateData); + virNodeDeviceDefFree(obj->def); + if (obj->privateFree) + (*obj->privateFree)(obj->privateData); =20 - virMutexDestroy(&dev->lock); + virMutexDestroy(&obj->lock); =20 - VIR_FREE(dev); + VIR_FREE(obj); } =20 =20 @@ -265,51 +265,51 @@ virNodeDeviceObjPtr virNodeDeviceObjAssignDef(virNodeDeviceObjListPtr devs, virNodeDeviceDefPtr def) { - virNodeDeviceObjPtr device; + virNodeDeviceObjPtr obj; =20 - if ((device =3D virNodeDeviceObjFindByName(devs, def->name))) { - virNodeDeviceDefFree(device->def); - device->def =3D def; - return device; + if ((obj =3D virNodeDeviceObjFindByName(devs, def->name))) { + virNodeDeviceDefFree(obj->def); + obj->def =3D def; + return obj; } =20 - if (VIR_ALLOC(device) < 0) + if (VIR_ALLOC(obj) < 0) return NULL; =20 - if (virMutexInit(&device->lock) < 0) { + if (virMutexInit(&obj->lock) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("cannot initialize mutex")); - VIR_FREE(device); + VIR_FREE(obj); return NULL; } - virNodeDeviceObjLock(device); + virNodeDeviceObjLock(obj); =20 - if (VIR_APPEND_ELEMENT_COPY(devs->objs, devs->count, device) < 0) { - virNodeDeviceObjUnlock(device); - virNodeDeviceObjFree(device); + if (VIR_APPEND_ELEMENT_COPY(devs->objs, devs->count, obj) < 0) { + virNodeDeviceObjUnlock(obj); + virNodeDeviceObjFree(obj); return NULL; } - device->def =3D def; + obj->def =3D def; =20 - return device; + return obj; =20 } =20 =20 void virNodeDeviceObjRemove(virNodeDeviceObjListPtr devs, - virNodeDeviceObjPtr *dev) + virNodeDeviceObjPtr *obj) { size_t i; =20 - virNodeDeviceObjUnlock(*dev); + virNodeDeviceObjUnlock(*obj); =20 for (i =3D 0; i < devs->count; i++) { virNodeDeviceObjLock(devs->objs[i]); - if (devs->objs[i] =3D=3D *dev) { + if (devs->objs[i] =3D=3D *obj) { virNodeDeviceObjUnlock(devs->objs[i]); virNodeDeviceObjFree(devs->objs[i]); - *dev =3D NULL; + *obj =3D NULL; =20 VIR_DELETE_ELEMENT(devs->objs, i, devs->count); break; @@ -332,15 +332,15 @@ virNodeDeviceObjRemove(virNodeDeviceObjListPtr devs, * parent_host value on success (>=3D 0), -1 otherwise. */ static int -virNodeDeviceFindFCParentHost(virNodeDeviceObjPtr parent) +virNodeDeviceFindFCParentHost(virNodeDeviceObjPtr obj) { - virNodeDevCapsDefPtr cap =3D virNodeDeviceFindVPORTCapDef(parent); + virNodeDevCapsDefPtr cap =3D virNodeDeviceFindVPORTCapDef(obj); =20 if (!cap) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Parent device %s is not capable " "of vport operations"), - parent->def->name); + obj->def->name); return -1; } =20 @@ -353,19 +353,19 @@ virNodeDeviceGetParentHostByParent(virNodeDeviceObjLi= stPtr devs, const char *dev_name, const char *parent_name) { - virNodeDeviceObjPtr parent =3D NULL; + virNodeDeviceObjPtr obj =3D NULL; int ret; =20 - if (!(parent =3D virNodeDeviceObjFindByName(devs, parent_name))) { + if (!(obj =3D virNodeDeviceObjFindByName(devs, parent_name))) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Could not find parent device for '%s'"), dev_name); return -1; } =20 - ret =3D virNodeDeviceFindFCParentHost(parent); + ret =3D virNodeDeviceFindFCParentHost(obj); =20 - virNodeDeviceObjUnlock(parent); + virNodeDeviceObjUnlock(obj); =20 return ret; } @@ -377,19 +377,19 @@ virNodeDeviceGetParentHostByWWNs(virNodeDeviceObjList= Ptr devs, const char *parent_wwnn, const char *parent_wwpn) { - virNodeDeviceObjPtr parent =3D NULL; + virNodeDeviceObjPtr obj =3D NULL; int ret; =20 - if (!(parent =3D virNodeDeviceFindByWWNs(devs, parent_wwnn, parent_wwp= n))) { + if (!(obj =3D virNodeDeviceFindByWWNs(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 virNodeDeviceFindFCParentHost(obj); =20 - virNodeDeviceObjUnlock(parent); + virNodeDeviceObjUnlock(obj); =20 return ret; } @@ -400,19 +400,19 @@ virNodeDeviceGetParentHostByFabricWWN(virNodeDeviceOb= jListPtr devs, const char *dev_name, const char *parent_fabric_wwn) { - virNodeDeviceObjPtr parent =3D NULL; + virNodeDeviceObjPtr obj =3D NULL; int ret; =20 - if (!(parent =3D virNodeDeviceFindByFabricWWN(devs, parent_fabric_wwn)= )) { + if (!(obj =3D virNodeDeviceFindByFabricWWN(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 virNodeDeviceFindFCParentHost(obj); =20 - virNodeDeviceObjUnlock(parent); + virNodeDeviceObjUnlock(obj); =20 return ret; } @@ -421,19 +421,19 @@ virNodeDeviceGetParentHostByFabricWWN(virNodeDeviceOb= jListPtr devs, static int virNodeDeviceFindVportParentHost(virNodeDeviceObjListPtr devs) { - virNodeDeviceObjPtr parent =3D NULL; + virNodeDeviceObjPtr obj =3D NULL; const char *cap =3D virNodeDevCapTypeToString(VIR_NODE_DEV_CAP_VPORTS); int ret; =20 - if (!(parent =3D virNodeDeviceFindByCap(devs, cap))) { + if (!(obj =3D virNodeDeviceFindByCap(devs, cap))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Could not find any vport capable device")); return -1; } =20 - ret =3D virNodeDeviceFindFCParentHost(parent); + ret =3D virNodeDeviceFindFCParentHost(obj); =20 - virNodeDeviceObjUnlock(parent); + virNodeDeviceObjUnlock(obj); =20 return ret; } @@ -481,12 +481,12 @@ virNodeDeviceObjUnlock(virNodeDeviceObjPtr obj) =20 =20 static bool -virNodeDeviceCapMatch(virNodeDeviceObjPtr devobj, +virNodeDeviceCapMatch(virNodeDeviceObjPtr obj, int type) { virNodeDevCapsDefPtr cap =3D NULL; =20 - for (cap =3D devobj->def->caps; cap; cap =3D cap->next) { + for (cap =3D obj->def->caps; cap; cap =3D cap->next) { if (type =3D=3D cap->data.type) return true; =20 @@ -589,9 +589,9 @@ virNodeDeviceObjGetNames(virNodeDeviceObjListPtr devs, =20 =20 #define MATCH(FLAG) ((flags & (VIR_CONNECT_LIST_NODE_DEVICES_CAP_ ## FLAG)= ) && \ - virNodeDeviceCapMatch(devobj, VIR_NODE_DEV_CAP_ ## FL= AG)) + virNodeDeviceCapMatch(obj, VIR_NODE_DEV_CAP_ ## FLAG)) static bool -virNodeDeviceMatch(virNodeDeviceObjPtr devobj, +virNodeDeviceMatch(virNodeDeviceObjPtr obj, unsigned int flags) { /* filter by cap type */ @@ -621,7 +621,7 @@ virNodeDeviceMatch(virNodeDeviceObjPtr devobj, =20 int virNodeDeviceObjListExport(virConnectPtr conn, - virNodeDeviceObjListPtr devobjs, + virNodeDeviceObjListPtr devs, virNodeDevicePtr **devices, virNodeDeviceObjListFilter filter, unsigned int flags) @@ -632,26 +632,26 @@ virNodeDeviceObjListExport(virConnectPtr conn, int ret =3D -1; size_t i; =20 - if (devices && VIR_ALLOC_N(tmp_devices, devobjs->count + 1) < 0) + if (devices && VIR_ALLOC_N(tmp_devices, devs->count + 1) < 0) goto cleanup; =20 - 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)) { + for (i =3D 0; i < devs->count; i++) { + virNodeDeviceObjPtr obj =3D devs->objs[i]; + virNodeDeviceObjLock(obj); + if ((!filter || filter(conn, obj->def)) && + virNodeDeviceMatch(obj, flags)) { if (devices) { - if (!(device =3D virGetNodeDevice(conn, devobj->def->name)= ) || - VIR_STRDUP(device->parent, devobj->def->parent) < 0) { + if (!(device =3D virGetNodeDevice(conn, obj->def->name)) || + VIR_STRDUP(device->parent, obj->def->parent) < 0) { virObjectUnref(device); - virNodeDeviceObjUnlock(devobj); + virNodeDeviceObjUnlock(obj); goto cleanup; } tmp_devices[ndevices] =3D device; } ndevices++; } - virNodeDeviceObjUnlock(devobj); + virNodeDeviceObjUnlock(obj); } =20 if (tmp_devices) { --=20 2.9.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat Apr 27 20:34:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1495742260257683.2707847627021; Thu, 25 May 2017 12:57:40 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8D437C04D295; Thu, 25 May 2017 19:57:38 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 652035DD60; Thu, 25 May 2017 19:57:38 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 146A0180BAFA; Thu, 25 May 2017 19:57:38 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v4PJvWIg016894 for ; Thu, 25 May 2017 15:57:32 -0400 Received: by smtp.corp.redhat.com (Postfix) id 36CD917DF6; Thu, 25 May 2017 19:57:32 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-108.phx2.redhat.com [10.3.116.108]) by smtp.corp.redhat.com (Postfix) with ESMTP id CA4C77F8DC for ; Thu, 25 May 2017 19:57:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 8D437C04D295 Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 8D437C04D295 From: John Ferlan To: libvir-list@redhat.com Date: Thu, 25 May 2017 15:57:03 -0400 Message-Id: <20170525195711.27087-7-jferlan@redhat.com> In-Reply-To: <20170525195711.27087-1-jferlan@redhat.com> References: <20170525195711.27087-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 06/14] nodedev: Cleanup driver code and prototypes 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-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Thu, 25 May 2017 19:57:39 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Alter the node_device_driver source and prototypes to follow more recent code style guidelines w/r/t spacing between functions, format of the function, and the prototype definitions. While the new names for nodeDeviceUpdateCaps, nodeDeviceUpdateDriverName, and nodeDeviceGetTime don't follow exactly w/r/t a "vir" prefix, they do follow other driver nomenclature style. Signed-off-by: John Ferlan --- src/node_device/node_device_driver.c | 41 ++++-- src/node_device/node_device_driver.h | 93 +++++++++---- src/node_device/node_device_udev.c | 256 +++++++++++++++++++++----------= ---- 3 files changed, 252 insertions(+), 138 deletions(-) diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_de= vice_driver.c index ba3da62..2a461fb 100644 --- a/src/node_device/node_device_driver.c +++ b/src/node_device/node_device_driver.c @@ -47,7 +47,9 @@ =20 virNodeDeviceDriverStatePtr driver; =20 -static int update_caps(virNodeDeviceObjPtr dev) + +static int +nodeDeviceUpdateCaps(virNodeDeviceObjPtr dev) { virNodeDevCapsDefPtr cap =3D dev->def->caps; =20 @@ -103,7 +105,8 @@ static int update_caps(virNodeDeviceObjPtr dev) * the driver name for a device each time its entry is used, both for * udev *and* HAL backends. */ -static int update_driver_name(virNodeDeviceObjPtr dev) +static int +nodeDeviceUpdateDriverName(virNodeDeviceObjPtr dev) { char *driver_link =3D NULL; char *devpath =3D NULL; @@ -140,7 +143,8 @@ static int update_driver_name(virNodeDeviceObjPtr dev) } #else /* XXX: Implement me for non-linux */ -static int update_driver_name(virNodeDeviceObjPtr dev ATTRIBUTE_UNUSED) +static int +nodeDeviceUpdateDriverName(virNodeDeviceObjPtr dev ATTRIBUTE_UNUSED) { return 0; } @@ -151,11 +155,14 @@ void nodeDeviceLock(void) { virMutexLock(&driver->lock); } + + void nodeDeviceUnlock(void) { virMutexUnlock(&driver->lock); } =20 + int nodeNumOfDevices(virConnectPtr conn, const char *cap, @@ -200,6 +207,7 @@ nodeListDevices(virConnectPtr conn, return nnames; } =20 + int nodeConnectListAllNodeDevices(virConnectPtr conn, virNodeDevicePtr **devices, @@ -220,8 +228,10 @@ nodeConnectListAllNodeDevices(virConnectPtr conn, return ret; } =20 + virNodeDevicePtr -nodeDeviceLookupByName(virConnectPtr conn, const char *name) +nodeDeviceLookupByName(virConnectPtr conn, + const char *name) { virNodeDeviceObjPtr obj; virNodeDevicePtr ret =3D NULL; @@ -328,8 +338,8 @@ nodeDeviceGetXMLDesc(virNodeDevicePtr dev, if (virNodeDeviceGetXMLDescEnsureACL(dev->conn, obj->def) < 0) goto cleanup; =20 - update_driver_name(obj); - if (update_caps(obj) < 0) + nodeDeviceUpdateDriverName(obj); + if (nodeDeviceUpdateCaps(obj) < 0) goto cleanup; =20 ret =3D virNodeDeviceDefFormat(obj->def); @@ -421,8 +431,11 @@ nodeDeviceNumOfCaps(virNodeDevicePtr dev) } =20 =20 + int -nodeDeviceListCaps(virNodeDevicePtr dev, char **const names, int maxnames) +nodeDeviceListCaps(virNodeDevicePtr dev, + char **const names, + int maxnames) { virNodeDeviceObjPtr obj; virNodeDevCapsDefPtr caps; @@ -478,8 +491,9 @@ nodeDeviceListCaps(virNodeDevicePtr dev, char **const n= ames, int maxnames) return ret; } =20 + static int -get_time(time_t *t) +nodeDeviceGetTime(time_t *t) { int ret =3D 0; =20 @@ -522,7 +536,7 @@ find_new_device(virConnectPtr conn, const char *wwnn, c= onst char *wwpn) * doesn't become invalid. */ nodeDeviceUnlock(); =20 - get_time(&start); + nodeDeviceGetTime(&start); =20 while ((now - start) < LINUX_NEW_DEVICE_WAIT_TIME) { =20 @@ -534,7 +548,7 @@ find_new_device(virConnectPtr conn, const char *wwnn, c= onst char *wwpn) break; =20 sleep(5); - if (get_time(&now) =3D=3D -1) + if (nodeDeviceGetTime(&now) =3D=3D -1) break; } =20 @@ -543,6 +557,7 @@ find_new_device(virConnectPtr conn, const char *wwnn, c= onst char *wwpn) return dev; } =20 + virNodeDevicePtr nodeDeviceCreateXML(virConnectPtr conn, const char *xmlDesc, @@ -641,6 +656,7 @@ nodeDeviceDestroy(virNodeDevicePtr dev) return ret; } =20 + int nodeConnectNodeDeviceEventRegisterAny(virConnectPtr conn, virNodeDevicePtr dev, @@ -662,6 +678,7 @@ nodeConnectNodeDeviceEventRegisterAny(virConnectPtr con= n, return callbackID; } =20 + int nodeConnectNodeDeviceEventDeregisterAny(virConnectPtr conn, int callbackID) @@ -682,7 +699,9 @@ nodeConnectNodeDeviceEventDeregisterAny(virConnectPtr c= onn, return ret; } =20 -int nodedevRegister(void) + +int +nodedevRegister(void) { #ifdef WITH_UDEV return udevNodeRegister(); diff --git a/src/node_device/node_device_driver.h b/src/node_device/node_de= vice_driver.h index bc8af8a..b46f001 100644 --- a/src/node_device/node_device_driver.h +++ b/src/node_device/node_device_driver.h @@ -31,37 +31,75 @@ # define LINUX_NEW_DEVICE_WAIT_TIME 60 =20 # ifdef WITH_HAL -int halNodeRegister(void); +int +halNodeRegister(void); # endif + # ifdef WITH_UDEV -int udevNodeRegister(void); +int +udevNodeRegister(void); # endif =20 -void nodeDeviceLock(void); -void nodeDeviceUnlock(void); - -extern virNodeDeviceDriverStatePtr driver; - -int nodedevRegister(void); - -int nodeNumOfDevices(virConnectPtr conn, const char *cap, unsigned int fla= gs); -int nodeListDevices(virConnectPtr conn, const char *cap, char **const name= s, - int maxnames, unsigned int flags); -int nodeConnectListAllNodeDevices(virConnectPtr conn, - virNodeDevicePtr **devices, - unsigned int flags); -virNodeDevicePtr nodeDeviceLookupByName(virConnectPtr conn, const char *na= me); -virNodeDevicePtr nodeDeviceLookupSCSIHostByWWN(virConnectPtr conn, - const char *wwnn, - const char *wwpn, - unsigned int flags); -char *nodeDeviceGetXMLDesc(virNodeDevicePtr dev, unsigned int flags); -char *nodeDeviceGetParent(virNodeDevicePtr dev); -int nodeDeviceNumOfCaps(virNodeDevicePtr dev); -int nodeDeviceListCaps(virNodeDevicePtr dev, char **const names, int maxna= mes); -virNodeDevicePtr nodeDeviceCreateXML(virConnectPtr conn, - const char *xmlDesc, unsigned int fla= gs); -int nodeDeviceDestroy(virNodeDevicePtr dev); +void +nodeDeviceLock(void); + +void +nodeDeviceUnlock(void); + +extern +virNodeDeviceDriverStatePtr driver; + +int +nodedevRegister(void); + +int +nodeNumOfDevices(virConnectPtr conn, + const char *cap, + unsigned int flags); + +int nodeListDevices(virConnectPtr conn, + const char *cap, + char **const names, + int maxnames, + unsigned int flags); + +int +nodeConnectListAllNodeDevices(virConnectPtr conn, + virNodeDevicePtr **devices, + unsigned int flags); + +virNodeDevicePtr +nodeDeviceLookupByName(virConnectPtr conn, + const char *name); + +virNodeDevicePtr +nodeDeviceLookupSCSIHostByWWN(virConnectPtr conn, + const char *wwnn, + const char *wwpn, + unsigned int flags); + +char * +nodeDeviceGetXMLDesc(virNodeDevicePtr dev, + unsigned int flags); + +char * +nodeDeviceGetParent(virNodeDevicePtr dev); + +int +nodeDeviceNumOfCaps(virNodeDevicePtr dev); + +int +nodeDeviceListCaps(virNodeDevicePtr dev, + char **const names, + int maxnames); + +virNodeDevicePtr +nodeDeviceCreateXML(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags); + +int +nodeDeviceDestroy(virNodeDevicePtr dev); =20 int nodeConnectNodeDeviceEventRegisterAny(virConnectPtr conn, @@ -73,4 +111,5 @@ nodeConnectNodeDeviceEventRegisterAny(virConnectPtr conn, int nodeConnectNodeDeviceEventDeregisterAny(virConnectPtr conn, int callbackID); + #endif /* __VIR_NODE_DEVICE_H__ */ diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_devi= ce_udev.c index 4ecb0b1..481358a 100644 --- a/src/node_device/node_device_udev.c +++ b/src/node_device/node_device_udev.c @@ -71,8 +71,9 @@ udevHasDeviceProperty(struct udev_device *dev, } =20 =20 -static const char *udevGetDeviceProperty(struct udev_device *udev_device, - const char *property_key) +static const char * +udevGetDeviceProperty(struct udev_device *udev_device, + const char *property_key) { const char *ret =3D NULL; =20 @@ -85,9 +86,10 @@ static const char *udevGetDeviceProperty(struct udev_dev= ice *udev_device, } =20 =20 -static int udevGetStringProperty(struct udev_device *udev_device, - const char *property_key, - char **value) +static int +udevGetStringProperty(struct udev_device *udev_device, + const char *property_key, + char **value) { if (VIR_STRDUP(*value, udevGetDeviceProperty(udev_device, property_key)) < 0) @@ -97,10 +99,11 @@ static int udevGetStringProperty(struct udev_device *ud= ev_device, } =20 =20 -static int udevGetIntProperty(struct udev_device *udev_device, - const char *property_key, - int *value, - int base) +static int +udevGetIntProperty(struct udev_device *udev_device, + const char *property_key, + int *value, + int base) { const char *str =3D NULL; =20 @@ -115,10 +118,11 @@ static int udevGetIntProperty(struct udev_device *ude= v_device, } =20 =20 -static int udevGetUintProperty(struct udev_device *udev_device, - const char *property_key, - unsigned int *value, - int base) +static int +udevGetUintProperty(struct udev_device *udev_device, + const char *property_key, + unsigned int *value, + int base) { const char *str =3D NULL; =20 @@ -133,8 +137,9 @@ static int udevGetUintProperty(struct udev_device *udev= _device, } =20 =20 -static const char *udevGetDeviceSysfsAttr(struct udev_device *udev_device, - const char *attr_name) +static const char * +udevGetDeviceSysfsAttr(struct udev_device *udev_device, + const char *attr_name) { const char *ret =3D NULL; =20 @@ -148,9 +153,10 @@ static const char *udevGetDeviceSysfsAttr(struct udev_= device *udev_device, } =20 =20 -static int udevGetStringSysfsAttr(struct udev_device *udev_device, - const char *attr_name, - char **value) +static int +udevGetStringSysfsAttr(struct udev_device *udev_device, + const char *attr_name, + char **value) { if (VIR_STRDUP(*value, udevGetDeviceSysfsAttr(udev_device, attr_name))= < 0) return -1; @@ -164,10 +170,11 @@ static int udevGetStringSysfsAttr(struct udev_device = *udev_device, } =20 =20 -static int udevGetIntSysfsAttr(struct udev_device *udev_device, - const char *attr_name, - int *value, - int base) +static int +udevGetIntSysfsAttr(struct udev_device *udev_device, + const char *attr_name, + int *value, + int base) { const char *str =3D NULL; =20 @@ -183,10 +190,11 @@ static int udevGetIntSysfsAttr(struct udev_device *ud= ev_device, } =20 =20 -static int udevGetUintSysfsAttr(struct udev_device *udev_device, - const char *attr_name, - unsigned int *value, - int base) +static int +udevGetUintSysfsAttr(struct udev_device *udev_device, + const char *attr_name, + unsigned int *value, + int base) { const char *str =3D NULL; =20 @@ -202,9 +210,10 @@ static int udevGetUintSysfsAttr(struct udev_device *ud= ev_device, } =20 =20 -static int udevGetUint64SysfsAttr(struct udev_device *udev_device, - const char *attr_name, - unsigned long long *value) +static int +udevGetUint64SysfsAttr(struct udev_device *udev_device, + const char *attr_name, + unsigned long long *value) { const char *str =3D NULL; =20 @@ -220,9 +229,10 @@ static int udevGetUint64SysfsAttr(struct udev_device *= udev_device, } =20 =20 -static int udevGenerateDeviceName(struct udev_device *device, - virNodeDeviceDefPtr def, - const char *s) +static int +udevGenerateDeviceName(struct udev_device *device, + virNodeDeviceDefPtr def, + const char *s) { size_t i; virBuffer buf =3D VIR_BUFFER_INITIALIZER; @@ -247,14 +257,16 @@ static int udevGenerateDeviceName(struct udev_device = *device, return 0; } =20 + #if HAVE_UDEV_LOGGING -typedef void (*udevLogFunctionPtr)(struct udev *udev, - int priority, - const char *file, - int line, - const char *fn, - const char *format, - va_list args); +typedef void +(*udevLogFunctionPtr)(struct udev *udev, + int priority, + const char *file, + int line, + const char *fn, + const char *format, + va_list args); =20 static void ATTRIBUTE_FMT_PRINTF(6, 0) @@ -283,10 +295,11 @@ udevLogFunction(struct udev *udev ATTRIBUTE_UNUSED, #endif =20 =20 -static int udevTranslatePCIIds(unsigned int vendor, - unsigned int product, - char **vendor_string, - char **product_string) +static int +udevTranslatePCIIds(unsigned int vendor, + unsigned int product, + char **vendor_string, + char **product_string) { struct pci_id_match m; const char *vendor_name =3D NULL, *device_name =3D NULL; @@ -427,8 +440,9 @@ udevPCIGetMdevTypesCap(struct udev_device *device, } =20 =20 -static int udevProcessPCI(struct udev_device *device, - virNodeDeviceDefPtr def) +static int +udevProcessPCI(struct udev_device *device, + virNodeDeviceDefPtr def) { virNodeDevCapPCIDevPtr pci_dev =3D &def->caps->data.pci_dev; virPCIEDeviceInfoPtr pci_express =3D NULL; @@ -527,7 +541,9 @@ static int udevProcessPCI(struct udev_device *device, return ret; } =20 -static int drmGetMinorType(int minor) + +static int +drmGetMinorType(int minor) { int type =3D minor >> 6; =20 @@ -544,8 +560,10 @@ static int drmGetMinorType(int minor) } } =20 -static int udevProcessDRMDevice(struct udev_device *device, - virNodeDeviceDefPtr def) + +static int +udevProcessDRMDevice(struct udev_device *device, + virNodeDeviceDefPtr def) { virNodeDevCapDRMPtr drm =3D &def->caps->data.drm; int minor; @@ -564,8 +582,10 @@ static int udevProcessDRMDevice(struct udev_device *de= vice, return 0; } =20 -static int udevProcessUSBDevice(struct udev_device *device, - virNodeDeviceDefPtr def) + +static int +udevProcessUSBDevice(struct udev_device *device, + virNodeDeviceDefPtr def) { virNodeDevCapUSBDevPtr usb_dev =3D &def->caps->data.usb_dev; =20 @@ -606,8 +626,9 @@ static int udevProcessUSBDevice(struct udev_device *dev= ice, } =20 =20 -static int udevProcessUSBInterface(struct udev_device *device, - virNodeDeviceDefPtr def) +static int +udevProcessUSBInterface(struct udev_device *device, + virNodeDeviceDefPtr def) { virNodeDevCapUSBIfPtr usb_if =3D &def->caps->data.usb_if; =20 @@ -634,8 +655,9 @@ static int udevProcessUSBInterface(struct udev_device *= device, } =20 =20 -static int udevProcessNetworkInterface(struct udev_device *device, - virNodeDeviceDefPtr def) +static int +udevProcessNetworkInterface(struct udev_device *device, + virNodeDeviceDefPtr def) { const char *devtype =3D udev_device_get_devtype(device); virNodeDevCapNetPtr net =3D &def->caps->data.net; @@ -671,8 +693,9 @@ static int udevProcessNetworkInterface(struct udev_devi= ce *device, } =20 =20 -static int udevProcessSCSIHost(struct udev_device *device ATTRIBUTE_UNUSED, - virNodeDeviceDefPtr def) +static int +udevProcessSCSIHost(struct udev_device *device ATTRIBUTE_UNUSED, + virNodeDeviceDefPtr def) { virNodeDevCapSCSIHostPtr scsi_host =3D &def->caps->data.scsi_host; char *filename =3D NULL; @@ -697,8 +720,9 @@ static int udevProcessSCSIHost(struct udev_device *devi= ce ATTRIBUTE_UNUSED, } =20 =20 -static int udevProcessSCSITarget(struct udev_device *device ATTRIBUTE_UNUS= ED, - virNodeDeviceDefPtr def) +static int +udevProcessSCSITarget(struct udev_device *device ATTRIBUTE_UNUSED, + virNodeDeviceDefPtr def) { const char *sysname =3D NULL; virNodeDevCapSCSITargetPtr scsi_target =3D &def->caps->data.scsi_targe= t; @@ -715,8 +739,10 @@ static int udevProcessSCSITarget(struct udev_device *d= evice ATTRIBUTE_UNUSED, } =20 =20 -static int udevGetSCSIType(virNodeDeviceDefPtr def ATTRIBUTE_UNUSED, - unsigned int type, char **typestring) +static int +udevGetSCSIType(virNodeDeviceDefPtr def ATTRIBUTE_UNUSED, + unsigned int type, + char **typestring) { int ret =3D 0; int foundtype =3D 1; @@ -773,8 +799,9 @@ static int udevGetSCSIType(virNodeDeviceDefPtr def ATTR= IBUTE_UNUSED, } =20 =20 -static int udevProcessSCSIDevice(struct udev_device *device ATTRIBUTE_UNUS= ED, - virNodeDeviceDefPtr def) +static int +udevProcessSCSIDevice(struct udev_device *device ATTRIBUTE_UNUSED, + virNodeDeviceDefPtr def) { int ret =3D -1; unsigned int tmp =3D 0; @@ -816,8 +843,9 @@ static int udevProcessSCSIDevice(struct udev_device *de= vice ATTRIBUTE_UNUSED, } =20 =20 -static int udevProcessDisk(struct udev_device *device, - virNodeDeviceDefPtr def) +static int +udevProcessDisk(struct udev_device *device, + virNodeDeviceDefPtr def) { virNodeDevCapStoragePtr storage =3D &def->caps->data.storage; =20 @@ -834,9 +862,10 @@ static int udevProcessDisk(struct udev_device *device, } =20 =20 -static int udevProcessRemoveableMedia(struct udev_device *device, - virNodeDeviceDefPtr def, - int has_media) +static int +udevProcessRemoveableMedia(struct udev_device *device, + virNodeDeviceDefPtr def, + int has_media) { virNodeDevCapStoragePtr storage =3D &def->caps->data.storage; int is_removable =3D 0; @@ -875,8 +904,10 @@ static int udevProcessRemoveableMedia(struct udev_devi= ce *device, return 0; } =20 -static int udevProcessCDROM(struct udev_device *device, - virNodeDeviceDefPtr def) + +static int +udevProcessCDROM(struct udev_device *device, + virNodeDeviceDefPtr def) { int has_media =3D 0; =20 @@ -895,8 +926,10 @@ static int udevProcessCDROM(struct udev_device *device, return udevProcessRemoveableMedia(device, def, has_media); } =20 -static int udevProcessFloppy(struct udev_device *device, - virNodeDeviceDefPtr def) + +static int +udevProcessFloppy(struct udev_device *device, + virNodeDeviceDefPtr def) { int has_media =3D 0; =20 @@ -913,8 +946,9 @@ static int udevProcessFloppy(struct udev_device *device, } =20 =20 -static int udevProcessSD(struct udev_device *device, - virNodeDeviceDefPtr def) +static int +udevProcessSD(struct udev_device *device, + virNodeDeviceDefPtr def) { virNodeDevCapStoragePtr storage =3D &def->caps->data.storage; =20 @@ -932,12 +966,12 @@ static int udevProcessSD(struct udev_device *device, } =20 =20 - /* This function exists to deal with the case in which a driver does * not provide a device type in the usual place, but udev told us it's * a storage device, and we can make a good guess at what kind of * storage device it is from other information that is provided. */ -static int udevKludgeStorageType(virNodeDeviceDefPtr def) +static int +udevKludgeStorageType(virNodeDeviceDefPtr def) { VIR_DEBUG("Could not find definitive storage type for device " "with sysfs path '%s', trying to guess it", @@ -958,8 +992,9 @@ static int udevKludgeStorageType(virNodeDeviceDefPtr de= f) } =20 =20 -static int udevProcessStorage(struct udev_device *device, - virNodeDeviceDefPtr def) +static int +udevProcessStorage(struct udev_device *device, + virNodeDeviceDefPtr def) { virNodeDevCapStoragePtr storage =3D &def->caps->data.storage; int ret =3D -1; @@ -1054,6 +1089,7 @@ static int udevProcessStorage(struct udev_device *dev= ice, return ret; } =20 + static int udevProcessSCSIGeneric(struct udev_device *dev, virNodeDeviceDefPtr def) @@ -1068,6 +1104,7 @@ udevProcessSCSIGeneric(struct udev_device *dev, return 0; } =20 + static int udevProcessMediatedDevice(struct udev_device *dev, virNodeDeviceDefPtr def) @@ -1132,6 +1169,7 @@ udevGetDeviceNodes(struct udev_device *device, return 0; } =20 + static int udevGetDeviceType(struct udev_device *device, virNodeDevCapType *type) @@ -1196,8 +1234,9 @@ udevGetDeviceType(struct udev_device *device, } =20 =20 -static int udevGetDeviceDetails(struct udev_device *device, - virNodeDeviceDefPtr def) +static int +udevGetDeviceDetails(struct udev_device *device, + virNodeDeviceDefPtr def) { switch (def->caps->data.type) { case VIR_NODE_DEV_CAP_PCI_DEV: @@ -1234,7 +1273,8 @@ static int udevGetDeviceDetails(struct udev_device *d= evice, } =20 =20 -static int udevRemoveOneDevice(struct udev_device *device) +static int +udevRemoveOneDevice(struct udev_device *device) { virNodeDeviceObjPtr dev =3D NULL; virObjectEventPtr event =3D NULL; @@ -1266,8 +1306,9 @@ static int udevRemoveOneDevice(struct udev_device *de= vice) } =20 =20 -static int udevSetParent(struct udev_device *device, - virNodeDeviceDefPtr def) +static int +udevSetParent(struct udev_device *device, + virNodeDeviceDefPtr def) { struct udev_device *parent_device =3D NULL; const char *parent_sysfs_path =3D NULL; @@ -1314,7 +1355,8 @@ static int udevSetParent(struct udev_device *device, } =20 =20 -static int udevAddOneDevice(struct udev_device *device) +static int +udevAddOneDevice(struct udev_device *device) { virNodeDeviceDefPtr def =3D NULL; virNodeDeviceObjPtr dev =3D NULL; @@ -1383,8 +1425,9 @@ static int udevAddOneDevice(struct udev_device *devic= e) } =20 =20 -static int udevProcessDeviceListEntry(struct udev *udev, - struct udev_list_entry *list_entry) +static int +udevProcessDeviceListEntry(struct udev *udev, + struct udev_list_entry *list_entry) { struct udev_device *device; const char *name =3D NULL; @@ -1416,7 +1459,8 @@ const char *subsystem_blacklist[] =3D { "acpi", "tty", "vc", "i2c", }; =20 -static int udevEnumerateAddMatches(struct udev_enumerate *udev_enumerate) +static int +udevEnumerateAddMatches(struct udev_enumerate *udev_enumerate) { size_t i; =20 @@ -1431,7 +1475,8 @@ static int udevEnumerateAddMatches(struct udev_enumer= ate *udev_enumerate) } =20 =20 -static int udevEnumerateDevices(struct udev *udev) +static int +udevEnumerateDevices(struct udev *udev) { struct udev_enumerate *udev_enumerate =3D NULL; struct udev_list_entry *list_entry =3D NULL; @@ -1461,7 +1506,8 @@ static int udevEnumerateDevices(struct udev *udev) } =20 =20 -static void udevPCITranslateDeinit(void) +static void +udevPCITranslateDeinit(void) { #if defined __s390__ || defined __s390x_ /* Nothing was initialized, nothing needs to be cleaned up */ @@ -1473,7 +1519,8 @@ static void udevPCITranslateDeinit(void) } =20 =20 -static int nodeStateCleanup(void) +static int +nodeStateCleanup(void) { udevPrivate *priv =3D NULL; struct udev_monitor *udev_monitor =3D NULL; @@ -1514,10 +1561,11 @@ static int nodeStateCleanup(void) } =20 =20 -static void udevEventHandleCallback(int watch ATTRIBUTE_UNUSED, - int fd, - int events ATTRIBUTE_UNUSED, - void *data ATTRIBUTE_UNUSED) +static void +udevEventHandleCallback(int watch ATTRIBUTE_UNUSED, + int fd, + int events ATTRIBUTE_UNUSED, + void *data ATTRIBUTE_UNUSED) { struct udev_device *device =3D NULL; struct udev_monitor *udev_monitor =3D DRV_STATE_UDEV_MONITOR(driver); @@ -1618,7 +1666,8 @@ udevGetDMIData(virNodeDevCapSystemPtr syscap) #endif =20 =20 -static int udevSetupSystemDev(void) +static int +udevSetupSystemDev(void) { virNodeDeviceDefPtr def =3D NULL; virNodeDeviceObjPtr dev =3D NULL; @@ -1652,7 +1701,9 @@ static int udevSetupSystemDev(void) return ret; } =20 -static int udevPCITranslateInit(bool privileged ATTRIBUTE_UNUSED) + +static int +udevPCITranslateInit(bool privileged ATTRIBUTE_UNUSED) { #if defined __s390__ || defined __s390x_ /* On s390(x) system there is no PCI bus. @@ -1674,9 +1725,11 @@ static int udevPCITranslateInit(bool privileged ATTR= IBUTE_UNUSED) return 0; } =20 -static int nodeStateInitialize(bool privileged, - virStateInhibitCallback callback ATTRIBUTE_= UNUSED, - void *opaque ATTRIBUTE_UNUSED) + +static int +nodeStateInitialize(bool privileged, + virStateInhibitCallback callback ATTRIBUTE_UNUSED, + void *opaque ATTRIBUTE_UNUSED) { udevPrivate *priv =3D NULL; struct udev *udev =3D NULL; @@ -1762,7 +1815,8 @@ static int nodeStateInitialize(bool privileged, } =20 =20 -static int nodeStateReload(void) +static int +nodeStateReload(void) { return 0; } @@ -1792,7 +1846,9 @@ static virStateDriver udevStateDriver =3D { .stateReload =3D nodeStateReload, /* 0.7.3 */ }; =20 -int udevNodeRegister(void) + +int +udevNodeRegister(void) { VIR_DEBUG("Registering udev node device backend"); =20 --=20 2.9.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat Apr 27 20:34:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1495742264582260.99074605141425; Thu, 25 May 2017 12:57:44 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 920263D958; Thu, 25 May 2017 19:57:42 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 654287F8EB; Thu, 25 May 2017 19:57:42 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id F3DB5180BAFE; Thu, 25 May 2017 19:57:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v4PJvWu6016900 for ; Thu, 25 May 2017 15:57:32 -0400 Received: by smtp.corp.redhat.com (Postfix) id D349317DF6; Thu, 25 May 2017 19:57:32 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-108.phx2.redhat.com [10.3.116.108]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8DBAF7F39C for ; Thu, 25 May 2017 19:57:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 920263D958 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 920263D958 From: John Ferlan To: libvir-list@redhat.com Date: Thu, 25 May 2017 15:57:04 -0400 Message-Id: <20170525195711.27087-8-jferlan@redhat.com> In-Reply-To: <20170525195711.27087-1-jferlan@redhat.com> References: <20170525195711.27087-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 07/14] nodedev: Alter param to nodeDeviceUpdateDriverName 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-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 25 May 2017 19:57:43 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Rather than taking an virNodeDeviceObjPtr and dereffing the obj->def, just pass the def. Also check for an error in the function to have the calling function goto cleanup on error. Signed-off-by: John Ferlan --- src/node_device/node_device_driver.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_de= vice_driver.c index 2a461fb..87953f3 100644 --- a/src/node_device/node_device_driver.c +++ b/src/node_device/node_device_driver.c @@ -106,16 +106,16 @@ nodeDeviceUpdateCaps(virNodeDeviceObjPtr dev) * udev *and* HAL backends. */ static int -nodeDeviceUpdateDriverName(virNodeDeviceObjPtr dev) +nodeDeviceUpdateDriverName(virNodeDeviceDefPtr def) { char *driver_link =3D NULL; char *devpath =3D NULL; char *p; int ret =3D -1; =20 - VIR_FREE(dev->def->driver); + VIR_FREE(def->driver); =20 - if (virAsprintf(&driver_link, "%s/driver", dev->def->sysfs_path) < 0) + if (virAsprintf(&driver_link, "%s/driver", def->sysfs_path) < 0) goto cleanup; =20 /* Some devices don't have an explicit driver, so just return @@ -132,7 +132,7 @@ nodeDeviceUpdateDriverName(virNodeDeviceObjPtr dev) } =20 p =3D strrchr(devpath, '/'); - if (p && VIR_STRDUP(dev->def->driver, p + 1) < 0) + if (p && VIR_STRDUP(def->driver, p + 1) < 0) goto cleanup; ret =3D 0; =20 @@ -144,7 +144,7 @@ nodeDeviceUpdateDriverName(virNodeDeviceObjPtr dev) #else /* XXX: Implement me for non-linux */ static int -nodeDeviceUpdateDriverName(virNodeDeviceObjPtr dev ATTRIBUTE_UNUSED) +nodeDeviceUpdateDriverName(virNodeDeviceDefPtr def ATTRIBUTE_UNUSED) { return 0; } @@ -338,7 +338,9 @@ nodeDeviceGetXMLDesc(virNodeDevicePtr dev, if (virNodeDeviceGetXMLDescEnsureACL(dev->conn, obj->def) < 0) goto cleanup; =20 - nodeDeviceUpdateDriverName(obj); + if (nodeDeviceUpdateDriverName(obj->def) < 0) + goto cleanup; + if (nodeDeviceUpdateCaps(obj) < 0) goto cleanup; =20 --=20 2.9.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat Apr 27 20:34:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1495742267442942.6642752759329; Thu, 25 May 2017 12:57:47 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E1AC0C04B951; Thu, 25 May 2017 19:57:45 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B6FE87BCC1; Thu, 25 May 2017 19:57:45 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 66DD5181A72C; Thu, 25 May 2017 19:57:45 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v4PJvb4c016916 for ; Thu, 25 May 2017 15:57:37 -0400 Received: by smtp.corp.redhat.com (Postfix) id 51A747FDF4; Thu, 25 May 2017 19:57:37 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-108.phx2.redhat.com [10.3.116.108]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0797B7F8DB for ; Thu, 25 May 2017 19:57:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com E1AC0C04B951 Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com E1AC0C04B951 From: John Ferlan To: libvir-list@redhat.com Date: Thu, 25 May 2017 15:57:05 -0400 Message-Id: <20170525195711.27087-9-jferlan@redhat.com> In-Reply-To: <20170525195711.27087-1-jferlan@redhat.com> References: <20170525195711.27087-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 08/14] nodedev: Alter param to nodeDeviceUpdateCaps 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-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Thu, 25 May 2017 19:57:46 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Rather than taking an virNodeDeviceObjPtr and dereffing the obj->def, just pass the def. Signed-off-by: John Ferlan --- src/node_device/node_device_driver.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_de= vice_driver.c index 87953f3..b599460 100644 --- a/src/node_device/node_device_driver.c +++ b/src/node_device/node_device_driver.c @@ -49,14 +49,14 @@ virNodeDeviceDriverStatePtr driver; =20 =20 static int -nodeDeviceUpdateCaps(virNodeDeviceObjPtr dev) +nodeDeviceUpdateCaps(virNodeDeviceDefPtr def) { - virNodeDevCapsDefPtr cap =3D dev->def->caps; + virNodeDevCapsDefPtr cap =3D def->caps; =20 while (cap) { switch (cap->data.type) { case VIR_NODE_DEV_CAP_SCSI_HOST: - nodeDeviceSysfsGetSCSIHostCaps(&dev->def->caps->data.scsi_host= ); + nodeDeviceSysfsGetSCSIHostCaps(&def->caps->data.scsi_host); break; case VIR_NODE_DEV_CAP_NET: if (virNetDevGetLinkInfo(cap->data.net.ifname, &cap->data.net.= lnk) < 0) @@ -66,8 +66,8 @@ nodeDeviceUpdateCaps(virNodeDeviceObjPtr dev) return -1; break; case VIR_NODE_DEV_CAP_PCI_DEV: - if (nodeDeviceSysfsGetPCIRelatedDevCaps(dev->def->sysfs_path, - &dev->def->caps->data.p= ci_dev) < 0) + if (nodeDeviceSysfsGetPCIRelatedDevCaps(def->sysfs_path, + &def->caps->data.pci_de= v) < 0) return -1; break; =20 @@ -341,7 +341,7 @@ nodeDeviceGetXMLDesc(virNodeDevicePtr dev, if (nodeDeviceUpdateDriverName(obj->def) < 0) goto cleanup; =20 - if (nodeDeviceUpdateCaps(obj) < 0) + if (nodeDeviceUpdateCaps(obj->def) < 0) goto cleanup; =20 ret =3D virNodeDeviceDefFormat(obj->def); --=20 2.9.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat Apr 27 20:34:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1495742277472632.2491942175584; Thu, 25 May 2017 12:57:57 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AD765A6DF4; Thu, 25 May 2017 19:57:55 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6C0D017C05; Thu, 25 May 2017 19:57:55 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 205BB183302E; Thu, 25 May 2017 19:57:49 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v4PJvcjh016925 for ; Thu, 25 May 2017 15:57:38 -0400 Received: by smtp.corp.redhat.com (Postfix) id 4572394DA4; Thu, 25 May 2017 19:57:38 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-108.phx2.redhat.com [10.3.116.108]) by smtp.corp.redhat.com (Postfix) with ESMTP id A19317F8FA for ; Thu, 25 May 2017 19:57:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com AD765A6DF4 Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com AD765A6DF4 From: John Ferlan To: libvir-list@redhat.com Date: Thu, 25 May 2017 15:57:06 -0400 Message-Id: <20170525195711.27087-10-jferlan@redhat.com> In-Reply-To: <20170525195711.27087-1-jferlan@redhat.com> References: <20170525195711.27087-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 09/14] nodedev: Create helper for finding by name in driver 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-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 25 May 2017 19:57:56 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Create nodeDeviceObjFindByName which will perform the corresponding virNodeDeviceObjFindByName call for various node_device_driver callers rather than having the same repetitive code. Signed-off-by: John Ferlan --- src/node_device/node_device_driver.c | 96 +++++++++++++-------------------= ---- 1 file changed, 33 insertions(+), 63 deletions(-) diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_de= vice_driver.c index b599460..4b8a66e 100644 --- a/src/node_device/node_device_driver.c +++ b/src/node_device/node_device_driver.c @@ -229,12 +229,10 @@ nodeConnectListAllNodeDevices(virConnectPtr conn, } =20 =20 -virNodeDevicePtr -nodeDeviceLookupByName(virConnectPtr conn, - const char *name) +static virNodeDeviceObjPtr +nodeDeviceObjFindByName(const char *name) { virNodeDeviceObjPtr obj; - virNodeDevicePtr ret =3D NULL; =20 nodeDeviceLock(); obj =3D virNodeDeviceObjFindByName(&driver->devs, name); @@ -244,9 +242,22 @@ nodeDeviceLookupByName(virConnectPtr conn, virReportError(VIR_ERR_NO_NODE_DEVICE, _("no node device with matching name '%s'"), name); - goto cleanup; } =20 + return obj; +} + + +virNodeDevicePtr +nodeDeviceLookupByName(virConnectPtr conn, + const char *name) +{ + virNodeDeviceObjPtr obj; + virNodeDevicePtr ret =3D NULL; + + if (!(obj =3D nodeDeviceObjFindByName(name))) + return NULL; + if (virNodeDeviceLookupByNameEnsureACL(conn, obj->def) < 0) goto cleanup; =20 @@ -256,8 +267,7 @@ nodeDeviceLookupByName(virConnectPtr conn, } =20 cleanup: - if (obj) - virNodeDeviceObjUnlock(obj); + virNodeDeviceObjUnlock(obj); return ret; } =20 @@ -324,16 +334,8 @@ nodeDeviceGetXMLDesc(virNodeDevicePtr dev, =20 virCheckFlags(0, NULL); =20 - nodeDeviceLock(); - obj =3D virNodeDeviceObjFindByName(&driver->devs, dev->name); - nodeDeviceUnlock(); - - if (!obj) { - virReportError(VIR_ERR_NO_NODE_DEVICE, - _("no node device with matching name '%s'"), - dev->name); - goto cleanup; - } + if (!(obj =3D nodeDeviceObjFindByName(dev->name))) + return NULL; =20 if (virNodeDeviceGetXMLDescEnsureACL(dev->conn, obj->def) < 0) goto cleanup; @@ -347,8 +349,7 @@ nodeDeviceGetXMLDesc(virNodeDevicePtr dev, ret =3D virNodeDeviceDefFormat(obj->def); =20 cleanup: - if (obj) - virNodeDeviceObjUnlock(obj); + virNodeDeviceObjUnlock(obj); return ret; } =20 @@ -359,16 +360,8 @@ nodeDeviceGetParent(virNodeDevicePtr dev) virNodeDeviceObjPtr obj; char *ret =3D NULL; =20 - nodeDeviceLock(); - obj =3D virNodeDeviceObjFindByName(&driver->devs, dev->name); - nodeDeviceUnlock(); - - if (!obj) { - virReportError(VIR_ERR_NO_NODE_DEVICE, - _("no node device with matching name '%s'"), - dev->name); - goto cleanup; - } + if (!(obj =3D nodeDeviceObjFindByName(dev->name))) + return NULL; =20 if (virNodeDeviceGetParentEnsureACL(dev->conn, obj->def) < 0) goto cleanup; @@ -382,8 +375,7 @@ nodeDeviceGetParent(virNodeDevicePtr dev) } =20 cleanup: - if (obj) - virNodeDeviceObjUnlock(obj); + virNodeDeviceObjUnlock(obj); return ret; } =20 @@ -396,16 +388,8 @@ nodeDeviceNumOfCaps(virNodeDevicePtr dev) int ncaps =3D 0; int ret =3D -1; =20 - nodeDeviceLock(); - obj =3D virNodeDeviceObjFindByName(&driver->devs, dev->name); - nodeDeviceUnlock(); - - if (!obj) { - virReportError(VIR_ERR_NO_NODE_DEVICE, - _("no node device with matching name '%s'"), - dev->name); - goto cleanup; - } + if (!(obj =3D nodeDeviceObjFindByName(dev->name))) + return -1; =20 if (virNodeDeviceNumOfCapsEnsureACL(dev->conn, obj->def) < 0) goto cleanup; @@ -427,8 +411,7 @@ nodeDeviceNumOfCaps(virNodeDevicePtr dev) ret =3D ncaps; =20 cleanup: - if (obj) - virNodeDeviceObjUnlock(obj); + virNodeDeviceObjUnlock(obj); return ret; } =20 @@ -444,16 +427,8 @@ nodeDeviceListCaps(virNodeDevicePtr dev, int ncaps =3D 0; int ret =3D -1; =20 - nodeDeviceLock(); - obj =3D virNodeDeviceObjFindByName(&driver->devs, dev->name); - nodeDeviceUnlock(); - - if (!obj) { - virReportError(VIR_ERR_NO_NODE_DEVICE, - _("no node device with matching name '%s'"), - dev->name); - goto cleanup; - } + if (!(obj =3D nodeDeviceObjFindByName(dev->name))) + return -1; =20 if (virNodeDeviceListCapsEnsureACL(dev->conn, obj->def) < 0) goto cleanup; @@ -483,8 +458,7 @@ nodeDeviceListCaps(virNodeDevicePtr dev, ret =3D ncaps; =20 cleanup: - if (obj) - virNodeDeviceObjUnlock(obj); + virNodeDeviceObjUnlock(obj); if (ret =3D=3D -1) { --ncaps; while (--ncaps >=3D 0) @@ -619,13 +593,10 @@ nodeDeviceDestroy(virNodeDevicePtr dev) char *wwnn =3D NULL, *wwpn =3D NULL; int parent_host =3D -1; =20 + if (!(obj =3D nodeDeviceObjFindByName(dev->name))) + return -1; + nodeDeviceLock(); - if (!(obj =3D virNodeDeviceObjFindByName(&driver->devs, dev->name))) { - virReportError(VIR_ERR_NO_NODE_DEVICE, - _("no node device with matching name '%s'"), - dev->name); - goto cleanup; - } =20 if (virNodeDeviceDestroyEnsureACL(dev->conn, obj->def) < 0) goto cleanup; @@ -651,8 +622,7 @@ nodeDeviceDestroy(virNodeDevicePtr dev) =20 cleanup: nodeDeviceUnlock(); - if (obj) - virNodeDeviceObjUnlock(obj); + virNodeDeviceObjUnlock(obj); VIR_FREE(wwnn); VIR_FREE(wwpn); return ret; --=20 2.9.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat Apr 27 20:34:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1495742263890721.0034502531099; Thu, 25 May 2017 12:57:43 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E9CFE3D967; Thu, 25 May 2017 19:57:41 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C05EB189A7; Thu, 25 May 2017 19:57:41 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 6E5474A490; Thu, 25 May 2017 19:57:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v4PJvcB8016930 for ; Thu, 25 May 2017 15:57:38 -0400 Received: by smtp.corp.redhat.com (Postfix) id ADED47F8DB; Thu, 25 May 2017 19:57:38 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-108.phx2.redhat.com [10.3.116.108]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5DE6994DB0 for ; Thu, 25 May 2017 19:57:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com E9CFE3D967 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com E9CFE3D967 From: John Ferlan To: libvir-list@redhat.com Date: Thu, 25 May 2017 15:57:07 -0400 Message-Id: <20170525195711.27087-11-jferlan@redhat.com> In-Reply-To: <20170525195711.27087-1-jferlan@redhat.com> References: <20170525195711.27087-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 10/14] nodedev: Use consistent names for driver variables 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-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 25 May 2017 19:57:42 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" A virNodeDeviceObjPtr is an @obj A virNodeDeviceObjListPtr is a @devs A virNodeDevicePtr is a @device Signed-off-by: John Ferlan --- src/node_device/node_device_driver.c | 70 ++++++++++++++++++--------------= ---- src/node_device/node_device_hal.c | 42 +++++++++++----------- src/node_device/node_device_udev.c | 50 +++++++++++++------------- 3 files changed, 81 insertions(+), 81 deletions(-) diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_de= vice_driver.c index 4b8a66e..d34f399 100644 --- a/src/node_device/node_device_driver.c +++ b/src/node_device/node_device_driver.c @@ -253,7 +253,7 @@ nodeDeviceLookupByName(virConnectPtr conn, const char *name) { virNodeDeviceObjPtr obj; - virNodeDevicePtr ret =3D NULL; + virNodeDevicePtr device =3D NULL; =20 if (!(obj =3D nodeDeviceObjFindByName(name))) return NULL; @@ -261,14 +261,14 @@ nodeDeviceLookupByName(virConnectPtr conn, if (virNodeDeviceLookupByNameEnsureACL(conn, obj->def) < 0) goto cleanup; =20 - if ((ret =3D virGetNodeDevice(conn, name))) { - if (VIR_STRDUP(ret->parent, obj->def->parent) < 0) - virObjectUnref(ret); + if ((device =3D virGetNodeDevice(conn, name))) { + if (VIR_STRDUP(device->parent, obj->def->parent) < 0) + virObjectUnref(device); } =20 cleanup: virNodeDeviceObjUnlock(obj); - return ret; + return device; } =20 =20 @@ -282,7 +282,7 @@ nodeDeviceLookupSCSIHostByWWN(virConnectPtr conn, virNodeDeviceObjListPtr devs =3D &driver->devs; virNodeDevCapsDefPtr cap =3D NULL; virNodeDeviceObjPtr obj =3D NULL; - virNodeDevicePtr dev =3D NULL; + virNodeDevicePtr device =3D NULL; =20 virCheckFlags(0, NULL); =20 @@ -304,9 +304,9 @@ nodeDeviceLookupSCSIHostByWWN(virConnectPtr conn, if (virNodeDeviceLookupSCSIHostByWWNEnsureACL(conn= , obj->def) < 0) goto out; =20 - if ((dev =3D virGetNodeDevice(conn, obj->def->name= ))) { - if (VIR_STRDUP(dev->parent, obj->def->parent) = < 0) - virObjectUnref(dev); + if ((device =3D virGetNodeDevice(conn, obj->def->n= ame))) { + if (VIR_STRDUP(device->parent, obj->def->paren= t) < 0) + virObjectUnref(device); } virNodeDeviceObjUnlock(obj); goto out; @@ -321,12 +321,12 @@ nodeDeviceLookupSCSIHostByWWN(virConnectPtr conn, =20 out: nodeDeviceUnlock(); - return dev; + return device; } =20 =20 char * -nodeDeviceGetXMLDesc(virNodeDevicePtr dev, +nodeDeviceGetXMLDesc(virNodeDevicePtr device, unsigned int flags) { virNodeDeviceObjPtr obj; @@ -334,10 +334,10 @@ nodeDeviceGetXMLDesc(virNodeDevicePtr dev, =20 virCheckFlags(0, NULL); =20 - if (!(obj =3D nodeDeviceObjFindByName(dev->name))) + if (!(obj =3D nodeDeviceObjFindByName(device->name))) return NULL; =20 - if (virNodeDeviceGetXMLDescEnsureACL(dev->conn, obj->def) < 0) + if (virNodeDeviceGetXMLDescEnsureACL(device->conn, obj->def) < 0) goto cleanup; =20 if (nodeDeviceUpdateDriverName(obj->def) < 0) @@ -355,15 +355,15 @@ nodeDeviceGetXMLDesc(virNodeDevicePtr dev, =20 =20 char * -nodeDeviceGetParent(virNodeDevicePtr dev) +nodeDeviceGetParent(virNodeDevicePtr device) { virNodeDeviceObjPtr obj; char *ret =3D NULL; =20 - if (!(obj =3D nodeDeviceObjFindByName(dev->name))) + if (!(obj =3D nodeDeviceObjFindByName(device->name))) return NULL; =20 - if (virNodeDeviceGetParentEnsureACL(dev->conn, obj->def) < 0) + if (virNodeDeviceGetParentEnsureACL(device->conn, obj->def) < 0) goto cleanup; =20 if (obj->def->parent) { @@ -381,17 +381,17 @@ nodeDeviceGetParent(virNodeDevicePtr dev) =20 =20 int -nodeDeviceNumOfCaps(virNodeDevicePtr dev) +nodeDeviceNumOfCaps(virNodeDevicePtr device) { virNodeDeviceObjPtr obj; virNodeDevCapsDefPtr caps; int ncaps =3D 0; int ret =3D -1; =20 - if (!(obj =3D nodeDeviceObjFindByName(dev->name))) + if (!(obj =3D nodeDeviceObjFindByName(device->name))) return -1; =20 - if (virNodeDeviceNumOfCapsEnsureACL(dev->conn, obj->def) < 0) + if (virNodeDeviceNumOfCapsEnsureACL(device->conn, obj->def) < 0) goto cleanup; =20 for (caps =3D obj->def->caps; caps; caps =3D caps->next) { @@ -418,7 +418,7 @@ nodeDeviceNumOfCaps(virNodeDevicePtr dev) =20 =20 int -nodeDeviceListCaps(virNodeDevicePtr dev, +nodeDeviceListCaps(virNodeDevicePtr device, char **const names, int maxnames) { @@ -427,10 +427,10 @@ nodeDeviceListCaps(virNodeDevicePtr dev, int ncaps =3D 0; int ret =3D -1; =20 - if (!(obj =3D nodeDeviceObjFindByName(dev->name))) + if (!(obj =3D nodeDeviceObjFindByName(device->name))) return -1; =20 - if (virNodeDeviceListCapsEnsureACL(dev->conn, obj->def) < 0) + if (virNodeDeviceListCapsEnsureACL(device->conn, obj->def) < 0) goto cleanup; =20 for (caps =3D obj->def->caps; caps && ncaps < maxnames; caps =3D caps-= >next) { @@ -502,7 +502,7 @@ nodeDeviceGetTime(time_t *t) static virNodeDevicePtr find_new_device(virConnectPtr conn, const char *wwnn, const char *wwpn) { - virNodeDevicePtr dev =3D NULL; + virNodeDevicePtr device =3D NULL; time_t start =3D 0, now =3D 0; =20 /* The thread that creates the device takes the driver lock, so we @@ -518,9 +518,9 @@ find_new_device(virConnectPtr conn, const char *wwnn, c= onst char *wwpn) =20 virWaitForDevices(); =20 - dev =3D nodeDeviceLookupSCSIHostByWWN(conn, wwnn, wwpn, 0); + device =3D nodeDeviceLookupSCSIHostByWWN(conn, wwnn, wwpn, 0); =20 - if (dev !=3D NULL) + if (device !=3D NULL) break; =20 sleep(5); @@ -530,7 +530,7 @@ find_new_device(virConnectPtr conn, const char *wwnn, c= onst char *wwpn) =20 nodeDeviceLock(); =20 - return dev; + return device; } =20 =20 @@ -542,7 +542,7 @@ nodeDeviceCreateXML(virConnectPtr conn, virNodeDeviceDefPtr def =3D NULL; char *wwnn =3D NULL, *wwpn =3D NULL; int parent_host =3D -1; - virNodeDevicePtr dev =3D NULL; + virNodeDevicePtr device =3D NULL; const char *virt_type =3D NULL; =20 virCheckFlags(0, NULL); @@ -566,11 +566,11 @@ nodeDeviceCreateXML(virConnectPtr conn, if (virVHBAManageVport(parent_host, wwpn, wwnn, VPORT_CREATE) < 0) goto cleanup; =20 - dev =3D find_new_device(conn, wwnn, wwpn); + device =3D find_new_device(conn, wwnn, wwpn); /* We don't check the return value, because one way or another, * we're returning what we get... */ =20 - if (dev =3D=3D NULL) + if (device =3D=3D NULL) virReportError(VIR_ERR_NO_NODE_DEVICE, _("no node device for '%s' with matching " "wwnn '%s' and wwpn '%s'"), @@ -580,12 +580,12 @@ nodeDeviceCreateXML(virConnectPtr conn, virNodeDeviceDefFree(def); VIR_FREE(wwnn); VIR_FREE(wwpn); - return dev; + return device; } =20 =20 int -nodeDeviceDestroy(virNodeDevicePtr dev) +nodeDeviceDestroy(virNodeDevicePtr device) { int ret =3D -1; virNodeDeviceObjPtr obj =3D NULL; @@ -593,12 +593,12 @@ nodeDeviceDestroy(virNodeDevicePtr dev) char *wwnn =3D NULL, *wwpn =3D NULL; int parent_host =3D -1; =20 - if (!(obj =3D nodeDeviceObjFindByName(dev->name))) + if (!(obj =3D nodeDeviceObjFindByName(device->name))) return -1; =20 nodeDeviceLock(); =20 - if (virNodeDeviceDestroyEnsureACL(dev->conn, obj->def) < 0) + if (virNodeDeviceDestroyEnsureACL(device->conn, obj->def) < 0) goto cleanup; =20 if (virNodeDeviceGetWWNs(obj->def, &wwnn, &wwpn) < 0) @@ -631,7 +631,7 @@ nodeDeviceDestroy(virNodeDevicePtr dev) =20 int nodeConnectNodeDeviceEventRegisterAny(virConnectPtr conn, - virNodeDevicePtr dev, + virNodeDevicePtr device, int eventID, virConnectNodeDeviceEventGenericCall= back callback, void *opaque, @@ -643,7 +643,7 @@ nodeConnectNodeDeviceEventRegisterAny(virConnectPtr con= n, goto cleanup; =20 if (virNodeDeviceEventStateRegisterID(conn, driver->nodeDeviceEventSta= te, - dev, eventID, callback, + device, eventID, callback, opaque, freecb, &callbackID) < 0) callbackID =3D -1; cleanup: diff --git a/src/node_device/node_device_hal.c b/src/node_device/node_devic= e_hal.c index 81e5ecc..ff6200b 100644 --- a/src/node_device/node_device_hal.c +++ b/src/node_device/node_device_hal.c @@ -457,7 +457,7 @@ dev_create(const char *udi) { LibHalContext *ctx; char *parent_key =3D NULL; - virNodeDeviceObjPtr dev =3D NULL; + virNodeDeviceObjPtr obj =3D NULL; virNodeDeviceDefPtr def =3D NULL; const char *name =3D hal_name(udi); int rv; @@ -493,17 +493,17 @@ 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 virNodeDeviceObjAssignDef(&driver->devs, def); - if (!dev) { + obj =3D virNodeDeviceObjAssignDef(&driver->devs, def); + if (!obj) { VIR_FREE(devicePath); goto failure; } =20 - dev->privateData =3D privData; - dev->privateFree =3D free_udi; - dev->def->sysfs_path =3D devicePath; + obj->privateData =3D privData; + obj->privateFree =3D free_udi; + obj->def->sysfs_path =3D devicePath; =20 - virNodeDeviceObjUnlock(dev); + virNodeDeviceObjUnlock(obj); =20 nodeDeviceUnlock(); return; @@ -520,21 +520,21 @@ static void dev_refresh(const char *udi) { const char *name =3D hal_name(udi); - virNodeDeviceObjPtr dev; + virNodeDeviceObjPtr obj; =20 nodeDeviceLock(); - dev =3D virNodeDeviceObjFindByName(&driver->devs, name); - if (dev) { + obj =3D virNodeDeviceObjFindByName(&driver->devs, name); + if (obj) { /* Simply "rediscover" device -- incrementally handling changes * to sub-capabilities (like net.80203) is nasty ... so avoid it. */ - virNodeDeviceObjRemove(&driver->devs, &dev); + virNodeDeviceObjRemove(&driver->devs, &obj); } else { VIR_DEBUG("no device named %s", name); } nodeDeviceUnlock(); =20 - if (dev) + if (obj) dev_create(udi); } =20 @@ -552,13 +552,13 @@ device_removed(LibHalContext *ctx ATTRIBUTE_UNUSED, const char *udi) { const char *name =3D hal_name(udi); - virNodeDeviceObjPtr dev; + virNodeDeviceObjPtr obj; =20 nodeDeviceLock(); - dev =3D virNodeDeviceObjFindByName(&driver->devs, name); + obj =3D virNodeDeviceObjFindByName(&driver->devs, name); VIR_DEBUG("%s", name); - if (dev) - virNodeDeviceObjRemove(&driver->devs, &dev); + if (obj) + virNodeDeviceObjRemove(&driver->devs, &obj); else VIR_DEBUG("no device named %s", name); nodeDeviceUnlock(); @@ -570,15 +570,15 @@ device_cap_added(LibHalContext *ctx, const char *udi, const char *cap) { const char *name =3D hal_name(udi); - virNodeDeviceObjPtr dev; + virNodeDeviceObjPtr obj; =20 nodeDeviceLock(); - dev =3D virNodeDeviceObjFindByName(&driver->devs, name); + obj =3D virNodeDeviceObjFindByName(&driver->devs, name); nodeDeviceUnlock(); VIR_DEBUG("%s %s", cap, name); - if (dev) { - (void)gather_capability(ctx, udi, cap, &dev->def->caps); - virNodeDeviceObjUnlock(dev); + if (obj) { + (void)gather_capability(ctx, udi, cap, &obj->def->caps); + virNodeDeviceObjUnlock(obj); } else { VIR_DEBUG("no device named %s", name); } diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_devi= ce_udev.c index 481358a..42d3e73 100644 --- a/src/node_device/node_device_udev.c +++ b/src/node_device/node_device_udev.c @@ -1276,27 +1276,27 @@ udevGetDeviceDetails(struct udev_device *device, static int udevRemoveOneDevice(struct udev_device *device) { - virNodeDeviceObjPtr dev =3D NULL; + virNodeDeviceObjPtr obj =3D NULL; virObjectEventPtr event =3D NULL; const char *name =3D NULL; int ret =3D -1; =20 name =3D udev_device_get_syspath(device); - dev =3D virNodeDeviceObjFindBySysfsPath(&driver->devs, name); + obj =3D virNodeDeviceObjFindBySysfsPath(&driver->devs, name); =20 - if (!dev) { + if (!obj) { VIR_DEBUG("Failed to find device to remove that has udev name '%s'= ", name); goto cleanup; } =20 - event =3D virNodeDeviceEventLifecycleNew(dev->def->name, + event =3D virNodeDeviceEventLifecycleNew(obj->def->name, VIR_NODE_DEVICE_EVENT_DELETED, 0); =20 VIR_DEBUG("Removing device '%s' with sysfs path '%s'", - dev->def->name, name); - virNodeDeviceObjRemove(&driver->devs, &dev); + obj->def->name, name); + virNodeDeviceObjRemove(&driver->devs, &obj); =20 ret =3D 0; cleanup: @@ -1312,7 +1312,7 @@ udevSetParent(struct udev_device *device, { struct udev_device *parent_device =3D NULL; const char *parent_sysfs_path =3D NULL; - virNodeDeviceObjPtr dev =3D NULL; + virNodeDeviceObjPtr obj =3D NULL; int ret =3D -1; =20 parent_device =3D device; @@ -1330,14 +1330,14 @@ udevSetParent(struct udev_device *device, goto cleanup; } =20 - dev =3D virNodeDeviceObjFindBySysfsPath(&driver->devs, + obj =3D virNodeDeviceObjFindBySysfsPath(&driver->devs, parent_sysfs_path); - if (dev !=3D NULL) { - if (VIR_STRDUP(def->parent, dev->def->name) < 0) { - virNodeDeviceObjUnlock(dev); + if (obj !=3D NULL) { + if (VIR_STRDUP(def->parent, obj->def->name) < 0) { + virNodeDeviceObjUnlock(obj); goto cleanup; } - virNodeDeviceObjUnlock(dev); + virNodeDeviceObjUnlock(obj); =20 if (VIR_STRDUP(def->parent_sysfs_path, parent_sysfs_path) < 0) goto cleanup; @@ -1359,7 +1359,7 @@ static int udevAddOneDevice(struct udev_device *device) { virNodeDeviceDefPtr def =3D NULL; - virNodeDeviceObjPtr dev =3D NULL; + virNodeDeviceObjPtr obj =3D NULL; virObjectEventPtr event =3D NULL; bool new_device =3D true; int ret =3D -1; @@ -1388,26 +1388,26 @@ udevAddOneDevice(struct udev_device *device) if (udevSetParent(device, def) !=3D 0) goto cleanup; =20 - dev =3D virNodeDeviceObjFindByName(&driver->devs, def->name); - if (dev) { - virNodeDeviceObjUnlock(dev); + obj =3D virNodeDeviceObjFindByName(&driver->devs, def->name); + if (obj) { + virNodeDeviceObjUnlock(obj); new_device =3D false; } =20 /* If this is a device change, the old definition will be freed * and the current definition will take its place. */ - dev =3D virNodeDeviceObjAssignDef(&driver->devs, def); - if (dev =3D=3D NULL) + obj =3D virNodeDeviceObjAssignDef(&driver->devs, def); + if (obj =3D=3D NULL) goto cleanup; =20 if (new_device) - event =3D virNodeDeviceEventLifecycleNew(dev->def->name, + event =3D virNodeDeviceEventLifecycleNew(obj->def->name, VIR_NODE_DEVICE_EVENT_CREAT= ED, 0); else - event =3D virNodeDeviceEventUpdateNew(dev->def->name); + event =3D virNodeDeviceEventUpdateNew(obj->def->name); =20 - virNodeDeviceObjUnlock(dev); + virNodeDeviceObjUnlock(obj); =20 ret =3D 0; =20 @@ -1670,7 +1670,7 @@ static int udevSetupSystemDev(void) { virNodeDeviceDefPtr def =3D NULL; - virNodeDeviceObjPtr dev =3D NULL; + virNodeDeviceObjPtr obj =3D NULL; int ret =3D -1; =20 if (VIR_ALLOC(def) < 0) @@ -1686,11 +1686,11 @@ udevSetupSystemDev(void) udevGetDMIData(&def->caps->data.system); #endif =20 - dev =3D virNodeDeviceObjAssignDef(&driver->devs, def); - if (dev =3D=3D NULL) + obj =3D virNodeDeviceObjAssignDef(&driver->devs, def); + if (obj =3D=3D NULL) goto cleanup; =20 - virNodeDeviceObjUnlock(dev); + virNodeDeviceObjUnlock(obj); =20 ret =3D 0; =20 --=20 2.9.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat Apr 27 20:34:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1495742268972783.2777046012932; Thu, 25 May 2017 12:57:48 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C02CD78EC3; Thu, 25 May 2017 19:57:46 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9568817591; Thu, 25 May 2017 19:57:46 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 43F044A495; Thu, 25 May 2017 19:57:46 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v4PJvdVA016938 for ; Thu, 25 May 2017 15:57:39 -0400 Received: by smtp.corp.redhat.com (Postfix) id DB78B17DF6; Thu, 25 May 2017 19:57:39 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-108.phx2.redhat.com [10.3.116.108]) by smtp.corp.redhat.com (Postfix) with ESMTP id 53B567F8E3 for ; Thu, 25 May 2017 19:57:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C02CD78EC3 Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com C02CD78EC3 From: John Ferlan To: libvir-list@redhat.com Date: Thu, 25 May 2017 15:57:08 -0400 Message-Id: <20170525195711.27087-12-jferlan@redhat.com> In-Reply-To: <20170525195711.27087-1-jferlan@redhat.com> References: <20170525195711.27087-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 11/14] nodedev: Introduce virNodeDeviceObjGetDef 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-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Thu, 25 May 2017 19:57:48 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" In preparation for privatizing the virNodeDeviceObj - create an accessor for the @def field and then use it for various callers. Signed-off-by: John Ferlan --- src/conf/virnodedeviceobj.c | 7 +++++ src/conf/virnodedeviceobj.h | 2 ++ src/libvirt_private.syms | 1 + src/node_device/node_device_driver.c | 52 ++++++++++++++++++++++----------= ---- src/node_device/node_device_hal.c | 11 +++++--- src/node_device/node_device_udev.c | 35 ++++++++++++------------ src/test/test_driver.c | 38 +++++++++++++++++--------- 7 files changed, 92 insertions(+), 54 deletions(-) diff --git a/src/conf/virnodedeviceobj.c b/src/conf/virnodedeviceobj.c index a2d09ad..1b9d032 100644 --- a/src/conf/virnodedeviceobj.c +++ b/src/conf/virnodedeviceobj.c @@ -33,6 +33,13 @@ VIR_LOG_INIT("conf.virnodedeviceobj"); =20 =20 +virNodeDeviceDefPtr +virNodeDeviceObjGetDef(virNodeDeviceObjPtr obj) +{ + return obj->def; +} + + static int virNodeDeviceObjHasCap(const virNodeDeviceObj *obj, const char *cap) diff --git a/src/conf/virnodedeviceobj.h b/src/conf/virnodedeviceobj.h index b8b534b..135a424 100644 --- a/src/conf/virnodedeviceobj.h +++ b/src/conf/virnodedeviceobj.h @@ -39,6 +39,8 @@ struct _virNodeDeviceDriverState { virObjectEventStatePtr nodeDeviceEventState; }; =20 +virNodeDeviceDefPtr +virNodeDeviceObjGetDef(virNodeDeviceObjPtr obj); =20 virNodeDeviceObjPtr virNodeDeviceObjFindByName(virNodeDeviceObjListPtr devs, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index d361454..222e3b2 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -955,6 +955,7 @@ virNetworkObjUpdateAssignDef; virNodeDeviceObjAssignDef; virNodeDeviceObjFindByName; virNodeDeviceObjFindBySysfsPath; +virNodeDeviceObjGetDef; virNodeDeviceObjGetNames; virNodeDeviceObjGetParentHost; virNodeDeviceObjListExport; diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_de= vice_driver.c index d34f399..93aa2af 100644 --- a/src/node_device/node_device_driver.c +++ b/src/node_device/node_device_driver.c @@ -253,16 +253,18 @@ nodeDeviceLookupByName(virConnectPtr conn, const char *name) { virNodeDeviceObjPtr obj; + virNodeDeviceDefPtr def; virNodeDevicePtr device =3D NULL; =20 if (!(obj =3D nodeDeviceObjFindByName(name))) return NULL; + def =3D virNodeDeviceObjGetDef(obj); =20 - if (virNodeDeviceLookupByNameEnsureACL(conn, obj->def) < 0) + if (virNodeDeviceLookupByNameEnsureACL(conn, def) < 0) goto cleanup; =20 if ((device =3D virGetNodeDevice(conn, name))) { - if (VIR_STRDUP(device->parent, obj->def->parent) < 0) + if (VIR_STRDUP(device->parent, def->parent) < 0) virObjectUnref(device); } =20 @@ -282,6 +284,7 @@ nodeDeviceLookupSCSIHostByWWN(virConnectPtr conn, virNodeDeviceObjListPtr devs =3D &driver->devs; virNodeDevCapsDefPtr cap =3D NULL; virNodeDeviceObjPtr obj =3D NULL; + virNodeDeviceDefPtr def; virNodeDevicePtr device =3D NULL; =20 virCheckFlags(0, NULL); @@ -291,7 +294,8 @@ nodeDeviceLookupSCSIHostByWWN(virConnectPtr conn, for (i =3D 0; i < devs->count; i++) { obj =3D devs->objs[i]; virNodeDeviceObjLock(obj); - cap =3D obj->def->caps; + def =3D virNodeDeviceObjGetDef(obj); + cap =3D def->caps; =20 while (cap) { if (cap->data.type =3D=3D VIR_NODE_DEV_CAP_SCSI_HOST) { @@ -301,11 +305,11 @@ nodeDeviceLookupSCSIHostByWWN(virConnectPtr conn, if (STREQ(cap->data.scsi_host.wwnn, wwnn) && STREQ(cap->data.scsi_host.wwpn, wwpn)) { =20 - if (virNodeDeviceLookupSCSIHostByWWNEnsureACL(conn= , obj->def) < 0) + if (virNodeDeviceLookupSCSIHostByWWNEnsureACL(conn= , def) < 0) goto out; =20 - if ((device =3D virGetNodeDevice(conn, obj->def->n= ame))) { - if (VIR_STRDUP(device->parent, obj->def->paren= t) < 0) + if ((device =3D virGetNodeDevice(conn, def->name))= ) { + if (VIR_STRDUP(device->parent, def->parent) < = 0) virObjectUnref(device); } virNodeDeviceObjUnlock(obj); @@ -330,23 +334,25 @@ nodeDeviceGetXMLDesc(virNodeDevicePtr device, unsigned int flags) { virNodeDeviceObjPtr obj; + virNodeDeviceDefPtr def; char *ret =3D NULL; =20 virCheckFlags(0, NULL); =20 if (!(obj =3D nodeDeviceObjFindByName(device->name))) return NULL; + def =3D virNodeDeviceObjGetDef(obj); =20 - if (virNodeDeviceGetXMLDescEnsureACL(device->conn, obj->def) < 0) + if (virNodeDeviceGetXMLDescEnsureACL(device->conn, def) < 0) goto cleanup; =20 - if (nodeDeviceUpdateDriverName(obj->def) < 0) + if (nodeDeviceUpdateDriverName(def) < 0) goto cleanup; =20 - if (nodeDeviceUpdateCaps(obj->def) < 0) + if (nodeDeviceUpdateCaps(def) < 0) goto cleanup; =20 - ret =3D virNodeDeviceDefFormat(obj->def); + ret =3D virNodeDeviceDefFormat(def); =20 cleanup: virNodeDeviceObjUnlock(obj); @@ -358,16 +364,18 @@ char * nodeDeviceGetParent(virNodeDevicePtr device) { virNodeDeviceObjPtr obj; + virNodeDeviceDefPtr def; char *ret =3D NULL; =20 if (!(obj =3D nodeDeviceObjFindByName(device->name))) return NULL; + def =3D virNodeDeviceObjGetDef(obj); =20 - if (virNodeDeviceGetParentEnsureACL(device->conn, obj->def) < 0) + if (virNodeDeviceGetParentEnsureACL(device->conn, def) < 0) goto cleanup; =20 - if (obj->def->parent) { - if (VIR_STRDUP(ret, obj->def->parent) < 0) + if (def->parent) { + if (VIR_STRDUP(ret, def->parent) < 0) goto cleanup; } else { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -384,17 +392,19 @@ int nodeDeviceNumOfCaps(virNodeDevicePtr device) { virNodeDeviceObjPtr obj; + virNodeDeviceDefPtr def; virNodeDevCapsDefPtr caps; int ncaps =3D 0; int ret =3D -1; =20 if (!(obj =3D nodeDeviceObjFindByName(device->name))) return -1; + def =3D virNodeDeviceObjGetDef(obj); =20 - if (virNodeDeviceNumOfCapsEnsureACL(device->conn, obj->def) < 0) + if (virNodeDeviceNumOfCapsEnsureACL(device->conn, def) < 0) goto cleanup; =20 - for (caps =3D obj->def->caps; caps; caps =3D caps->next) { + for (caps =3D def->caps; caps; caps =3D caps->next) { ++ncaps; =20 if (caps->data.type =3D=3D VIR_NODE_DEV_CAP_SCSI_HOST) { @@ -423,17 +433,19 @@ nodeDeviceListCaps(virNodeDevicePtr device, int maxnames) { virNodeDeviceObjPtr obj; + virNodeDeviceDefPtr def; virNodeDevCapsDefPtr caps; int ncaps =3D 0; int ret =3D -1; =20 if (!(obj =3D nodeDeviceObjFindByName(device->name))) return -1; + def =3D virNodeDeviceObjGetDef(obj); =20 - if (virNodeDeviceListCapsEnsureACL(device->conn, obj->def) < 0) + if (virNodeDeviceListCapsEnsureACL(device->conn, def) < 0) goto cleanup; =20 - for (caps =3D obj->def->caps; caps && ncaps < maxnames; caps =3D caps-= >next) { + for (caps =3D def->caps; caps && ncaps < maxnames; caps =3D caps->next= ) { if (VIR_STRDUP(names[ncaps++], virNodeDevCapTypeToString(caps->dat= a.type)) < 0) goto cleanup; =20 @@ -595,20 +607,20 @@ nodeDeviceDestroy(virNodeDevicePtr device) =20 if (!(obj =3D nodeDeviceObjFindByName(device->name))) return -1; + def =3D virNodeDeviceObjGetDef(obj); =20 nodeDeviceLock(); =20 - if (virNodeDeviceDestroyEnsureACL(device->conn, obj->def) < 0) + if (virNodeDeviceDestroyEnsureACL(device->conn, def) < 0) goto cleanup; =20 - if (virNodeDeviceGetWWNs(obj->def, &wwnn, &wwpn) < 0) + if (virNodeDeviceGetWWNs(def, &wwnn, &wwpn) < 0) goto cleanup; =20 /* virNodeDeviceGetParentHost will cause the device object's lock * to be taken, so grab the object def which will have the various * fields used to search (name, parent, parent_wwnn, parent_wwpn, * or parent_fabric_wwn) and drop the object lock. */ - def =3D obj->def; virNodeDeviceObjUnlock(obj); obj =3D NULL; if ((parent_host =3D virNodeDeviceObjGetParentHost(&driver->devs, def, diff --git a/src/node_device/node_device_hal.c b/src/node_device/node_devic= e_hal.c index ff6200b..cde1c7b 100644 --- a/src/node_device/node_device_hal.c +++ b/src/node_device/node_device_hal.c @@ -459,6 +459,7 @@ dev_create(const char *udi) char *parent_key =3D NULL; virNodeDeviceObjPtr obj =3D NULL; virNodeDeviceDefPtr def =3D NULL; + virNodeDeviceDefPtr objdef; const char *name =3D hal_name(udi); int rv; char *privData; @@ -493,15 +494,15 @@ 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 - obj =3D virNodeDeviceObjAssignDef(&driver->devs, def); - if (!obj) { + if (!(obj =3D virNodeDeviceObjAssignDef(&driver->devs, def))) { VIR_FREE(devicePath); goto failure; } + objdef =3D virNodeDeviceObjGetDef(obj); =20 obj->privateData =3D privData; obj->privateFree =3D free_udi; - obj->def->sysfs_path =3D devicePath; + objdef->sysfs_path =3D devicePath; =20 virNodeDeviceObjUnlock(obj); =20 @@ -571,13 +572,15 @@ device_cap_added(LibHalContext *ctx, { const char *name =3D hal_name(udi); virNodeDeviceObjPtr obj; + virNodeDeviceDefPtr def; =20 nodeDeviceLock(); obj =3D virNodeDeviceObjFindByName(&driver->devs, name); nodeDeviceUnlock(); VIR_DEBUG("%s %s", cap, name); if (obj) { - (void)gather_capability(ctx, udi, cap, &obj->def->caps); + def =3D virNodeDeviceObjGetDef(obj); + (void)gather_capability(ctx, udi, cap, &def->caps); virNodeDeviceObjUnlock(obj); } else { VIR_DEBUG("no device named %s", name); diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_devi= ce_udev.c index 42d3e73..83a8fcc 100644 --- a/src/node_device/node_device_udev.c +++ b/src/node_device/node_device_udev.c @@ -1277,32 +1277,29 @@ static int udevRemoveOneDevice(struct udev_device *device) { virNodeDeviceObjPtr obj =3D NULL; + virNodeDeviceDefPtr def; virObjectEventPtr event =3D NULL; const char *name =3D NULL; - int ret =3D -1; =20 name =3D udev_device_get_syspath(device); - obj =3D virNodeDeviceObjFindBySysfsPath(&driver->devs, name); - - if (!obj) { + if (!(obj =3D virNodeDeviceObjFindBySysfsPath(&driver->devs, name))) { VIR_DEBUG("Failed to find device to remove that has udev name '%s'= ", name); - goto cleanup; + return -1; } + def =3D virNodeDeviceObjGetDef(obj); =20 - event =3D virNodeDeviceEventLifecycleNew(obj->def->name, + event =3D virNodeDeviceEventLifecycleNew(def->name, VIR_NODE_DEVICE_EVENT_DELETED, 0); =20 VIR_DEBUG("Removing device '%s' with sysfs path '%s'", - obj->def->name, name); + def->name, name); virNodeDeviceObjRemove(&driver->devs, &obj); =20 - ret =3D 0; - cleanup: if (event) virObjectEventStateQueue(driver->nodeDeviceEventState, event); - return ret; + return 0; } =20 =20 @@ -1313,6 +1310,7 @@ udevSetParent(struct udev_device *device, struct udev_device *parent_device =3D NULL; const char *parent_sysfs_path =3D NULL; virNodeDeviceObjPtr obj =3D NULL; + virNodeDeviceDefPtr objdef; int ret =3D -1; =20 parent_device =3D device; @@ -1330,10 +1328,10 @@ udevSetParent(struct udev_device *device, goto cleanup; } =20 - obj =3D virNodeDeviceObjFindBySysfsPath(&driver->devs, - parent_sysfs_path); - if (obj !=3D NULL) { - if (VIR_STRDUP(def->parent, obj->def->name) < 0) { + if ((obj =3D virNodeDeviceObjFindBySysfsPath(&driver->devs, + parent_sysfs_path))) { + objdef =3D virNodeDeviceObjGetDef(obj); + if (VIR_STRDUP(objdef->parent, def->name) < 0) { virNodeDeviceObjUnlock(obj); goto cleanup; } @@ -1360,6 +1358,7 @@ udevAddOneDevice(struct udev_device *device) { virNodeDeviceDefPtr def =3D NULL; virNodeDeviceObjPtr obj =3D NULL; + virNodeDeviceDefPtr objdef; virObjectEventPtr event =3D NULL; bool new_device =3D true; int ret =3D -1; @@ -1396,16 +1395,16 @@ udevAddOneDevice(struct udev_device *device) =20 /* If this is a device change, the old definition will be freed * and the current definition will take its place. */ - obj =3D virNodeDeviceObjAssignDef(&driver->devs, def); - if (obj =3D=3D NULL) + if (!(obj =3D virNodeDeviceObjAssignDef(&driver->devs, def))) goto cleanup; + objdef =3D virNodeDeviceObjGetDef(obj); =20 if (new_device) - event =3D virNodeDeviceEventLifecycleNew(obj->def->name, + event =3D virNodeDeviceEventLifecycleNew(objdef->name, VIR_NODE_DEVICE_EVENT_CREAT= ED, 0); else - event =3D virNodeDeviceEventUpdateNew(obj->def->name); + event =3D virNodeDeviceEventUpdateNew(objdef->name); =20 virNodeDeviceObjUnlock(obj); =20 diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 3389edd..206fdf9 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -5319,13 +5319,15 @@ testNodeDeviceLookupByName(virConnectPtr conn, cons= t char *name) { testDriverPtr driver =3D conn->privateData; virNodeDeviceObjPtr obj; + virNodeDeviceDefPtr def; virNodeDevicePtr ret =3D NULL; =20 if (!(obj =3D testNodeDeviceObjFindByName(driver, name))) return NULL; + def =3D virNodeDeviceObjGetDef(obj); =20 if ((ret =3D virGetNodeDevice(conn, name))) { - if (VIR_STRDUP(ret->parent, obj->def->parent) < 0) + if (VIR_STRDUP(ret->parent, def->parent) < 0) virObjectUnref(ret); } =20 @@ -5346,7 +5348,7 @@ testNodeDeviceGetXMLDesc(virNodeDevicePtr dev, if (!(obj =3D testNodeDeviceObjFindByName(driver, dev->name))) return NULL; =20 - ret =3D virNodeDeviceDefFormat(obj->def); + ret =3D virNodeDeviceDefFormat(virNodeDeviceObjGetDef(obj)); =20 virNodeDeviceObjUnlock(obj); return ret; @@ -5357,13 +5359,15 @@ testNodeDeviceGetParent(virNodeDevicePtr dev) { testDriverPtr driver =3D dev->conn->privateData; virNodeDeviceObjPtr obj; + virNodeDeviceDefPtr def; char *ret =3D NULL; =20 if (!(obj =3D testNodeDeviceObjFindByName(driver, dev->name))) return NULL; + def =3D virNodeDeviceObjGetDef(obj); =20 - if (obj->def->parent) { - ignore_value(VIR_STRDUP(ret, obj->def->parent)); + if (def->parent) { + ignore_value(VIR_STRDUP(ret, def->parent)); } else { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("no parent for this device")); @@ -5379,13 +5383,15 @@ testNodeDeviceNumOfCaps(virNodeDevicePtr dev) { testDriverPtr driver =3D dev->conn->privateData; virNodeDeviceObjPtr obj; + virNodeDeviceDefPtr def; virNodeDevCapsDefPtr caps; int ncaps =3D 0; =20 if (!(obj =3D testNodeDeviceObjFindByName(driver, dev->name))) return -1; + def =3D virNodeDeviceObjGetDef(obj); =20 - for (caps =3D obj->def->caps; caps; caps =3D caps->next) + for (caps =3D def->caps; caps; caps =3D caps->next) ++ncaps; =20 virNodeDeviceObjUnlock(obj); @@ -5398,13 +5404,15 @@ testNodeDeviceListCaps(virNodeDevicePtr dev, char *= *const names, int maxnames) { testDriverPtr driver =3D dev->conn->privateData; virNodeDeviceObjPtr obj; + virNodeDeviceDefPtr def; virNodeDevCapsDefPtr caps; int ncaps =3D 0; =20 if (!(obj =3D testNodeDeviceObjFindByName(driver, dev->name))) return -1; + def =3D virNodeDeviceObjGetDef(obj); =20 - for (caps =3D obj->def->caps; caps && ncaps < maxnames; caps =3D caps-= >next) { + for (caps =3D def->caps; caps && ncaps < maxnames; caps =3D caps->next= ) { if (VIR_STRDUP(names[ncaps], virNodeDevCapTypeToString(caps->data.type)) < 0) goto error; @@ -5431,6 +5439,7 @@ testNodeDeviceMockCreateVport(testDriverPtr driver, virNodeDeviceDefPtr def =3D NULL; virNodeDevCapsDefPtr caps; virNodeDeviceObjPtr obj =3D NULL, objcopy =3D NULL; + virNodeDeviceDefPtr objdef; virObjectEventPtr event =3D NULL; =20 /* In the real code, we'd call virVHBAManageVport which would take the @@ -5445,7 +5454,7 @@ testNodeDeviceMockCreateVport(testDriverPtr driver, if (!(objcopy =3D virNodeDeviceObjFindByName(&driver->devs, "scsi_host= 11"))) goto cleanup; =20 - xml =3D virNodeDeviceDefFormat(objcopy->def); + xml =3D virNodeDeviceDefFormat(virNodeDeviceObjGetDef(objcopy)); virNodeDeviceObjUnlock(objcopy); if (!xml) goto cleanup; @@ -5485,8 +5494,9 @@ testNodeDeviceMockCreateVport(testDriverPtr driver, if (!(obj =3D virNodeDeviceObjAssignDef(&driver->devs, def))) goto cleanup; def =3D NULL; + objdef =3D virNodeDeviceObjGetDef(obj); =20 - event =3D virNodeDeviceEventLifecycleNew(obj->def->name, + event =3D virNodeDeviceEventLifecycleNew(objdef->name, VIR_NODE_DEVICE_EVENT_CREATED, 0); testObjectEventQueue(driver, event); @@ -5508,6 +5518,7 @@ testNodeDeviceCreateXML(virConnectPtr conn, char *wwnn =3D NULL, *wwpn =3D NULL; virNodeDevicePtr dev =3D NULL, ret =3D NULL; virNodeDeviceObjPtr obj =3D NULL; + virNodeDeviceDefPtr objdef; =20 virCheckFlags(0, NULL); =20 @@ -5535,8 +5546,9 @@ testNodeDeviceCreateXML(virConnectPtr conn, * work properly, we need to drop our lock */ if (!(obj =3D testNodeDeviceMockCreateVport(driver, wwnn, wwpn))) goto cleanup; + objdef =3D virNodeDeviceObjGetDef(obj); =20 - if (!(dev =3D virGetNodeDevice(conn, obj->def->name))) + if (!(dev =3D virGetNodeDevice(conn, objdef->name))) goto cleanup; =20 VIR_FREE(dev->parent); @@ -5563,16 +5575,18 @@ testNodeDeviceDestroy(virNodeDevicePtr dev) int ret =3D 0; testDriverPtr driver =3D dev->conn->privateData; virNodeDeviceObjPtr obj =3D NULL; + virNodeDeviceDefPtr def; char *parent_name =3D NULL, *wwnn =3D NULL, *wwpn =3D NULL; virObjectEventPtr event =3D NULL; =20 if (!(obj =3D testNodeDeviceObjFindByName(driver, dev->name))) return -1; + def =3D virNodeDeviceObjGetDef(obj); =20 - if (virNodeDeviceGetWWNs(obj->def, &wwnn, &wwpn) =3D=3D -1) + if (virNodeDeviceGetWWNs(def, &wwnn, &wwpn) =3D=3D -1) goto cleanup; =20 - if (VIR_STRDUP(parent_name, obj->def->parent) < 0) + if (VIR_STRDUP(parent_name, def->parent) < 0) goto cleanup; =20 /* virNodeDeviceGetParentHost will cause the device object's lock to be @@ -5583,7 +5597,7 @@ 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 (virNodeDeviceObjGetParentHost(&driver->devs, obj->def, + if (virNodeDeviceObjGetParentHost(&driver->devs, def, EXISTING_DEVICE) < 0) { obj =3D NULL; goto cleanup; --=20 2.9.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat Apr 27 20:34:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1495742276491564.8888328642022; Thu, 25 May 2017 12:57:56 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 25C7AC0010AB; Thu, 25 May 2017 19:57:54 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id EA1B5174A0; Thu, 25 May 2017 19:57:53 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id C91344A498; Thu, 25 May 2017 19:57:49 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v4PJve6K016943 for ; Thu, 25 May 2017 15:57:40 -0400 Received: by smtp.corp.redhat.com (Postfix) id 377FF7F39C; Thu, 25 May 2017 19:57:40 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-108.phx2.redhat.com [10.3.116.108]) by smtp.corp.redhat.com (Postfix) with ESMTP id DBA6C17F20 for ; Thu, 25 May 2017 19:57:39 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 25C7AC0010AB Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 25C7AC0010AB From: John Ferlan To: libvir-list@redhat.com Date: Thu, 25 May 2017 15:57:09 -0400 Message-Id: <20170525195711.27087-13-jferlan@redhat.com> In-Reply-To: <20170525195711.27087-1-jferlan@redhat.com> References: <20170525195711.27087-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 12/14] nodedev: Remove privateData from 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-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Thu, 25 May 2017 19:57:55 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" It was only ever used in node_device_hal.c which really never used it anyway since the NODE_DEV_UDI was never referenced. Remove free_udi() and @privData as well as the references to obj->privateData & obj->privateF= ree. Signed-off-by: John Ferlan --- src/conf/node_device_conf.h | 2 -- src/conf/virnodedeviceobj.c | 2 -- src/node_device/node_device_hal.c | 15 --------------- 3 files changed, 19 deletions(-) diff --git a/src/conf/node_device_conf.h b/src/conf/node_device_conf.h index 5743f9d..0ab2b96 100644 --- a/src/conf/node_device_conf.h +++ b/src/conf/node_device_conf.h @@ -318,8 +318,6 @@ struct _virNodeDeviceObj { virMutex lock; =20 virNodeDeviceDefPtr def; /* device definition */ - void *privateData; /* driver-specific private data */ - void (*privateFree)(void *data); /* destructor for private data */ =20 }; =20 diff --git a/src/conf/virnodedeviceobj.c b/src/conf/virnodedeviceobj.c index 1b9d032..a7e51ef 100644 --- a/src/conf/virnodedeviceobj.c +++ b/src/conf/virnodedeviceobj.c @@ -248,8 +248,6 @@ virNodeDeviceObjFree(virNodeDeviceObjPtr obj) return; =20 virNodeDeviceDefFree(obj->def); - if (obj->privateFree) - (*obj->privateFree)(obj->privateData); =20 virMutexDestroy(&obj->lock); =20 diff --git a/src/node_device/node_device_hal.c b/src/node_device/node_devic= e_hal.c index cde1c7b..e9031ea 100644 --- a/src/node_device/node_device_hal.c +++ b/src/node_device/node_device_hal.c @@ -52,8 +52,6 @@ VIR_LOG_INIT("node_device.node_device_hal"); =20 #define DRV_STATE_HAL_CTX(ds) ((LibHalContext *)((ds)->privateData)) =20 -#define NODE_DEV_UDI(obj) ((const char *)((obj)->privateData) - =20 static const char * hal_name(const char *udi) @@ -447,12 +445,6 @@ gather_capabilities(LibHalContext *ctx, const char *ud= i, } =20 static void -free_udi(void *udi) -{ - VIR_FREE(udi); -} - -static void dev_create(const char *udi) { LibHalContext *ctx; @@ -462,12 +454,8 @@ dev_create(const char *udi) virNodeDeviceDefPtr objdef; const char *name =3D hal_name(udi); int rv; - char *privData; char *devicePath =3D NULL; =20 - if (VIR_STRDUP(privData, udi) < 0) - return; - nodeDeviceLock(); ctx =3D DRV_STATE_HAL_CTX(driver); =20 @@ -500,8 +488,6 @@ dev_create(const char *udi) } objdef =3D virNodeDeviceObjGetDef(obj); =20 - obj->privateData =3D privData; - obj->privateFree =3D free_udi; objdef->sysfs_path =3D devicePath; =20 virNodeDeviceObjUnlock(obj); @@ -512,7 +498,6 @@ dev_create(const char *udi) failure: VIR_DEBUG("FAILED TO ADD dev %s", name); cleanup: - VIR_FREE(privData); virNodeDeviceDefFree(def); nodeDeviceUnlock(); } --=20 2.9.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat Apr 27 20:34:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1495742301026718.9214544679592; Thu, 25 May 2017 12:58:21 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A4262A6E0F; Thu, 25 May 2017 19:58:18 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7D55D18A60; Thu, 25 May 2017 19:58:18 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 5819A18523C8; Thu, 25 May 2017 19:57:53 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v4PJvfB9016951 for ; Thu, 25 May 2017 15:57:41 -0400 Received: by smtp.corp.redhat.com (Postfix) id B1F1817ACF; Thu, 25 May 2017 19:57:41 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-108.phx2.redhat.com [10.3.116.108]) by smtp.corp.redhat.com (Postfix) with ESMTP id 681447F8CF for ; Thu, 25 May 2017 19:57:40 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com A4262A6E0F Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com A4262A6E0F From: John Ferlan To: libvir-list@redhat.com Date: Thu, 25 May 2017 15:57:10 -0400 Message-Id: <20170525195711.27087-14-jferlan@redhat.com> In-Reply-To: <20170525195711.27087-1-jferlan@redhat.com> References: <20170525195711.27087-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 13/14] nodedev: Pass @def by reference to create/assign object 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-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 25 May 2017 19:58:19 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Since the @def is consumed by the assignment function, let's pass by reference instead of value and really consume it. Signed-off-by: John Ferlan --- src/conf/virnodedeviceobj.c | 8 ++++---- src/conf/virnodedeviceobj.h | 2 +- src/node_device/node_device_hal.c | 2 +- src/node_device/node_device_udev.c | 8 +++----- src/test/test_driver.c | 5 ++--- 5 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/conf/virnodedeviceobj.c b/src/conf/virnodedeviceobj.c index a7e51ef..1648b33 100644 --- a/src/conf/virnodedeviceobj.c +++ b/src/conf/virnodedeviceobj.c @@ -268,13 +268,13 @@ virNodeDeviceObjListFree(virNodeDeviceObjListPtr devs) =20 virNodeDeviceObjPtr virNodeDeviceObjAssignDef(virNodeDeviceObjListPtr devs, - virNodeDeviceDefPtr def) + virNodeDeviceDefPtr *def) { virNodeDeviceObjPtr obj; =20 - if ((obj =3D virNodeDeviceObjFindByName(devs, def->name))) { + if ((obj =3D virNodeDeviceObjFindByName(devs, (*def)->name))) { virNodeDeviceDefFree(obj->def); - obj->def =3D def; + VIR_STEAL_PTR(obj->def, *def); return obj; } =20 @@ -294,7 +294,7 @@ virNodeDeviceObjAssignDef(virNodeDeviceObjListPtr devs, virNodeDeviceObjFree(obj); return NULL; } - obj->def =3D def; + VIR_STEAL_PTR(obj->def, *def); =20 return obj; =20 diff --git a/src/conf/virnodedeviceobj.h b/src/conf/virnodedeviceobj.h index 135a424..49c28e7 100644 --- a/src/conf/virnodedeviceobj.h +++ b/src/conf/virnodedeviceobj.h @@ -53,7 +53,7 @@ virNodeDeviceObjFindBySysfsPath(virNodeDeviceObjListPtr d= evs, =20 virNodeDeviceObjPtr virNodeDeviceObjAssignDef(virNodeDeviceObjListPtr devs, - virNodeDeviceDefPtr def); + virNodeDeviceDefPtr *def); =20 void virNodeDeviceObjRemove(virNodeDeviceObjListPtr devs, diff --git a/src/node_device/node_device_hal.c b/src/node_device/node_devic= e_hal.c index e9031ea..2d996a9 100644 --- a/src/node_device/node_device_hal.c +++ b/src/node_device/node_device_hal.c @@ -482,7 +482,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 - if (!(obj =3D virNodeDeviceObjAssignDef(&driver->devs, def))) { + if (!(obj =3D virNodeDeviceObjAssignDef(&driver->devs, &def))) { VIR_FREE(devicePath); goto failure; } diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_devi= ce_udev.c index 83a8fcc..0250aab 100644 --- a/src/node_device/node_device_udev.c +++ b/src/node_device/node_device_udev.c @@ -1395,7 +1395,7 @@ udevAddOneDevice(struct udev_device *device) =20 /* If this is a device change, the old definition will be freed * and the current definition will take its place. */ - if (!(obj =3D virNodeDeviceObjAssignDef(&driver->devs, def))) + if (!(obj =3D virNodeDeviceObjAssignDef(&driver->devs, &def))) goto cleanup; objdef =3D virNodeDeviceObjGetDef(obj); =20 @@ -1685,8 +1685,7 @@ udevSetupSystemDev(void) udevGetDMIData(&def->caps->data.system); #endif =20 - obj =3D virNodeDeviceObjAssignDef(&driver->devs, def); - if (obj =3D=3D NULL) + if (!(obj =3D virNodeDeviceObjAssignDef(&driver->devs, &def))) goto cleanup; =20 virNodeDeviceObjUnlock(obj); @@ -1694,8 +1693,7 @@ udevSetupSystemDev(void) ret =3D 0; =20 cleanup: - if (ret =3D=3D -1) - virNodeDeviceDefFree(def); + virNodeDeviceDefFree(def); =20 return ret; } diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 206fdf9..84ff1de 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -1168,7 +1168,7 @@ testParseNodedevs(testDriverPtr privconn, if (!def) goto error; =20 - if (!(obj =3D virNodeDeviceObjAssignDef(&privconn->devs, def))) { + if (!(obj =3D virNodeDeviceObjAssignDef(&privconn->devs, &def))) { virNodeDeviceDefFree(def); goto error; } @@ -5491,9 +5491,8 @@ testNodeDeviceMockCreateVport(testDriverPtr driver, caps =3D caps->next; } =20 - if (!(obj =3D virNodeDeviceObjAssignDef(&driver->devs, def))) + if (!(obj =3D virNodeDeviceObjAssignDef(&driver->devs, &def))) goto cleanup; - def =3D NULL; objdef =3D virNodeDeviceObjGetDef(obj); =20 event =3D virNodeDeviceEventLifecycleNew(objdef->name, --=20 2.9.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat Apr 27 20:34:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1495742278631948.4780226209396; Thu, 25 May 2017 12:57:58 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 55188C04B95A; Thu, 25 May 2017 19:57:57 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 33FBD173B5; Thu, 25 May 2017 19:57:57 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 17FCE41F81; Thu, 25 May 2017 19:57:52 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v4PJvgBP016961 for ; Thu, 25 May 2017 15:57:42 -0400 Received: by smtp.corp.redhat.com (Postfix) id 2D60117F24; Thu, 25 May 2017 19:57:42 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-108.phx2.redhat.com [10.3.116.108]) by smtp.corp.redhat.com (Postfix) with ESMTP id DEFCC7FDFD for ; Thu, 25 May 2017 19:57:41 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 55188C04B95A Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 55188C04B95A From: John Ferlan To: libvir-list@redhat.com Date: Thu, 25 May 2017 15:57:11 -0400 Message-Id: <20170525195711.27087-15-jferlan@redhat.com> In-Reply-To: <20170525195711.27087-1-jferlan@redhat.com> References: <20170525195711.27087-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 14/14] nodedev: Introduce virNodeDeviceObjNew 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-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Thu, 25 May 2017 19:57:57 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Create an allocator for the virNodeDeviceObjPtr - include setting up the mutex, saving the virNodeDeviceDefPtr, and locking the return object. Signed-off-by: John Ferlan --- src/conf/virnodedeviceobj.c | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/conf/virnodedeviceobj.c b/src/conf/virnodedeviceobj.c index 1648b33..a84266b 100644 --- a/src/conf/virnodedeviceobj.c +++ b/src/conf/virnodedeviceobj.c @@ -33,6 +33,27 @@ VIR_LOG_INIT("conf.virnodedeviceobj"); =20 =20 +static virNodeDeviceObjPtr +virNodeDeviceObjNew(virNodeDeviceDefPtr *def) +{ + virNodeDeviceObjPtr obj; + + if (VIR_ALLOC(obj) < 0) + return NULL; + + if (virMutexInit(&obj->lock) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + "%s", _("cannot initialize mutex")); + VIR_FREE(obj); + return NULL; + } + virNodeDeviceObjLock(obj); + VIR_STEAL_PTR(obj->def, *def); + + return obj; +} + + virNodeDeviceDefPtr virNodeDeviceObjGetDef(virNodeDeviceObjPtr obj) { @@ -278,26 +299,16 @@ virNodeDeviceObjAssignDef(virNodeDeviceObjListPtr dev= s, return obj; } =20 - if (VIR_ALLOC(obj) < 0) + if (!(obj =3D virNodeDeviceObjNew(def))) return NULL; =20 - if (virMutexInit(&obj->lock) < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, - "%s", _("cannot initialize mutex")); - VIR_FREE(obj); - return NULL; - } - virNodeDeviceObjLock(obj); - if (VIR_APPEND_ELEMENT_COPY(devs->objs, devs->count, obj) < 0) { virNodeDeviceObjUnlock(obj); virNodeDeviceObjFree(obj); return NULL; } - VIR_STEAL_PTR(obj->def, *def); =20 return obj; - } =20 =20 --=20 2.9.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list