From nobody Sat May 4 08:00:43 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.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 1503580170973173.91917763261313; Thu, 24 Aug 2017 06:09:30 -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 C5D3B883BD; Thu, 24 Aug 2017 13:09: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 A31C57F386; Thu, 24 Aug 2017 13:09: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 476C71806107; Thu, 24 Aug 2017 13:09:28 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v7OD9Cv6027775 for ; Thu, 24 Aug 2017 09:09:12 -0400 Received: by smtp.corp.redhat.com (Postfix) id 1429F7B9C8; Thu, 24 Aug 2017 13:09:12 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-123-165.rdu2.redhat.com [10.10.123.165]) by smtp.corp.redhat.com (Postfix) with ESMTP id D55AF7B8D7 for ; Thu, 24 Aug 2017 13:09:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C5D3B883BD 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=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: John Ferlan To: libvir-list@redhat.com Date: Thu, 24 Aug 2017 09:08:54 -0400 Message-Id: <20170824130905.5199-2-jferlan@redhat.com> In-Reply-To: <20170824130905.5199-1-jferlan@redhat.com> References: <20170824130905.5199-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 01/12] storage: Create accessor API's for virStoragePoolObj 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.26]); Thu, 24 Aug 2017 13:09:29 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" In preparation for making a private object, create accessor API's for consumer storage functions to use: virStoragePoolObjGetDef virStoragePoolObjSetDef virStoragePoolObjGetNewDef virStoragePoolObjDefUseNewDef virStoragePoolObjGetConfigFile virStoragePoolObjSetConfigFile virStoragePoolObjGetAutostartLink virStoragePoolObjIsActive virStoragePoolObjSetActive virStoragePoolObjIsAutostart virStoragePoolObjSetAutostart virStoragePoolObjGetAsyncjobs virStoragePoolObjIncrAsyncjobs virStoragePoolObjDecrAsyncjobs Signed-off-by: John Ferlan --- src/conf/virstorageobj.c | 109 +++++++++++++++++++++++++++++++++++++++++++= ++++ src/conf/virstorageobj.h | 50 +++++++++++++++++++--- src/libvirt_private.syms | 14 ++++++ 3 files changed, 168 insertions(+), 5 deletions(-) diff --git a/src/conf/virstorageobj.c b/src/conf/virstorageobj.c index e83044b..ebda9fe 100644 --- a/src/conf/virstorageobj.c +++ b/src/conf/virstorageobj.c @@ -37,6 +37,115 @@ VIR_LOG_INIT("conf.virstorageobj"); =20 =20 +virStoragePoolDefPtr +virStoragePoolObjGetDef(virStoragePoolObjPtr obj) +{ + return obj->def; +} + + +void +virStoragePoolObjSetDef(virStoragePoolObjPtr obj, + virStoragePoolDefPtr def) +{ + virStoragePoolDefFree(obj->def); + obj->def =3D def; +} + + +virStoragePoolDefPtr +virStoragePoolObjGetNewDef(virStoragePoolObjPtr obj) +{ + return obj->newDef; +} + + +void +virStoragePoolObjDefUseNewDef(virStoragePoolObjPtr obj) +{ + virStoragePoolDefFree(obj->def); + obj->def =3D obj->newDef; + obj->newDef =3D NULL; +} + + +char * +virStoragePoolObjGetConfigFile(virStoragePoolObjPtr obj) +{ + return obj->configFile; +} + + +void +virStoragePoolObjSetConfigFile(virStoragePoolObjPtr obj, + char *configFile) +{ + VIR_FREE(obj->configFile); + obj->configFile =3D configFile; +} + + +char * +virStoragePoolObjGetAutostartLink(virStoragePoolObjPtr obj) +{ + return obj->autostartLink; +} + + +bool +virStoragePoolObjIsActive(virStoragePoolObjPtr obj) +{ + return obj->active; +} + + +void +virStoragePoolObjSetActive(virStoragePoolObjPtr obj, + bool active) +{ + obj->active =3D active; +} + + +bool +virStoragePoolObjIsAutostart(virStoragePoolObjPtr obj) +{ + if (!obj->configFile) + return 0; + + return obj->autostart =3D=3D 1; +} + + +void +virStoragePoolObjSetAutostart(virStoragePoolObjPtr obj, + int autostart) +{ + obj->autostart =3D autostart; +} + + +unsigned int +virStoragePoolObjGetAsyncjobs(virStoragePoolObjPtr obj) +{ + return obj->asyncjobs; +} + + +void +virStoragePoolObjIncrAsyncjobs(virStoragePoolObjPtr obj) +{ + obj->asyncjobs++; +} + + +void +virStoragePoolObjDecrAsyncjobs(virStoragePoolObjPtr obj) +{ + obj->asyncjobs--; +} + + void virStoragePoolObjFree(virStoragePoolObjPtr obj) { diff --git a/src/conf/virstorageobj.h b/src/conf/virstorageobj.h index ac51b5f..a5ed8f8 100644 --- a/src/conf/virstorageobj.h +++ b/src/conf/virstorageobj.h @@ -70,11 +70,51 @@ typedef bool (*virStoragePoolObjListFilter)(virConnectPtr conn, virStoragePoolDefPtr def); =20 -static inline int -virStoragePoolObjIsActive(virStoragePoolObjPtr obj) -{ - return obj->active; -} +virStoragePoolDefPtr +virStoragePoolObjGetDef(virStoragePoolObjPtr obj); + +void +virStoragePoolObjSetDef(virStoragePoolObjPtr obj, + virStoragePoolDefPtr def); + +virStoragePoolDefPtr +virStoragePoolObjGetNewDef(virStoragePoolObjPtr obj); + +void +virStoragePoolObjDefUseNewDef(virStoragePoolObjPtr obj); + +char * +virStoragePoolObjGetConfigFile(virStoragePoolObjPtr obj); + +void +virStoragePoolObjSetConfigFile(virStoragePoolObjPtr obj, + char *configFile); + +char * +virStoragePoolObjGetAutostartLink(virStoragePoolObjPtr obj); + +bool +virStoragePoolObjIsActive(virStoragePoolObjPtr obj); + +void +virStoragePoolObjSetActive(virStoragePoolObjPtr obj, + bool active); + +bool +virStoragePoolObjIsAutostart(virStoragePoolObjPtr obj); + +void +virStoragePoolObjSetAutostart(virStoragePoolObjPtr obj, + int autostart); + +unsigned int +virStoragePoolObjGetAsyncjobs(virStoragePoolObjPtr obj); + +void +virStoragePoolObjIncrAsyncjobs(virStoragePoolObjPtr obj); + +void +virStoragePoolObjDecrAsyncjobs(virStoragePoolObjPtr obj); =20 int virStoragePoolObjLoadAllConfigs(virStoragePoolObjListPtr pools, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 2149b11..8bb1cbc 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1051,10 +1051,20 @@ virSecretObjSetValueSize; # conf/virstorageobj.h virStoragePoolObjAssignDef; virStoragePoolObjClearVols; +virStoragePoolObjDecrAsyncjobs; +virStoragePoolObjDefUseNewDef; virStoragePoolObjDeleteDef; virStoragePoolObjFindByName; virStoragePoolObjFindByUUID; +virStoragePoolObjGetAsyncjobs; +virStoragePoolObjGetAutostartLink; +virStoragePoolObjGetConfigFile; +virStoragePoolObjGetDef; virStoragePoolObjGetNames; +virStoragePoolObjGetNewDef; +virStoragePoolObjIncrAsyncjobs; +virStoragePoolObjIsActive; +virStoragePoolObjIsAutostart; virStoragePoolObjIsDuplicate; virStoragePoolObjListExport; virStoragePoolObjListFree; @@ -1065,6 +1075,10 @@ virStoragePoolObjNumOfStoragePools; virStoragePoolObjNumOfVolumes; virStoragePoolObjRemove; virStoragePoolObjSaveDef; +virStoragePoolObjSetActive; +virStoragePoolObjSetAutostart; +virStoragePoolObjSetConfigFile; +virStoragePoolObjSetDef; virStoragePoolObjSourceFindDuplicate; virStoragePoolObjUnlock; virStoragePoolObjVolumeGetNames; --=20 2.9.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 08:00:43 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.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 1503580173939487.35255644081644; Thu, 24 Aug 2017 06:09:33 -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 E840B267F7; Thu, 24 Aug 2017 13:09:31 +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 C1C287F7FA; Thu, 24 Aug 2017 13:09:31 +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 842203FAD1; Thu, 24 Aug 2017 13:09:31 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v7OD9CDN027780 for ; Thu, 24 Aug 2017 09:09:12 -0400 Received: by smtp.corp.redhat.com (Postfix) id 73A957B8D7; Thu, 24 Aug 2017 13:09:12 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-123-165.rdu2.redhat.com [10.10.123.165]) by smtp.corp.redhat.com (Postfix) with ESMTP id 444537B9CB for ; Thu, 24 Aug 2017 13:09:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com E840B267F7 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=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: John Ferlan To: libvir-list@redhat.com Date: Thu, 24 Aug 2017 09:08:55 -0400 Message-Id: <20170824130905.5199-3-jferlan@redhat.com> In-Reply-To: <20170824130905.5199-1-jferlan@redhat.com> References: <20170824130905.5199-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 02/12] storage: Introduce virStoragePoolObjNew 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.30]); Thu, 24 Aug 2017 13:09:32 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Create/use a helper to perform object allocation. Adjust storagevolxml2argvtest.c in order to use the allocator and setting of the obj->def. Signed-off-by: John Ferlan --- src/conf/virstorageobj.c | 31 +++++++++++++++++++++---------- src/conf/virstorageobj.h | 3 +++ src/libvirt_private.syms | 1 + tests/storagevolxml2argvtest.c | 20 +++++++++++--------- 4 files changed, 36 insertions(+), 19 deletions(-) diff --git a/src/conf/virstorageobj.c b/src/conf/virstorageobj.c index ebda9fe..eb7664c 100644 --- a/src/conf/virstorageobj.c +++ b/src/conf/virstorageobj.c @@ -37,6 +37,26 @@ VIR_LOG_INIT("conf.virstorageobj"); =20 =20 +virStoragePoolObjPtr +virStoragePoolObjNew(void) +{ + virStoragePoolObjPtr 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; + } + virStoragePoolObjLock(obj); + obj->active =3D 0; + return obj; +} + + virStoragePoolDefPtr virStoragePoolObjGetDef(virStoragePoolObjPtr obj) { @@ -421,17 +441,8 @@ virStoragePoolObjAssignDef(virStoragePoolObjListPtr po= ols, return obj; } =20 - if (VIR_ALLOC(obj) < 0) - return NULL; - - if (virMutexInit(&obj->lock) < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("cannot initialize mutex")); - VIR_FREE(obj); + if (!(obj =3D virStoragePoolObjNew())) return NULL; - } - virStoragePoolObjLock(obj); - obj->active =3D 0; =20 if (VIR_APPEND_ELEMENT_COPY(pools->objs, pools->count, obj) < 0) { virStoragePoolObjUnlock(obj); diff --git a/src/conf/virstorageobj.h b/src/conf/virstorageobj.h index a5ed8f8..401c4d5 100644 --- a/src/conf/virstorageobj.h +++ b/src/conf/virstorageobj.h @@ -70,6 +70,9 @@ typedef bool (*virStoragePoolObjListFilter)(virConnectPtr conn, virStoragePoolDefPtr def); =20 +virStoragePoolObjPtr +virStoragePoolObjNew(void); + virStoragePoolDefPtr virStoragePoolObjGetDef(virStoragePoolObjPtr obj); =20 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 8bb1cbc..fc884fa 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1071,6 +1071,7 @@ virStoragePoolObjListFree; virStoragePoolObjLoadAllConfigs; virStoragePoolObjLoadAllState; virStoragePoolObjLock; +virStoragePoolObjNew; virStoragePoolObjNumOfStoragePools; virStoragePoolObjNumOfVolumes; virStoragePoolObjRemove; diff --git a/tests/storagevolxml2argvtest.c b/tests/storagevolxml2argvtest.c index 9e43204..2ee3dba 100644 --- a/tests/storagevolxml2argvtest.c +++ b/tests/storagevolxml2argvtest.c @@ -50,18 +50,19 @@ testCompareXMLToArgvFiles(bool shouldFail, virConnectPtr conn; =20 virStorageVolDefPtr vol =3D NULL, inputvol =3D NULL; - virStoragePoolDefPtr pool =3D NULL; + virStoragePoolDefPtr def =3D NULL; virStoragePoolDefPtr inputpool =3D NULL; - virStoragePoolObj poolobj =3D {.def =3D NULL }; - + virStoragePoolObjPtr obj =3D NULL; =20 if (!(conn =3D virGetConnect())) goto cleanup; =20 - if (!(pool =3D virStoragePoolDefParseFile(poolxml))) + if (!(def =3D virStoragePoolDefParseFile(poolxml))) goto cleanup; =20 - poolobj.def =3D pool; + if (!(obj =3D virStoragePoolObjNew())) + goto cleanup; + virStoragePoolObjSetDef(obj, def); =20 if (inputpoolxml) { if (!(inputpool =3D virStoragePoolDefParseFile(inputpoolxml))) @@ -71,17 +72,17 @@ testCompareXMLToArgvFiles(bool shouldFail, if (inputvolxml) parse_flags |=3D VIR_VOL_XML_PARSE_NO_CAPACITY; =20 - if (!(vol =3D virStorageVolDefParseFile(pool, volxml, parse_flags))) + if (!(vol =3D virStorageVolDefParseFile(def, volxml, parse_flags))) goto cleanup; =20 if (inputvolxml && !(inputvol =3D virStorageVolDefParseFile(inputpool, inputvolxml, 0= ))) goto cleanup; =20 - testSetVolumeType(vol, pool); + testSetVolumeType(vol, def); testSetVolumeType(inputvol, inputpool); =20 - cmd =3D virStorageBackendCreateQemuImgCmdFromVol(conn, &poolobj, vol, + cmd =3D virStorageBackendCreateQemuImgCmdFromVol(conn, obj, vol, inputvol, flags, create_tool, imgformat, NULL); @@ -102,12 +103,13 @@ testCompareXMLToArgvFiles(bool shouldFail, ret =3D 0; =20 cleanup: - virStoragePoolDefFree(pool); + virStoragePoolDefFree(def); virStoragePoolDefFree(inputpool); virStorageVolDefFree(vol); virStorageVolDefFree(inputvol); virCommandFree(cmd); VIR_FREE(actualCmdline); + virStoragePoolObjUnlock(obj); virObjectUnref(conn); return ret; } --=20 2.9.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 08:00:43 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.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 150358015849036.46613240355816; Thu, 24 Aug 2017 06:09:18 -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 5DE687EAA1; Thu, 24 Aug 2017 13:09:16 +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 0257B7B8DE; Thu, 24 Aug 2017 13:09:16 +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 348CC3FC73; Thu, 24 Aug 2017 13:09:15 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v7OD9Cc7027786 for ; Thu, 24 Aug 2017 09:09:12 -0400 Received: by smtp.corp.redhat.com (Postfix) id C38A27B8D4; Thu, 24 Aug 2017 13:09:12 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-123-165.rdu2.redhat.com [10.10.123.165]) by smtp.corp.redhat.com (Postfix) with ESMTP id 91F5D7B9C9 for ; Thu, 24 Aug 2017 13:09:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 5DE687EAA1 Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: John Ferlan To: libvir-list@redhat.com Date: Thu, 24 Aug 2017 09:08:56 -0400 Message-Id: <20170824130905.5199-4-jferlan@redhat.com> In-Reply-To: <20170824130905.5199-1-jferlan@redhat.com> References: <20170824130905.5199-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 03/12] storage: Fill in storage pool @active properly 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.28]); Thu, 24 Aug 2017 13:09:17 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" It's a bool not an int, so use true/false and not 1/0 Signed-off-by: John Ferlan --- src/conf/virstorageobj.c | 4 ++-- src/test/test_driver.c | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/conf/virstorageobj.c b/src/conf/virstorageobj.c index eb7664c..a9fa190 100644 --- a/src/conf/virstorageobj.c +++ b/src/conf/virstorageobj.c @@ -52,7 +52,7 @@ virStoragePoolObjNew(void) return NULL; } virStoragePoolObjLock(obj); - obj->active =3D 0; + obj->active =3D false; return obj; } =20 @@ -544,7 +544,7 @@ virStoragePoolObjLoadState(virStoragePoolObjListPtr poo= ls, * as active */ =20 - obj->active =3D 1; + obj->active =3D true; =20 cleanup: VIR_FREE(stateFile); diff --git a/src/test/test_driver.c b/src/test/test_driver.c index aa38f54..989c3a8 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -1130,7 +1130,7 @@ testParseStorage(testDriverPtr privconn, virStoragePoolObjUnlock(obj); goto error; } - obj->active =3D 1; + obj->active =3D true; =20 /* Find storage volumes */ if (testOpenVolumesForPool(file, ctxt, obj, i+1) < 0) { @@ -4322,7 +4322,7 @@ testStoragePoolCreate(virStoragePoolPtr pool, if (!(obj =3D testStoragePoolObjFindInactiveByName(privconn, pool->nam= e))) return -1; =20 - obj->active =3D 1; + obj->active =3D true; =20 event =3D virStoragePoolEventLifecycleNew(pool->name, pool->uuid, VIR_STORAGE_POOL_EVENT_STARTED, @@ -4470,7 +4470,7 @@ testStoragePoolCreateXML(virConnectPtr conn, * code will not Remove the pool */ VIR_FREE(obj->configFile); =20 - obj->active =3D 1; + obj->active =3D true; =20 event =3D virStoragePoolEventLifecycleNew(obj->def->name, obj->def->uu= id, VIR_STORAGE_POOL_EVENT_STARTED, @@ -4618,7 +4618,7 @@ testStoragePoolDestroy(virStoragePoolPtr pool) if (!(obj =3D testStoragePoolObjFindActiveByName(privconn, pool->name)= )) return -1; =20 - obj->active =3D 0; + obj->active =3D false; =20 if (obj->def->source.adapter.type =3D=3D VIR_STORAGE_ADAPTER_TYPE_FC_HOST) { --=20 2.9.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 08:00:43 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.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 15035801761706.651729247114986; Thu, 24 Aug 2017 06:09:36 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 6F9CC1F57B; Thu, 24 Aug 2017 13:09:34 +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 471F1729C8; Thu, 24 Aug 2017 13:09:34 +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 0C7A83FAD7; Thu, 24 Aug 2017 13:09:34 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v7OD9DWc027791 for ; Thu, 24 Aug 2017 09:09:13 -0400 Received: by smtp.corp.redhat.com (Postfix) id 3A5E77B9C8; Thu, 24 Aug 2017 13:09:13 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-123-165.rdu2.redhat.com [10.10.123.165]) by smtp.corp.redhat.com (Postfix) with ESMTP id 062FD7B8D4 for ; Thu, 24 Aug 2017 13:09:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 6F9CC1F57B 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=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: John Ferlan To: libvir-list@redhat.com Date: Thu, 24 Aug 2017 09:08:57 -0400 Message-Id: <20170824130905.5199-5-jferlan@redhat.com> In-Reply-To: <20170824130905.5199-1-jferlan@redhat.com> References: <20170824130905.5199-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 04/12] storage: Introduce storage volume add, delete, count 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.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 24 Aug 2017 13:09:35 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Create/use virStoragePoolObjAddVol in order to add volumes onto list. Create/use virStoragePoolObjRemoveVol in order to remove volumes from list. Create/use virStoragePoolObjGetVolumesCount to get count of volumes on list. For the storage driver, the logic alters when the volumes.obj list grows to after we've fetched the volobj. This is an optimization of sorts, but also doesn't "needlessly" grow the volumes.objs list and then just decr the count if the virGetStorageVol fails. Signed-off-by: John Ferlan --- src/conf/virstorageobj.c | 37 ++++++++++++++++++++++++ src/conf/virstorageobj.h | 11 +++++++ src/libvirt_private.syms | 3 ++ src/storage/storage_backend_disk.c | 5 ++-- src/storage/storage_backend_gluster.c | 3 +- src/storage/storage_backend_logical.c | 4 +-- src/storage/storage_backend_mpath.c | 3 +- src/storage/storage_backend_rbd.c | 4 +-- src/storage/storage_backend_sheepdog.c | 4 +-- src/storage/storage_backend_zfs.c | 6 ++-- src/storage/storage_driver.c | 53 +++++++++---------------------= ---- src/storage/storage_util.c | 8 ++--- src/test/test_driver.c | 18 ++++-------- 13 files changed, 85 insertions(+), 74 deletions(-) diff --git a/src/conf/virstorageobj.c b/src/conf/virstorageobj.c index a9fa190..912c27a 100644 --- a/src/conf/virstorageobj.c +++ b/src/conf/virstorageobj.c @@ -282,6 +282,43 @@ virStoragePoolObjClearVols(virStoragePoolObjPtr obj) } =20 =20 +int +virStoragePoolObjAddVol(virStoragePoolObjPtr obj, + virStorageVolDefPtr voldef) +{ + if (VIR_APPEND_ELEMENT(obj->volumes.objs, obj->volumes.count, voldef) = < 0) + return -1; + return 0; +} + + +void +virStoragePoolObjRemoveVol(virStoragePoolObjPtr obj, + virStorageVolDefPtr voldef) +{ + virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(obj); + size_t i; + + for (i =3D 0; i < obj->volumes.count; i++) { + if (obj->volumes.objs[i] =3D=3D voldef) { + VIR_INFO("Deleting volume '%s' from storage pool '%s'", + voldef->name, def->name); + virStorageVolDefFree(voldef); + + VIR_DELETE_ELEMENT(obj->volumes.objs, i, obj->volumes.count); + return; + } + } +} + + +size_t +virStoragePoolObjGetVolumesCount(virStoragePoolObjPtr obj) +{ + return obj->volumes.count; +} + + virStorageVolDefPtr virStorageVolDefFindByKey(virStoragePoolObjPtr obj, const char *key) diff --git a/src/conf/virstorageobj.h b/src/conf/virstorageobj.h index 401c4d5..d1a1247 100644 --- a/src/conf/virstorageobj.h +++ b/src/conf/virstorageobj.h @@ -136,6 +136,17 @@ virStoragePoolObjPtr virStoragePoolObjFindByName(virStoragePoolObjListPtr pools, const char *name); =20 +int +virStoragePoolObjAddVol(virStoragePoolObjPtr obj, + virStorageVolDefPtr voldef); + +void +virStoragePoolObjRemoveVol(virStoragePoolObjPtr obj, + virStorageVolDefPtr voldef); + +size_t +virStoragePoolObjGetVolumesCount(virStoragePoolObjPtr obj); + virStorageVolDefPtr virStorageVolDefFindByKey(virStoragePoolObjPtr obj, const char *key); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index fc884fa..a35299b 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1049,6 +1049,7 @@ virSecretObjSetValueSize; =20 =20 # conf/virstorageobj.h +virStoragePoolObjAddVol; virStoragePoolObjAssignDef; virStoragePoolObjClearVols; virStoragePoolObjDecrAsyncjobs; @@ -1062,6 +1063,7 @@ virStoragePoolObjGetConfigFile; virStoragePoolObjGetDef; virStoragePoolObjGetNames; virStoragePoolObjGetNewDef; +virStoragePoolObjGetVolumesCount; virStoragePoolObjIncrAsyncjobs; virStoragePoolObjIsActive; virStoragePoolObjIsAutostart; @@ -1075,6 +1077,7 @@ virStoragePoolObjNew; virStoragePoolObjNumOfStoragePools; virStoragePoolObjNumOfVolumes; virStoragePoolObjRemove; +virStoragePoolObjRemoveVol; virStoragePoolObjSaveDef; virStoragePoolObjSetActive; virStoragePoolObjSetAutostart; diff --git a/src/storage/storage_backend_disk.c b/src/storage/storage_backe= nd_disk.c index e8f67bb..0bf5567 100644 --- a/src/storage/storage_backend_disk.c +++ b/src/storage/storage_backend_disk.c @@ -65,8 +65,7 @@ virStorageBackendDiskMakeDataVol(virStoragePoolObjPtr poo= l, if (VIR_ALLOC(vol) < 0) return -1; if (VIR_STRDUP(vol->name, partname) < 0 || - VIR_APPEND_ELEMENT_COPY(pool->volumes.objs, - pool->volumes.count, vol) < 0) { + virStoragePoolObjAddVol(pool, vol) < 0) { virStorageVolDefFree(vol); return -1; } @@ -595,7 +594,7 @@ virStorageBackendDiskPartFormat(virStoragePoolObjPtr po= ol, break; } } - if (i =3D=3D pool->volumes.count) { + if (i =3D=3D virStoragePoolObjGetVolumesCount(pool)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("no extended partition found an= d no primary partition available")); return -1; diff --git a/src/storage/storage_backend_gluster.c b/src/storage/storage_ba= ckend_gluster.c index 92038c1..90f31b0 100644 --- a/src/storage/storage_backend_gluster.c +++ b/src/storage/storage_backend_gluster.c @@ -386,8 +386,7 @@ virStorageBackendGlusterRefreshPool(virConnectPtr conn = ATTRIBUTE_UNUSED, =20 if (okay < 0) goto cleanup; - if (vol && VIR_APPEND_ELEMENT(pool->volumes.objs, pool->volumes.co= unt, - vol) < 0) + if (vol && virStoragePoolObjAddVol(pool, vol) < 0) goto cleanup; } if (errno) { diff --git a/src/storage/storage_backend_logical.c b/src/storage/storage_ba= ckend_logical.c index 67f70e5..7bfe211 100644 --- a/src/storage/storage_backend_logical.c +++ b/src/storage/storage_backend_logical.c @@ -356,9 +356,9 @@ virStorageBackendLogicalMakeVol(char **const groups, if (virStorageBackendLogicalParseVolExtents(vol, groups) < 0) goto cleanup; =20 - if (is_new_vol && - VIR_APPEND_ELEMENT(pool->volumes.objs, pool->volumes.count, vol) <= 0) + if (is_new_vol && virStoragePoolObjAddVol(pool, vol) < 0) goto cleanup; + vol =3D NULL; =20 ret =3D 0; =20 diff --git a/src/storage/storage_backend_mpath.c b/src/storage/storage_back= end_mpath.c index 434a477..46818ef 100644 --- a/src/storage/storage_backend_mpath.c +++ b/src/storage/storage_backend_mpath.c @@ -71,8 +71,9 @@ virStorageBackendMpathNewVol(virStoragePoolObjPtr pool, if (VIR_STRDUP(vol->key, vol->target.path) < 0) goto cleanup; =20 - if (VIR_APPEND_ELEMENT_COPY(pool->volumes.objs, pool->volumes.count, v= ol) < 0) + if (virStoragePoolObjAddVol(pool, vol) < 0) goto cleanup; + pool->def->capacity +=3D vol->target.capacity; pool->def->allocation +=3D vol->target.allocation; ret =3D 0; diff --git a/src/storage/storage_backend_rbd.c b/src/storage/storage_backen= d_rbd.c index 7b8887b..6731677 100644 --- a/src/storage/storage_backend_rbd.c +++ b/src/storage/storage_backend_rbd.c @@ -506,7 +506,7 @@ virStorageBackendRBDRefreshPool(virConnectPtr conn, goto cleanup; } =20 - if (VIR_APPEND_ELEMENT(pool->volumes.objs, pool->volumes.count, vo= l) < 0) { + if (virStoragePoolObjAddVol(pool, vol) < 0) { virStorageVolDefFree(vol); virStoragePoolObjClearVols(pool); goto cleanup; @@ -514,7 +514,7 @@ virStorageBackendRBDRefreshPool(virConnectPtr conn, } =20 VIR_DEBUG("Found %zu images in RBD pool %s", - pool->volumes.count, pool->def->source.name); + virStoragePoolObjGetVolumesCount(pool), pool->def->source.na= me); =20 ret =3D 0; =20 diff --git a/src/storage/storage_backend_sheepdog.c b/src/storage/storage_b= ackend_sheepdog.c index b55d96a..e72dcda 100644 --- a/src/storage/storage_backend_sheepdog.c +++ b/src/storage/storage_backend_sheepdog.c @@ -130,11 +130,9 @@ virStorageBackendSheepdogAddVolume(virConnectPtr conn = ATTRIBUTE_UNUSED, if (virStorageBackendSheepdogRefreshVol(conn, pool, vol) < 0) goto error; =20 - if (VIR_EXPAND_N(pool->volumes.objs, pool->volumes.count, 1) < 0) + if (virStoragePoolObjAddVol(pool, vol) < 0) goto error; =20 - pool->volumes.objs[pool->volumes.count - 1] =3D vol; - return 0; =20 error: diff --git a/src/storage/storage_backend_zfs.c b/src/storage/storage_backen= d_zfs.c index c6dae71..c266281 100644 --- a/src/storage/storage_backend_zfs.c +++ b/src/storage/storage_backend_zfs.c @@ -161,11 +161,9 @@ virStorageBackendZFSParseVol(virStoragePoolObjPtr pool, if (volume->target.allocation < volume->target.capacity) volume->target.sparse =3D true; =20 - if (is_new_vol && - VIR_APPEND_ELEMENT(pool->volumes.objs, - pool->volumes.count, - volume) < 0) + if (is_new_vol && virStoragePoolObjAddVol(pool, volume) < 0) goto cleanup; + volume =3D NULL; =20 ret =3D 0; cleanup: diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index 8552120..b780f9a 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -1626,25 +1626,6 @@ storagePoolLookupByTargetPath(virConnectPtr conn, } =20 =20 -static void -storageVolRemoveFromPool(virStoragePoolObjPtr obj, - virStorageVolDefPtr voldef) -{ - size_t i; - - for (i =3D 0; i < obj->volumes.count; i++) { - if (obj->volumes.objs[i] =3D=3D voldef) { - VIR_INFO("Deleting volume '%s' from storage pool '%s'", - voldef->name, obj->def->name); - virStorageVolDefFree(voldef); - - VIR_DELETE_ELEMENT(obj->volumes.objs, i, obj->volumes.count); - break; - } - } -} - - static int storageVolDeleteInternal(virStorageVolPtr vol, virStorageBackendPtr backend, @@ -1676,7 +1657,7 @@ storageVolDeleteInternal(virStorageVolPtr vol, } } =20 - storageVolRemoveFromPool(obj, voldef); + virStoragePoolObjRemoveVol(obj, voldef); ret =3D 0; =20 cleanup: @@ -1815,24 +1796,19 @@ storageVolCreateXML(virStoragePoolPtr pool, goto cleanup; } =20 - if (VIR_REALLOC_N(obj->volumes.objs, - obj->volumes.count + 1) < 0) - goto cleanup; - /* Wipe any key the user may have suggested, as volume creation * will generate the canonical key. */ VIR_FREE(voldef->key); if (backend->createVol(pool->conn, obj, voldef) < 0) goto cleanup; =20 - obj->volumes.objs[obj->volumes.count++] =3D voldef; - newvol =3D virGetStorageVol(pool->conn, obj->def->name, voldef->name, - voldef->key, NULL, NULL); - if (!newvol) { - obj->volumes.count--; + if (!(newvol =3D virGetStorageVol(pool->conn, obj->def->name, voldef->= name, + voldef->key, NULL, NULL))) goto cleanup; - } =20 + /* NB: Upon success voldef "owned" by storage pool for deletion purpos= es */ + if (virStoragePoolObjAddVol(obj, voldef) < 0) + goto cleanup; =20 if (backend->buildVol) { int buildret; @@ -1867,7 +1843,7 @@ storageVolCreateXML(virStoragePoolPtr pool, =20 if (buildret < 0) { /* buildVol handles deleting volume on failure */ - storageVolRemoveFromPool(obj, voldef); + virStoragePoolObjRemoveVol(obj, voldef); voldef =3D NULL; goto cleanup; } @@ -2018,9 +1994,6 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool, backend->refreshVol(pool->conn, obj, voldefsrc) < 0) goto cleanup; =20 - if (VIR_REALLOC_N(obj->volumes.objs, obj->volumes.count + 1) < 0) - goto cleanup; - /* 'Define' the new volume so we get async progress reporting. * Wipe any key the user may have suggested, as volume creation * will generate the canonical key. */ @@ -2037,13 +2010,13 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool, =20 memcpy(shadowvol, voldef, sizeof(*voldef)); =20 - obj->volumes.objs[obj->volumes.count++] =3D voldef; - newvol =3D virGetStorageVol(pool->conn, obj->def->name, voldef->name, - voldef->key, NULL, NULL); - if (!newvol) { - obj->volumes.count--; + if (!(newvol =3D virGetStorageVol(pool->conn, obj->def->name, voldef->= name, + voldef->key, NULL, NULL))) + goto cleanup; + + /* NB: Upon success voldef "owned" by storage pool for deletion purpos= es */ + if (virStoragePoolObjAddVol(obj, voldef) < 0) goto cleanup; - } =20 /* Drop the pool lock during volume allocation */ obj->asyncjobs++; diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c index e1fe162..3efa181 100644 --- a/src/storage/storage_util.c +++ b/src/storage/storage_util.c @@ -3597,13 +3597,13 @@ virStorageBackendRefreshLocal(virConnectPtr conn AT= TRIBUTE_UNUSED, * An error message was raised, but we just continue. */ } =20 - if (VIR_APPEND_ELEMENT(pool->volumes.objs, pool->volumes.count, vo= l) < 0) + if (virStoragePoolObjAddVol(pool, vol) < 0) goto cleanup; + vol =3D NULL; } if (direrr < 0) goto cleanup; VIR_DIR_CLOSE(dir); - vol =3D NULL; =20 if (VIR_ALLOC(target)) goto cleanup; @@ -3785,10 +3785,10 @@ virStorageBackendSCSINewLun(virStoragePoolObjPtr po= ol, pool->def->capacity +=3D vol->target.capacity; pool->def->allocation +=3D vol->target.allocation; =20 - if (VIR_APPEND_ELEMENT(pool->volumes.objs, pool->volumes.count, vol) <= 0) + if (virStoragePoolObjAddVol(pool, vol) < 0) goto cleanup; - vol =3D NULL; + retval =3D 0; =20 cleanup: diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 989c3a8..67b115f 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -1079,7 +1079,8 @@ testOpenVolumesForPool(const char *file, =20 if (!def->key && VIR_STRDUP(def->key, def->target.path) < 0) goto error; - if (VIR_APPEND_ELEMENT_COPY(obj->volumes.objs, obj->volumes.count,= def) < 0) + + if (virStoragePoolObjAddVol(obj, def) < 0) goto error; =20 obj->def->allocation +=3D def->target.allocation; @@ -4995,8 +4996,7 @@ testStorageVolCreateXML(virStoragePoolPtr pool, goto cleanup; =20 if (VIR_STRDUP(privvol->key, privvol->target.path) < 0 || - VIR_APPEND_ELEMENT_COPY(obj->volumes.objs, - obj->volumes.count, privvol) < 0) + virStoragePoolObjAddVol(obj, privvol) < 0) goto cleanup; =20 obj->def->allocation +=3D privvol->target.allocation; @@ -5063,8 +5063,7 @@ testStorageVolCreateXMLFrom(virStoragePoolPtr pool, goto cleanup; =20 if (VIR_STRDUP(privvol->key, privvol->target.path) < 0 || - VIR_APPEND_ELEMENT_COPY(obj->volumes.objs, - obj->volumes.count, privvol) < 0) + virStoragePoolObjAddVol(obj, privvol) < 0) goto cleanup; =20 obj->def->allocation +=3D privvol->target.allocation; @@ -5089,7 +5088,6 @@ testStorageVolDelete(virStorageVolPtr vol, testDriverPtr privconn =3D vol->conn->privateData; virStoragePoolObjPtr obj; virStorageVolDefPtr privvol; - size_t i; int ret =3D -1; =20 virCheckFlags(0, -1); @@ -5103,14 +5101,8 @@ testStorageVolDelete(virStorageVolPtr vol, obj->def->allocation -=3D privvol->target.allocation; obj->def->available =3D (obj->def->capacity - obj->def->allocation); =20 - for (i =3D 0; i < obj->volumes.count; i++) { - if (obj->volumes.objs[i] =3D=3D privvol) { - virStorageVolDefFree(privvol); + virStoragePoolObjRemoveVol(obj, privvol); =20 - VIR_DELETE_ELEMENT(obj->volumes.objs, i, obj->volumes.count); - break; - } - } ret =3D 0; =20 cleanup: --=20 2.9.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 08:00:43 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.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 1503580192348845.3198670657584; Thu, 24 Aug 2017 06:09:52 -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 9386661483; Thu, 24 Aug 2017 13:09:50 +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 6841B7E67C; Thu, 24 Aug 2017 13:09:50 +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 93F7F1864DBD; Thu, 24 Aug 2017 13:09:36 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v7OD9Dlf027799 for ; Thu, 24 Aug 2017 09:09:13 -0400 Received: by smtp.corp.redhat.com (Postfix) id 8913A7B8D4; Thu, 24 Aug 2017 13:09:13 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-123-165.rdu2.redhat.com [10.10.123.165]) by smtp.corp.redhat.com (Postfix) with ESMTP id 591347B9CA for ; Thu, 24 Aug 2017 13:09:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 9386661483 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=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: John Ferlan To: libvir-list@redhat.com Date: Thu, 24 Aug 2017 09:08:58 -0400 Message-Id: <20170824130905.5199-6-jferlan@redhat.com> In-Reply-To: <20170824130905.5199-1-jferlan@redhat.com> References: <20170824130905.5199-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 05/12] storage: Introduce APIs to search/scan storage pool volumes list 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.39]); Thu, 24 Aug 2017 13:09:51 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Introduce virStoragePoolObjForEachVolume to scan each volume calling the passed callback function until all volumes have been processed in the storage pool volume list, unless the callback function returns an error. Introduce virStoragePoolObjSearchVolume to search each volume calling the passed callback function until it returns true indicating that the desired volume was found. Signed-off-by: John Ferlan --- src/conf/virstorageobj.c | 32 ++++++++++++++ src/conf/virstorageobj.h | 18 ++++++++ src/libvirt_private.syms | 2 + src/storage/storage_backend_disk.c | 90 +++++++++++++++++++++++-----------= ---- 4 files changed, 107 insertions(+), 35 deletions(-) diff --git a/src/conf/virstorageobj.c b/src/conf/virstorageobj.c index 912c27a..8ee40e2 100644 --- a/src/conf/virstorageobj.c +++ b/src/conf/virstorageobj.c @@ -319,6 +319,38 @@ virStoragePoolObjGetVolumesCount(virStoragePoolObjPtr = obj) } =20 =20 +int +virStoragePoolObjForEachVolume(virStoragePoolObjPtr obj, + virStorageVolObjListIterator iter, + const void *opaque) +{ + size_t i; + + for (i =3D 0; i < obj->volumes.count; i++) { + if (iter(obj->volumes.objs[i], opaque) < 0) + return -1; + } + + return 0; +} + + +virStorageVolDefPtr +virStoragePoolObjSearchVolume(virStoragePoolObjPtr obj, + virStorageVolObjListSearcher iter, + const void *opaque) +{ + size_t i; + + for (i =3D 0; i < obj->volumes.count; i++) { + if (iter(obj->volumes.objs[i], opaque)) + return obj->volumes.objs[i]; + } + + return NULL; +} + + virStorageVolDefPtr virStorageVolDefFindByKey(virStoragePoolObjPtr obj, const char *key) diff --git a/src/conf/virstorageobj.h b/src/conf/virstorageobj.h index d1a1247..c2f3f23 100644 --- a/src/conf/virstorageobj.h +++ b/src/conf/virstorageobj.h @@ -147,6 +147,24 @@ virStoragePoolObjRemoveVol(virStoragePoolObjPtr obj, size_t virStoragePoolObjGetVolumesCount(virStoragePoolObjPtr obj); =20 +typedef int +(*virStorageVolObjListIterator)(virStorageVolDefPtr voldef, + const void *opaque); + +int +virStoragePoolObjForEachVolume(virStoragePoolObjPtr obj, + virStorageVolObjListIterator iter, + const void *opaque); + +typedef bool +(*virStorageVolObjListSearcher)(virStorageVolDefPtr voldef, + const void *opaque); + +virStorageVolDefPtr +virStoragePoolObjSearchVolume(virStoragePoolObjPtr obj, + virStorageVolObjListSearcher iter, + const void *opaque); + virStorageVolDefPtr virStorageVolDefFindByKey(virStoragePoolObjPtr obj, const char *key); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index a35299b..67b531f 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1057,6 +1057,7 @@ virStoragePoolObjDefUseNewDef; virStoragePoolObjDeleteDef; virStoragePoolObjFindByName; virStoragePoolObjFindByUUID; +virStoragePoolObjForEachVolume; virStoragePoolObjGetAsyncjobs; virStoragePoolObjGetAutostartLink; virStoragePoolObjGetConfigFile; @@ -1079,6 +1080,7 @@ virStoragePoolObjNumOfVolumes; virStoragePoolObjRemove; virStoragePoolObjRemoveVol; virStoragePoolObjSaveDef; +virStoragePoolObjSearchVolume; virStoragePoolObjSetActive; virStoragePoolObjSetAutostart; virStoragePoolObjSetConfigFile; diff --git a/src/storage/storage_backend_disk.c b/src/storage/storage_backe= nd_disk.c index 0bf5567..dfe9938 100644 --- a/src/storage/storage_backend_disk.c +++ b/src/storage/storage_backend_disk.c @@ -43,6 +43,17 @@ VIR_LOG_INIT("storage.storage_backend_disk"); =20 #define SECTOR_SIZE 512 =20 +static bool +virStorageVolPartFindExtended(virStorageVolDefPtr def, + const void *opaque ATTRIBUTE_UNUSED) +{ + if (def->source.partType =3D=3D VIR_STORAGE_VOL_DISK_TYPE_EXTENDED) + return true; + + return false; +} + + static int virStorageBackendDiskMakeDataVol(virStoragePoolObjPtr pool, char **const groups, @@ -191,16 +202,13 @@ virStorageBackendDiskMakeDataVol(virStoragePoolObjPtr= pool, =20 /* Find the extended partition and increase the allocation value */ if (vol->source.partType =3D=3D VIR_STORAGE_VOL_DISK_TYPE_LOGICAL) { - size_t i; + virStorageVolDefPtr voldef; =20 - for (i =3D 0; i < pool->volumes.count; i++) { - if (pool->volumes.objs[i]->source.partType =3D=3D - VIR_STORAGE_VOL_DISK_TYPE_EXTENDED) { - pool->volumes.objs[i]->target.allocation +=3D - vol->target.allocation; - break; - } - } + voldef =3D virStoragePoolObjSearchVolume(pool, + virStorageVolPartFindExtend= ed, + NULL); + if (voldef) + voldef->target.allocation +=3D vol->target.allocation; } =20 if (STRNEQ(groups[2], "metadata")) @@ -521,6 +529,25 @@ virStorageBackendDiskBuildPool(virConnectPtr conn ATTR= IBUTE_UNUSED, return ret; } =20 + +struct virStorageVolNumData { + int count; +}; + +static int +virStorageVolNumOfPartTypes(virStorageVolDefPtr def, + const void *opaque) +{ + struct virStorageVolNumData *data =3D (struct virStorageVolNumData *)o= paque; + + if (def->source.partType =3D=3D VIR_STORAGE_VOL_DISK_TYPE_PRIMARY || + def->source.partType =3D=3D VIR_STORAGE_VOL_DISK_TYPE_EXTENDED) + data->count++; + + return 0; +} + + /** * Decides what kind of partition type that should be created. * Important when the partition table is of msdos type @@ -528,19 +555,16 @@ virStorageBackendDiskBuildPool(virConnectPtr conn ATT= RIBUTE_UNUSED, static int virStorageBackendDiskPartTypeToCreate(virStoragePoolObjPtr pool) { + struct virStorageVolNumData data =3D { .count =3D 0 }; + if (pool->def->source.format =3D=3D VIR_STORAGE_POOL_DISK_DOS) { /* count primary and extended partitions, can't be more than 3 to create a new primary partition */ - size_t i; - int count =3D 0; - for (i =3D 0; i < pool->volumes.count; i++) { - int partType =3D pool->volumes.objs[i]->source.partType; - if (partType =3D=3D VIR_STORAGE_VOL_DISK_TYPE_PRIMARY || - partType =3D=3D VIR_STORAGE_VOL_DISK_TYPE_EXTENDED) - count++; + if (virStoragePoolObjForEachVolume(pool, virStorageVolNumOfPartTyp= es, + &data) =3D=3D 0) { + if (data.count >=3D 4) + return VIR_STORAGE_VOL_DISK_TYPE_LOGICAL; } - if (count >=3D 4) - return VIR_STORAGE_VOL_DISK_TYPE_LOGICAL; } =20 /* for all other cases, all partitions are primary */ @@ -552,7 +576,6 @@ virStorageBackendDiskPartFormat(virStoragePoolObjPtr po= ol, virStorageVolDefPtr vol, char** partFormat) { - size_t i; if (pool->def->source.format =3D=3D VIR_STORAGE_POOL_DISK_DOS) { const char *partedFormat; partedFormat =3D virStoragePartedFsTypeToString(vol->target.format= ); @@ -563,13 +586,12 @@ virStorageBackendDiskPartFormat(virStoragePoolObjPtr = pool, } if (vol->target.format =3D=3D VIR_STORAGE_VOL_DISK_EXTENDED) { /* make sure we don't have an extended partition already */ - for (i =3D 0; i < pool->volumes.count; i++) { - if (pool->volumes.objs[i]->source.partType =3D=3D - VIR_STORAGE_VOL_DISK_TYPE_EXTENDED) { + if (virStoragePoolObjSearchVolume(pool, + virStorageVolPartFindExtende= d, + NULL)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("extended partition already exists")); return -1; - } } if (VIR_STRDUP(*partFormat, partedFormat) < 0) return -1; @@ -585,18 +607,16 @@ virStorageBackendDiskPartFormat(virStoragePoolObjPtr = pool, break; case VIR_STORAGE_VOL_DISK_TYPE_LOGICAL: /* make sure we have an extended partition */ - for (i =3D 0; i < pool->volumes.count; i++) { - if (pool->volumes.objs[i]->source.partType =3D=3D - VIR_STORAGE_VOL_DISK_TYPE_EXTENDED) { - if (virAsprintf(partFormat, "logical %s", - partedFormat) < 0) - return -1; - break; - } - } - if (i =3D=3D virStoragePoolObjGetVolumesCount(pool)) { - virReportError(VIR_ERR_INTERNAL_ERROR, - "%s", _("no extended partition found an= d no primary partition available")); + if (virStoragePoolObjSearchVolume(pool, + virStorageVolPartFindExt= ended, + NULL)) { + if (virAsprintf(partFormat, "logical %s", + partedFormat) < 0) + return -1; + } else { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("no extended partition found and no " + "primary partition available")); return -1; } break; --=20 2.9.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 08:00:43 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.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 1503580170834434.4296810483312; Thu, 24 Aug 2017 06:09:30 -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 2A6EC461E0; Thu, 24 Aug 2017 13:09:29 +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 0A6597B8D7; Thu, 24 Aug 2017 13:09: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 BF7AB180610A; Thu, 24 Aug 2017 13:09:28 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v7OD9DiW027809 for ; Thu, 24 Aug 2017 09:09:13 -0400 Received: by smtp.corp.redhat.com (Postfix) id EFEB67B8D4; Thu, 24 Aug 2017 13:09:13 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-123-165.rdu2.redhat.com [10.10.123.165]) by smtp.corp.redhat.com (Postfix) with ESMTP id B91897CFA4 for ; Thu, 24 Aug 2017 13:09:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 2A6EC461E0 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=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: John Ferlan To: libvir-list@redhat.com Date: Thu, 24 Aug 2017 09:08:59 -0400 Message-Id: <20170824130905.5199-7-jferlan@redhat.com> In-Reply-To: <20170824130905.5199-1-jferlan@redhat.com> References: <20170824130905.5199-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 06/12] storage: Use virStoragePoolObj{Get|Set}ConfigFile 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.29]); Thu, 24 Aug 2017 13:09:29 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Use the new accessor APIs for storage_driver and test_driver. Signed-off-by: John Ferlan --- src/storage/storage_backend_scsi.c | 4 +++- src/storage/storage_driver.c | 14 +++++++------- src/test/test_driver.c | 20 ++++++++++++-------- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/storage/storage_backend_scsi.c b/src/storage/storage_backe= nd_scsi.c index 575e6a6..02fd4b6 100644 --- a/src/storage/storage_backend_scsi.c +++ b/src/storage/storage_backend_scsi.c @@ -443,8 +443,10 @@ static int virStorageBackendSCSIStartPool(virConnectPtr conn, virStoragePoolObjPtr pool) { + const char *configFile =3D virStoragePoolObjGetConfigFile(pool); + if (pool->def->source.adapter.type =3D=3D VIR_STORAGE_ADAPTER_TYPE_FC_= HOST) - return createVport(conn, pool->def, pool->configFile, + return createVport(conn, pool->def, configFile, &pool->def->source.adapter.data.fchost); =20 return 0; diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index b780f9a..7b1396f 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -91,7 +91,7 @@ virStoragePoolUpdateInactive(virStoragePoolObjPtr *objptr) { virStoragePoolObjPtr obj =3D *objptr; =20 - if (obj->configFile =3D=3D NULL) { + if (!virStoragePoolObjGetConfigFile(obj)) { virStoragePoolObjRemove(&driver->pools, obj); *objptr =3D NULL; } else if (obj->newDef) { @@ -643,7 +643,7 @@ storagePoolIsPersistent(virStoragePoolPtr pool) if (virStoragePoolIsPersistentEnsureACL(pool->conn, obj->def) < 0) goto cleanup; =20 - ret =3D obj->configFile ? 1 : 0; + ret =3D virStoragePoolObjGetConfigFile(obj) ? 1 : 0; =20 cleanup: virStoragePoolObjUnlock(obj); @@ -849,7 +849,6 @@ storagePoolUndefine(virStoragePoolPtr pool) obj->autostartLink, virStrerror(errno, ebuf, sizeof(ebuf= ))); } =20 - VIR_FREE(obj->configFile); VIR_FREE(obj->autostartLink); =20 event =3D virStoragePoolEventLifecycleNew(obj->def->name, @@ -1250,7 +1249,7 @@ storagePoolGetAutostart(virStoragePoolPtr pool, if (virStoragePoolGetAutostartEnsureACL(pool->conn, obj->def) < 0) goto cleanup; =20 - if (!obj->configFile) { + if (!virStoragePoolObjGetConfigFile(obj)) { *autostart =3D 0; } else { *autostart =3D obj->autostart; @@ -1268,6 +1267,7 @@ storagePoolSetAutostart(virStoragePoolPtr pool, int autostart) { virStoragePoolObjPtr obj; + const char *configFile; int ret =3D -1; =20 storageDriverLock(); @@ -1277,7 +1277,7 @@ storagePoolSetAutostart(virStoragePoolPtr pool, if (virStoragePoolSetAutostartEnsureACL(pool->conn, obj->def) < 0) goto cleanup; =20 - if (!obj->configFile) { + if (!(configFile =3D virStoragePoolObjGetConfigFile(obj))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("pool has no config file")); goto cleanup; @@ -1294,10 +1294,10 @@ storagePoolSetAutostart(virStoragePoolPtr pool, goto cleanup; } =20 - if (symlink(obj->configFile, obj->autostartLink) < 0) { + if (symlink(configFile, obj->autostartLink) < 0) { virReportSystemError(errno, _("Failed to create symlink '%s' to '= %s'"), - obj->autostartLink, obj->configFile); + obj->autostartLink, configFile); goto cleanup; } } else { diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 67b115f..36e5ba1 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -4056,12 +4056,17 @@ testInterfaceDestroy(virInterfacePtr iface, static int testStoragePoolObjSetDefaults(virStoragePoolObjPtr obj) { + char *configFile; =20 obj->def->capacity =3D defaultPoolCap; obj->def->allocation =3D defaultPoolAlloc; obj->def->available =3D defaultPoolCap - defaultPoolAlloc; =20 - return VIR_STRDUP(obj->configFile, ""); + if (VIR_STRDUP(configFile, "") < 0) + return -1; + + virStoragePoolObjSetConfigFile(obj, configFile); + return 0; } =20 =20 @@ -4303,7 +4308,7 @@ testStoragePoolIsPersistent(virStoragePoolPtr pool) if (!(obj =3D testStoragePoolObjFindByUUID(privconn, pool->uuid))) return -1; =20 - ret =3D obj->configFile ? 1 : 0; + ret =3D virStoragePoolObjGetConfigFile(obj) ? 1 : 0; =20 virStoragePoolObjUnlock(obj); return ret; @@ -4469,7 +4474,7 @@ testStoragePoolCreateXML(virConnectPtr conn, /* *SetDefaults fills this in for the persistent pools, but this * would be a transient pool so remove it; otherwise, the Destroy * code will not Remove the pool */ - VIR_FREE(obj->configFile); + virStoragePoolObjSetConfigFile(obj, NULL); =20 obj->active =3D true; =20 @@ -4634,7 +4639,7 @@ testStoragePoolDestroy(virStoragePoolPtr pool) VIR_STORAGE_POOL_EVENT_STOPPED, 0); =20 - if (obj->configFile =3D=3D NULL) { + if (!(virStoragePoolObjGetConfigFile(obj))) { virStoragePoolObjRemove(&privconn->pools, obj); obj =3D NULL; } @@ -4740,11 +4745,10 @@ testStoragePoolGetAutostart(virStoragePoolPtr pool, if (!(obj =3D testStoragePoolObjFindByName(privconn, pool->name))) return -1; =20 - if (!obj->configFile) { + if (!virStoragePoolObjGetConfigFile(obj)) *autostart =3D 0; - } else { + else *autostart =3D obj->autostart; - } =20 virStoragePoolObjUnlock(obj); return 0; @@ -4762,7 +4766,7 @@ testStoragePoolSetAutostart(virStoragePoolPtr pool, if (!(obj =3D testStoragePoolObjFindByName(privconn, pool->name))) return -1; =20 - if (!obj->configFile) { + if (!virStoragePoolObjGetConfigFile(obj)) { virReportError(VIR_ERR_INVALID_ARG, "%s", _("pool has no config file")); goto cleanup; --=20 2.9.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 08:00:43 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.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 1503580158742693.9744721566414; Thu, 24 Aug 2017 06:09:18 -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 CA638C056797; Thu, 24 Aug 2017 13:09:16 +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 AC6C77B9C5; Thu, 24 Aug 2017 13:09:16 +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 0F8FF3FC72; Thu, 24 Aug 2017 13:09:15 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v7OD9Esk027814 for ; Thu, 24 Aug 2017 09:09:14 -0400 Received: by smtp.corp.redhat.com (Postfix) id 4C9647B8D4; Thu, 24 Aug 2017 13:09:14 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-123-165.rdu2.redhat.com [10.10.123.165]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1B15D7B9CA for ; Thu, 24 Aug 2017 13:09:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com CA638C056797 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=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: John Ferlan To: libvir-list@redhat.com Date: Thu, 24 Aug 2017 09:09:00 -0400 Message-Id: <20170824130905.5199-8-jferlan@redhat.com> In-Reply-To: <20170824130905.5199-1-jferlan@redhat.com> References: <20170824130905.5199-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 07/12] storage: Use virStoragePoolObjGetAutostartLink 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.32]); Thu, 24 Aug 2017 13:09:17 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Use the new accessor API for storage_driver. Signed-off-by: John Ferlan --- src/storage/storage_driver.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index 7b1396f..a7a77ba 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -814,6 +814,7 @@ static int storagePoolUndefine(virStoragePoolPtr pool) { virStoragePoolObjPtr obj; + const char *autostartLink; virObjectEventPtr event =3D NULL; int ret =3D -1; =20 @@ -838,18 +839,17 @@ storagePoolUndefine(virStoragePoolPtr pool) goto cleanup; } =20 + autostartLink =3D virStoragePoolObjGetAutostartLink(obj); if (virStoragePoolObjDeleteDef(obj) < 0) goto cleanup; =20 - if (unlink(obj->autostartLink) < 0 && - errno !=3D ENOENT && - errno !=3D ENOTDIR) { + if (autostartLink && unlink(autostartLink) < 0 && + errno !=3D ENOENT && errno !=3D ENOTDIR) { char ebuf[1024]; VIR_ERROR(_("Failed to delete autostart link '%s': %s"), - obj->autostartLink, virStrerror(errno, ebuf, sizeof(ebuf= ))); + autostartLink, virStrerror(errno, ebuf, sizeof(ebuf))); } =20 - VIR_FREE(obj->autostartLink); =20 event =3D virStoragePoolEventLifecycleNew(obj->def->name, obj->def->uuid, @@ -1268,6 +1268,7 @@ storagePoolSetAutostart(virStoragePoolPtr pool, { virStoragePoolObjPtr obj; const char *configFile; + const char *autostartLink; int ret =3D -1; =20 storageDriverLock(); @@ -1283,6 +1284,8 @@ storagePoolSetAutostart(virStoragePoolPtr pool, goto cleanup; } =20 + autostartLink =3D virStoragePoolObjGetAutostartLink(obj); + autostart =3D (autostart !=3D 0); =20 if (obj->autostart !=3D autostart) { @@ -1294,18 +1297,18 @@ storagePoolSetAutostart(virStoragePoolPtr pool, goto cleanup; } =20 - if (symlink(configFile, obj->autostartLink) < 0) { + if (symlink(configFile, autostartLink) < 0) { virReportSystemError(errno, _("Failed to create symlink '%s' to '= %s'"), - obj->autostartLink, configFile); + autostartLink, configFile); goto cleanup; } } else { - if (unlink(obj->autostartLink) < 0 && + if (autostartLink && unlink(autostartLink) < 0 && errno !=3D ENOENT && errno !=3D ENOTDIR) { virReportSystemError(errno, _("Failed to delete symlink '%s'"), - obj->autostartLink); + autostartLink); goto cleanup; } } --=20 2.9.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 08:00:43 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.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 1503580170761916.2660639522187; Thu, 24 Aug 2017 06:09:30 -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 16934C0587E5; Thu, 24 Aug 2017 13:09: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 E4AF77E22F; Thu, 24 Aug 2017 13:09: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 ABB103FACF; Thu, 24 Aug 2017 13:09:28 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v7OD9EXj027821 for ; Thu, 24 Aug 2017 09:09:14 -0400 Received: by smtp.corp.redhat.com (Postfix) id DC6BB7B9C8; Thu, 24 Aug 2017 13:09:14 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-123-165.rdu2.redhat.com [10.10.123.165]) by smtp.corp.redhat.com (Postfix) with ESMTP id AA3367B8D7 for ; Thu, 24 Aug 2017 13:09:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 16934C0587E5 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=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: John Ferlan To: libvir-list@redhat.com Date: Thu, 24 Aug 2017 09:09:01 -0400 Message-Id: <20170824130905.5199-9-jferlan@redhat.com> In-Reply-To: <20170824130905.5199-1-jferlan@redhat.com> References: <20170824130905.5199-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 08/12] storage: Use virStoragePoolObj{Is|Set}Active 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.32]); Thu, 24 Aug 2017 13:09:29 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Use the new accessor APIs for storage_driver, test_driver, and gluster backend. Signed-off-by: John Ferlan --- src/storage/storage_backend_gluster.c | 2 +- src/storage/storage_driver.c | 16 ++++++++-------- src/test/test_driver.c | 10 +++++----- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/storage/storage_backend_gluster.c b/src/storage/storage_ba= ckend_gluster.c index 90f31b0..05e7bff 100644 --- a/src/storage/storage_backend_gluster.c +++ b/src/storage/storage_backend_gluster.c @@ -544,7 +544,7 @@ virStorageBackendGlusterCheckPool(virStoragePoolObjPtr = pool, /* Return previous state remembered by the status XML. If the pool is = not * available we will fail to refresh it and end up in the same situati= on. * This will save one attempt to open the connection to the remote ser= ver */ - *active =3D pool->active; + *active =3D virStoragePoolObjIsActive(pool); return 0; } =20 diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index a7a77ba..89eaee9 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -145,9 +145,9 @@ storagePoolUpdateState(virStoragePoolObjPtr obj) } } =20 - obj->active =3D active; + virStoragePoolObjSetActive(obj, active); =20 - if (!obj->active) + if (!virStoragePoolObjIsActive(obj)) virStoragePoolUpdateInactive(&obj); =20 cleanup: @@ -226,7 +226,7 @@ storageDriverAutostart(void) _("Failed to autostart storage pool '%s': %= s"), obj->def->name, virGetLastErrorMessage()); } else { - obj->active =3D true; + virStoragePoolObjSetActive(obj, true); } VIR_FREE(stateFile); } @@ -735,7 +735,7 @@ storagePoolCreateXML(virConnectPtr conn, 0); =20 VIR_INFO("Creating storage pool '%s'", obj->def->name); - obj->active =3D true; + virStoragePoolObjSetActive(obj, true); =20 pool =3D virGetStoragePool(conn, obj->def->name, obj->def->uuid, NULL,= NULL); =20 @@ -940,7 +940,7 @@ storagePoolCreate(virStoragePoolPtr pool, VIR_STORAGE_POOL_EVENT_STARTED, 0); =20 - obj->active =3D true; + virStoragePoolObjSetActive(obj, true); ret =3D 0; =20 cleanup: @@ -1040,7 +1040,7 @@ storagePoolDestroy(virStoragePoolPtr pool) VIR_STORAGE_POOL_EVENT_STOPPED, 0); =20 - obj->active =3D false; + virStoragePoolObjSetActive(obj, false); =20 virStoragePoolUpdateInactive(&obj); =20 @@ -1156,7 +1156,7 @@ storagePoolRefresh(virStoragePoolPtr pool, obj->def->uuid, VIR_STORAGE_POOL_EVENT_STO= PPED, 0); - obj->active =3D false; + virStoragePoolObjSetActive(obj, false); =20 virStoragePoolUpdateInactive(&obj); =20 @@ -1194,7 +1194,7 @@ storagePoolGetInfo(virStoragePoolPtr pool, goto cleanup; =20 memset(info, 0, sizeof(virStoragePoolInfo)); - if (obj->active) + if (virStoragePoolObjIsActive(obj)) info->state =3D VIR_STORAGE_POOL_RUNNING; else info->state =3D VIR_STORAGE_POOL_INACTIVE; diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 36e5ba1..33ce9e4 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -1131,7 +1131,7 @@ testParseStorage(testDriverPtr privconn, virStoragePoolObjUnlock(obj); goto error; } - obj->active =3D true; + virStoragePoolObjSetActive(obj, true); =20 /* Find storage volumes */ if (testOpenVolumesForPool(file, ctxt, obj, i+1) < 0) { @@ -4328,7 +4328,7 @@ testStoragePoolCreate(virStoragePoolPtr pool, if (!(obj =3D testStoragePoolObjFindInactiveByName(privconn, pool->nam= e))) return -1; =20 - obj->active =3D true; + virStoragePoolObjSetActive(obj, true); =20 event =3D virStoragePoolEventLifecycleNew(pool->name, pool->uuid, VIR_STORAGE_POOL_EVENT_STARTED, @@ -4476,7 +4476,7 @@ testStoragePoolCreateXML(virConnectPtr conn, * code will not Remove the pool */ virStoragePoolObjSetConfigFile(obj, NULL); =20 - obj->active =3D true; + virStoragePoolObjSetActive(obj, true); =20 event =3D virStoragePoolEventLifecycleNew(obj->def->name, obj->def->uu= id, VIR_STORAGE_POOL_EVENT_STARTED, @@ -4624,7 +4624,7 @@ testStoragePoolDestroy(virStoragePoolPtr pool) if (!(obj =3D testStoragePoolObjFindActiveByName(privconn, pool->name)= )) return -1; =20 - obj->active =3D false; + virStoragePoolObjSetActive(obj, false); =20 if (obj->def->source.adapter.type =3D=3D VIR_STORAGE_ADAPTER_TYPE_FC_HOST) { @@ -4702,7 +4702,7 @@ testStoragePoolGetInfo(virStoragePoolPtr pool, return -1; =20 memset(info, 0, sizeof(virStoragePoolInfo)); - if (obj->active) + if (virStoragePoolObjIsActive(obj)) info->state =3D VIR_STORAGE_POOL_RUNNING; else info->state =3D VIR_STORAGE_POOL_INACTIVE; --=20 2.9.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 08:00:43 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.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 1503580174432962.180726371298; Thu, 24 Aug 2017 06:09:34 -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 E8F1461479; Thu, 24 Aug 2017 13:09:31 +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 C0CDA7F5DB; Thu, 24 Aug 2017 13:09:31 +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 785F9185735D; Thu, 24 Aug 2017 13:09:31 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v7OD9FPj027826 for ; Thu, 24 Aug 2017 09:09:15 -0400 Received: by smtp.corp.redhat.com (Postfix) id 3C3EE7B8D4; Thu, 24 Aug 2017 13:09:15 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-123-165.rdu2.redhat.com [10.10.123.165]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0C5807B9C9 for ; Thu, 24 Aug 2017 13:09:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com E8F1461479 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=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: John Ferlan To: libvir-list@redhat.com Date: Thu, 24 Aug 2017 09:09:02 -0400 Message-Id: <20170824130905.5199-10-jferlan@redhat.com> In-Reply-To: <20170824130905.5199-1-jferlan@redhat.com> References: <20170824130905.5199-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 09/12] storage: Use virStoragePoolObj{Is|Set}Autostart 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.39]); Thu, 24 Aug 2017 13:09:32 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Use the new accessor APIs for storage_driver and test_driver. Signed-off-by: John Ferlan --- src/storage/storage_driver.c | 20 +++++++++----------- src/test/test_driver.c | 4 ++-- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index 89eaee9..c9156e6 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -196,7 +196,7 @@ storageDriverAutostart(void) continue; } =20 - if (obj->autostart && + if (virStoragePoolObjIsAutostart(obj) && !virStoragePoolObjIsActive(obj)) { if (backend->startPool && backend->startPool(conn, obj) < 0) { @@ -1249,11 +1249,7 @@ storagePoolGetAutostart(virStoragePoolPtr pool, if (virStoragePoolGetAutostartEnsureACL(pool->conn, obj->def) < 0) goto cleanup; =20 - if (!virStoragePoolObjGetConfigFile(obj)) { - *autostart =3D 0; - } else { - *autostart =3D obj->autostart; - } + *autostart =3D virStoragePoolObjIsAutostart(obj) ? 1 : 0; =20 ret =3D 0; =20 @@ -1269,6 +1265,8 @@ storagePoolSetAutostart(virStoragePoolPtr pool, virStoragePoolObjPtr obj; const char *configFile; const char *autostartLink; + bool new_autostart; + bool cur_autostart; int ret =3D -1; =20 storageDriverLock(); @@ -1286,10 +1284,10 @@ storagePoolSetAutostart(virStoragePoolPtr pool, =20 autostartLink =3D virStoragePoolObjGetAutostartLink(obj); =20 - autostart =3D (autostart !=3D 0); - - if (obj->autostart !=3D autostart) { - if (autostart) { + new_autostart =3D (autostart !=3D 0); + cur_autostart =3D virStoragePoolObjIsAutostart(obj); + if (cur_autostart !=3D new_autostart) { + if (new_autostart) { if (virFileMakePath(driver->autostartDir) < 0) { virReportSystemError(errno, _("cannot create autostart directory = %s"), @@ -1312,7 +1310,7 @@ storagePoolSetAutostart(virStoragePoolPtr pool, goto cleanup; } } - obj->autostart =3D autostart; + virStoragePoolObjSetAutostart(obj, autostart); } =20 ret =3D 0; diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 33ce9e4..b793187 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -4748,7 +4748,7 @@ testStoragePoolGetAutostart(virStoragePoolPtr pool, if (!virStoragePoolObjGetConfigFile(obj)) *autostart =3D 0; else - *autostart =3D obj->autostart; + *autostart =3D virStoragePoolObjIsAutostart(obj) ? 1 : 0; =20 virStoragePoolObjUnlock(obj); return 0; @@ -4773,7 +4773,7 @@ testStoragePoolSetAutostart(virStoragePoolPtr pool, } =20 autostart =3D (autostart !=3D 0); - obj->autostart =3D autostart; + virStoragePoolObjSetAutostart(obj, autostart); ret =3D 0; =20 cleanup: --=20 2.9.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 08:00:43 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.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 1503580176646133.1155511886427; Thu, 24 Aug 2017 06:09:36 -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 C69D781E19; Thu, 24 Aug 2017 13:09:34 +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 8D7587E661; Thu, 24 Aug 2017 13:09:34 +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 4889F1864DBB; Thu, 24 Aug 2017 13:09:34 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v7OD9G25027837 for ; Thu, 24 Aug 2017 09:09:16 -0400 Received: by smtp.corp.redhat.com (Postfix) id F2FF57B606; Thu, 24 Aug 2017 13:09:15 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-123-165.rdu2.redhat.com [10.10.123.165]) by smtp.corp.redhat.com (Postfix) with ESMTP id C2BED7B8DE for ; Thu, 24 Aug 2017 13:09:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C69D781E19 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=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: John Ferlan To: libvir-list@redhat.com Date: Thu, 24 Aug 2017 09:09:03 -0400 Message-Id: <20170824130905.5199-11-jferlan@redhat.com> In-Reply-To: <20170824130905.5199-1-jferlan@redhat.com> References: <20170824130905.5199-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 10/12] storage: Internally represent @autostart to bool 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.25]); Thu, 24 Aug 2017 13:09:35 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Since it's been used that way anyway, let's just convert it to a bool and only make the external representation be an int. Signed-off-by: John Ferlan --- src/conf/virstorageobj.c | 4 ++-- src/conf/virstorageobj.h | 4 ++-- src/storage/storage_driver.c | 2 +- src/test/test_driver.c | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/conf/virstorageobj.c b/src/conf/virstorageobj.c index 8ee40e2..1364bdd 100644 --- a/src/conf/virstorageobj.c +++ b/src/conf/virstorageobj.c @@ -133,13 +133,13 @@ virStoragePoolObjIsAutostart(virStoragePoolObjPtr obj) if (!obj->configFile) return 0; =20 - return obj->autostart =3D=3D 1; + return obj->autostart; } =20 =20 void virStoragePoolObjSetAutostart(virStoragePoolObjPtr obj, - int autostart) + bool autostart) { obj->autostart =3D autostart; } diff --git a/src/conf/virstorageobj.h b/src/conf/virstorageobj.h index c2f3f23..b65b160 100644 --- a/src/conf/virstorageobj.h +++ b/src/conf/virstorageobj.h @@ -33,7 +33,7 @@ struct _virStoragePoolObj { char *configFile; char *autostartLink; bool active; - int autostart; + bool autostart; unsigned int asyncjobs; =20 virStoragePoolDefPtr def; @@ -108,7 +108,7 @@ virStoragePoolObjIsAutostart(virStoragePoolObjPtr obj); =20 void virStoragePoolObjSetAutostart(virStoragePoolObjPtr obj, - int autostart); + bool autostart); =20 unsigned int virStoragePoolObjGetAsyncjobs(virStoragePoolObjPtr obj); diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index c9156e6..6fae6f4 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -1310,7 +1310,7 @@ storagePoolSetAutostart(virStoragePoolPtr pool, goto cleanup; } } - virStoragePoolObjSetAutostart(obj, autostart); + virStoragePoolObjSetAutostart(obj, new_autostart); } =20 ret =3D 0; diff --git a/src/test/test_driver.c b/src/test/test_driver.c index b793187..69d61b5 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -4761,6 +4761,7 @@ testStoragePoolSetAutostart(virStoragePoolPtr pool, { testDriverPtr privconn =3D pool->conn->privateData; virStoragePoolObjPtr obj; + bool new_autostart =3D (autostart !=3D 0); int ret =3D -1; =20 if (!(obj =3D testStoragePoolObjFindByName(privconn, pool->name))) @@ -4772,8 +4773,7 @@ testStoragePoolSetAutostart(virStoragePoolPtr pool, goto cleanup; } =20 - autostart =3D (autostart !=3D 0); - virStoragePoolObjSetAutostart(obj, autostart); + virStoragePoolObjSetAutostart(obj, new_autostart); ret =3D 0; =20 cleanup: --=20 2.9.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 08:00:43 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.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 1503580210416511.8258350146574; Thu, 24 Aug 2017 06:10:10 -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 863D08B137; Thu, 24 Aug 2017 13:10:08 +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 64F3F7D51D; Thu, 24 Aug 2017 13:10: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 432E73FAEE; Thu, 24 Aug 2017 13:09:39 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v7OD9G82027844 for ; Thu, 24 Aug 2017 09:09:16 -0400 Received: by smtp.corp.redhat.com (Postfix) id 53C4E7B607; Thu, 24 Aug 2017 13:09:16 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-123-165.rdu2.redhat.com [10.10.123.165]) by smtp.corp.redhat.com (Postfix) with ESMTP id 21B737B606 for ; Thu, 24 Aug 2017 13:09:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 863D08B137 Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: John Ferlan To: libvir-list@redhat.com Date: Thu, 24 Aug 2017 09:09:04 -0400 Message-Id: <20170824130905.5199-12-jferlan@redhat.com> In-Reply-To: <20170824130905.5199-1-jferlan@redhat.com> References: <20170824130905.5199-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 11/12] storage: Use virStoragePoolObj{Get|Incr}Decr}Asyncjobs 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.28]); Thu, 24 Aug 2017 13:10:09 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Use the new accessor APIs for storage_driver. Signed-off-by: John Ferlan --- src/storage/storage_driver.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index 6fae6f4..83d9ce3 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -832,7 +832,7 @@ storagePoolUndefine(virStoragePoolPtr pool) goto cleanup; } =20 - if (obj->asyncjobs > 0) { + if (virStoragePoolObjGetAsyncjobs(obj) > 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("pool '%s' has asynchronous jobs running."), obj->def->name); @@ -1014,7 +1014,7 @@ storagePoolDestroy(virStoragePoolPtr pool) goto cleanup; } =20 - if (obj->asyncjobs > 0) { + if (virStoragePoolObjGetAsyncjobs(obj) > 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("pool '%s' has asynchronous jobs running."), obj->def->name); @@ -1082,7 +1082,7 @@ storagePoolDelete(virStoragePoolPtr pool, goto cleanup; } =20 - if (obj->asyncjobs > 0) { + if (virStoragePoolObjGetAsyncjobs(obj) > 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("pool '%s' has asynchronous jobs running."), obj->def->name); @@ -1140,7 +1140,7 @@ storagePoolRefresh(virStoragePoolPtr pool, goto cleanup; } =20 - if (obj->asyncjobs > 0) { + if (virStoragePoolObjGetAsyncjobs(obj) > 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("pool '%s' has asynchronous jobs running."), obj->def->name); @@ -1827,7 +1827,7 @@ storageVolCreateXML(virStoragePoolPtr pool, memcpy(buildvoldef, voldef, sizeof(*voldef)); =20 /* Drop the pool lock during volume allocation */ - obj->asyncjobs++; + virStoragePoolObjIncrAsyncjobs(obj); voldef->building =3D true; virStoragePoolObjUnlock(obj); =20 @@ -1840,7 +1840,7 @@ storageVolCreateXML(virStoragePoolPtr pool, storageDriverUnlock(); =20 voldef->building =3D false; - obj->asyncjobs--; + virStoragePoolObjDecrAsyncjobs(obj); =20 if (buildret < 0) { /* buildVol handles deleting volume on failure */ @@ -2020,13 +2020,13 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool, goto cleanup; =20 /* Drop the pool lock during volume allocation */ - obj->asyncjobs++; + virStoragePoolObjIncrAsyncjobs(obj); voldef->building =3D true; voldefsrc->in_use++; virStoragePoolObjUnlock(obj); =20 if (objsrc) { - objsrc->asyncjobs++; + virStoragePoolObjIncrAsyncjobs(objsrc); virStoragePoolObjUnlock(objsrc); } =20 @@ -2040,10 +2040,10 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool, =20 voldefsrc->in_use--; voldef->building =3D false; - obj->asyncjobs--; + virStoragePoolObjDecrAsyncjobs(obj); =20 if (objsrc) { - objsrc->asyncjobs--; + virStoragePoolObjDecrAsyncjobs(objsrc); virStoragePoolObjUnlock(objsrc); objsrc =3D NULL; } --=20 2.9.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat May 4 08:00:43 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.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 15035801750657.769176896396402; Thu, 24 Aug 2017 06:09:35 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0405DC04B333; Thu, 24 Aug 2017 13:09:33 +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 D5D42729CF; Thu, 24 Aug 2017 13:09:32 +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 9F6B43FAD1; Thu, 24 Aug 2017 13:09:32 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v7OD9Gm3027854 for ; Thu, 24 Aug 2017 09:09:16 -0400 Received: by smtp.corp.redhat.com (Postfix) id A5E917B606; Thu, 24 Aug 2017 13:09:16 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-123-165.rdu2.redhat.com [10.10.123.165]) by smtp.corp.redhat.com (Postfix) with ESMTP id 73EF77B8EB for ; Thu, 24 Aug 2017 13:09:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 0405DC04B333 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=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: John Ferlan To: libvir-list@redhat.com Date: Thu, 24 Aug 2017 09:09:05 -0400 Message-Id: <20170824130905.5199-13-jferlan@redhat.com> In-Reply-To: <20170824130905.5199-1-jferlan@redhat.com> References: <20170824130905.5199-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 12/12] storage: Use virStoragePoolObjDefUseNewDef 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.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Thu, 24 Aug 2017 13:09:33 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Use the new accessor API for storage_driver. Signed-off-by: John Ferlan --- src/storage/storage_driver.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index 83d9ce3..90d4bf3 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -94,10 +94,8 @@ virStoragePoolUpdateInactive(virStoragePoolObjPtr *objpt= r) if (!virStoragePoolObjGetConfigFile(obj)) { virStoragePoolObjRemove(&driver->pools, obj); *objptr =3D NULL; - } else if (obj->newDef) { - virStoragePoolDefFree(obj->def); - obj->def =3D obj->newDef; - obj->newDef =3D NULL; + } else if (virStoragePoolObjGetNewDef(obj)) { + virStoragePoolObjDefUseNewDef(obj); } } =20 --=20 2.9.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list