From nobody Wed May 14 15:50:31 2025 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.zohomail.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 1522675030455749.7443007858702; Mon, 2 Apr 2018 06:17:10 -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 73CB2C206AD7; Mon, 2 Apr 2018 13:17:08 +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 473F85FCA0; Mon, 2 Apr 2018 13:17:08 +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 0076E1800BB5; Mon, 2 Apr 2018 13:17:07 +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 w32DGndC010948 for ; Mon, 2 Apr 2018 09:16:49 -0400 Received: by smtp.corp.redhat.com (Postfix) id 9A306608F0; Mon, 2 Apr 2018 13:16:49 +0000 (UTC) Received: from unknown54ee7586bd10.attlocal.net.com (ovpn-116-52.phx2.redhat.com [10.3.116.52]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5D9645F7EF for ; Mon, 2 Apr 2018 13:16:49 +0000 (UTC) From: John Ferlan To: libvir-list@redhat.com Date: Mon, 2 Apr 2018 09:16:40 -0400 Message-Id: <20180402131640.15071-5-jferlan@redhat.com> In-Reply-To: <20180402131640.15071-1-jferlan@redhat.com> References: <20180402131640.15071-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 4/4] vmware: Use virDomainObjListFindBy{UUID|ID}Ref 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.31]); Mon, 02 Apr 2018 13:17:09 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" For vmwareDomObjFromDomainLocked and vmwareDomainLookupByID let's return a locked and referenced @vm object so that callers can then use the common and more consistent virDomainObjEndAPI in order to handle cleanup rather than needing to know that the returned object is locked and calling virObjectUnlock. The LookupByName already returns the ref counted and locked object, so this will make things more consistent. For vmwareDomainUndefineFlags and vmwareDomainShutdownFlags since virDomainObjListRemove will return an unlocked object, we need to relock before making the EndAPI call. Signed-off-by: John Ferlan Reviewed-by: Pavel Hrdina --- src/vmware/vmware_driver.c | 53 +++++++++++++++++-------------------------= ---- 1 file changed, 19 insertions(+), 34 deletions(-) diff --git a/src/vmware/vmware_driver.c b/src/vmware/vmware_driver.c index d17fdfe3be..643c85d4f8 100644 --- a/src/vmware/vmware_driver.c +++ b/src/vmware/vmware_driver.c @@ -67,7 +67,7 @@ vmwareDomObjFromDomainLocked(struct vmware_driver *driver, virDomainObjPtr vm; char uuidstr[VIR_UUID_STRING_BUFLEN]; =20 - if (!(vm =3D virDomainObjListFindByUUID(driver->domains, uuid))) { + if (!(vm =3D virDomainObjListFindByUUIDRef(driver->domains, uuid))) { virUUIDFormat(uuid, uuidstr); =20 virReportError(VIR_ERR_NO_DOMAIN, @@ -510,13 +510,12 @@ vmwareDomainShutdownFlags(virDomainPtr dom, =20 if (!vm->persistent) { virDomainObjListRemove(driver->domains, vm); - vm =3D NULL; + virObjectLock(vm); } =20 ret =3D 0; cleanup: - if (vm) - virObjectUnlock(vm); + virDomainObjEndAPI(&vm); vmwareDriverUnlock(driver); return ret; } @@ -577,8 +576,7 @@ vmwareDomainSuspend(virDomainPtr dom) ret =3D 0; =20 cleanup: - if (vm) - virObjectUnlock(vm); + virDomainObjEndAPI(&vm); return ret; } =20 @@ -619,8 +617,7 @@ vmwareDomainResume(virDomainPtr dom) ret =3D 0; =20 cleanup: - if (vm) - virObjectUnlock(vm); + virDomainObjEndAPI(&vm); return ret; } =20 @@ -660,8 +657,7 @@ vmwareDomainReboot(virDomainPtr dom, unsigned int flags) ret =3D 0; =20 cleanup: - if (vm) - virObjectUnlock(vm); + virDomainObjEndAPI(&vm); return ret; } =20 @@ -772,8 +768,7 @@ vmwareDomainCreateWithFlags(virDomainPtr dom, ret =3D vmwareStartVM(driver, vm); =20 cleanup: - if (vm) - virObjectUnlock(vm); + virDomainObjEndAPI(&vm); vmwareDriverUnlock(driver); return ret; } @@ -811,14 +806,13 @@ vmwareDomainUndefineFlags(virDomainPtr dom, vm->persistent =3D 0; } else { virDomainObjListRemove(driver->domains, vm); - vm =3D NULL; + virObjectLock(vm); } =20 ret =3D 0; =20 cleanup: - if (vm) - virObjectUnlock(vm); + virDomainObjEndAPI(&vm); vmwareDriverUnlock(driver); return ret; } @@ -837,7 +831,7 @@ vmwareDomainLookupByID(virConnectPtr conn, int id) virDomainPtr dom =3D NULL; =20 vmwareDriverLock(driver); - vm =3D virDomainObjListFindByID(driver->domains, id); + vm =3D virDomainObjListFindByIDRef(driver->domains, id); vmwareDriverUnlock(driver); =20 if (!vm) { @@ -849,8 +843,7 @@ vmwareDomainLookupByID(virConnectPtr conn, int id) dom =3D virGetDomain(conn, vm->def->name, vm->def->uuid, vm->def->id); =20 cleanup: - if (vm) - virObjectUnlock(vm); + virDomainObjEndAPI(&vm); return dom; } =20 @@ -866,8 +859,7 @@ vmwareDomainGetOSType(virDomainPtr dom) =20 ignore_value(VIR_STRDUP(ret, virDomainOSTypeToString(vm->def->os.type)= )); =20 - if (vm) - virObjectUnlock(vm); + virDomainObjEndAPI(&vm); return ret; } =20 @@ -884,8 +876,7 @@ vmwareDomainLookupByUUID(virConnectPtr conn, const unsi= gned char *uuid) =20 dom =3D virGetDomain(conn, vm->def->name, vm->def->uuid, vm->def->id); =20 - if (vm) - virObjectUnlock(vm); + virDomainObjEndAPI(&vm); return dom; } =20 @@ -925,8 +916,7 @@ vmwareDomainIsActive(virDomainPtr dom) =20 ret =3D virDomainObjIsActive(obj); =20 - if (obj) - virObjectUnlock(obj); + virDomainObjEndAPI(&obj); return ret; } =20 @@ -943,8 +933,7 @@ vmwareDomainIsPersistent(virDomainPtr dom) =20 ret =3D obj->persistent; =20 - if (obj) - virObjectUnlock(obj); + virDomainObjEndAPI(&obj); return ret; } =20 @@ -964,8 +953,7 @@ vmwareDomainGetXMLDesc(virDomainPtr dom, unsigned int f= lags) ret =3D virDomainDefFormat(vm->def, driver->caps, virDomainDefFormatConvertXMLFlags(flags)); =20 - if (vm) - virObjectUnlock(vm); + virDomainObjEndAPI(&vm); return ret; } =20 @@ -1097,8 +1085,7 @@ vmwareDomainGetInfo(virDomainPtr dom, virDomainInfoPt= r info) ret =3D 0; =20 cleanup: - if (vm) - virObjectUnlock(vm); + virDomainObjEndAPI(&vm); return ret; } =20 @@ -1124,8 +1111,7 @@ vmwareDomainGetState(virDomainPtr dom, ret =3D 0; =20 cleanup: - if (vm) - virObjectUnlock(vm); + virDomainObjEndAPI(&vm); return ret; } =20 @@ -1167,8 +1153,7 @@ vmwareDomainHasManagedSaveImage(virDomainPtr dom, uns= igned int flags) =20 ret =3D 0; =20 - if (obj) - virObjectUnlock(obj); + virDomainObjEndAPI(&obj); return ret; } =20 --=20 2.13.6 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list