From nobody Sun Feb 8 23:25:15 2026 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 1505828233519464.26761209012886; Tue, 19 Sep 2017 06:37:13 -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 13F38267C8; Tue, 19 Sep 2017 13:37:12 +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 DAE6660637; Tue, 19 Sep 2017 13:37:11 +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 75A29410B2; Tue, 19 Sep 2017 13:37:11 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v8JDPqEs012593 for ; Tue, 19 Sep 2017 09:25:52 -0400 Received: by smtp.corp.redhat.com (Postfix) id 0900961346; Tue, 19 Sep 2017 13:25:51 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-150.phx2.redhat.com [10.3.116.150]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5252261361 for ; Tue, 19 Sep 2017 13:25:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 13F38267C8 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: Tue, 19 Sep 2017 09:25:01 -0400 Message-Id: <20170919132518.28151-3-jferlan@redhat.com> In-Reply-To: <20170919132518.28151-1-jferlan@redhat.com> References: <20170919132518.28151-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 02/19] storage: Use virStoragePoolObjGetDef accessor for driver X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Tue, 19 Sep 2017 13:37:12 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" In preparation for privatizing the object, use the accessor to fetch the obj->def instead of the direct reference. Signed-off-by: John Ferlan --- src/storage/storage_driver.c | 411 ++++++++++++++++++++++++---------------= ---- 1 file changed, 234 insertions(+), 177 deletions(-) diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index 7db1f5463..22f7333e0 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -103,17 +103,17 @@ virStoragePoolUpdateInactive(virStoragePoolObjPtr *ob= jptr) static void storagePoolUpdateState(virStoragePoolObjPtr obj) { + virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(obj); bool active =3D false; virStorageBackendPtr backend; char *stateFile; =20 - if (!(stateFile =3D virFileBuildPath(driver->stateDir, - obj->def->name, ".xml"))) + if (!(stateFile =3D virFileBuildPath(driver->stateDir, def->name, ".xm= l"))) goto cleanup; =20 - if ((backend =3D virStorageBackendForType(obj->def->type)) =3D=3D NULL= ) { + if ((backend =3D virStorageBackendForType(def->type)) =3D=3D NULL) { virReportError(VIR_ERR_INTERNAL_ERROR, - _("Missing backend %d"), obj->def->type); + _("Missing backend %d"), def->type); goto cleanup; } =20 @@ -123,7 +123,7 @@ storagePoolUpdateState(virStoragePoolObjPtr obj) backend->checkPool(obj, &active) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to initialize storage pool '%s': %s"), - obj->def->name, virGetLastErrorMessage()); + def->name, virGetLastErrorMessage()); active =3D false; } =20 @@ -138,7 +138,7 @@ storagePoolUpdateState(virStoragePoolObjPtr obj) backend->stopPool(NULL, obj); virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to restart storage pool '%s': %s"), - obj->def->name, virGetLastErrorMessage()); + def->name, virGetLastErrorMessage()); active =3D false; } } @@ -185,11 +185,12 @@ storageDriverAutostart(void) =20 for (i =3D 0; i < driver->pools.count; i++) { virStoragePoolObjPtr obj =3D driver->pools.objs[i]; + virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(obj); virStorageBackendPtr backend; bool started =3D false; =20 virStoragePoolObjLock(obj); - if ((backend =3D virStorageBackendForType(obj->def->type)) =3D=3D = NULL) { + if ((backend =3D virStorageBackendForType(def->type)) =3D=3D NULL)= { virStoragePoolObjUnlock(obj); continue; } @@ -200,7 +201,7 @@ storageDriverAutostart(void) backend->startPool(conn, obj) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to autostart storage pool '%s': %= s"), - obj->def->name, virGetLastErrorMessage()); + def->name, virGetLastErrorMessage()); virStoragePoolObjUnlock(obj); continue; } @@ -211,10 +212,9 @@ storageDriverAutostart(void) char *stateFile; =20 virStoragePoolObjClearVols(obj); - stateFile =3D virFileBuildPath(driver->stateDir, - obj->def->name, ".xml"); + stateFile =3D virFileBuildPath(driver->stateDir, def->name, ".= xml"); if (!stateFile || - virStoragePoolSaveState(stateFile, obj->def) < 0 || + virStoragePoolSaveState(stateFile, def) < 0 || backend->refreshPool(conn, obj) < 0) { if (stateFile) unlink(stateFile); @@ -222,7 +222,7 @@ storageDriverAutostart(void) backend->stopPool(conn, obj); virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to autostart storage pool '%s': %= s"), - obj->def->name, virGetLastErrorMessage()); + def->name, virGetLastErrorMessage()); } else { virStoragePoolObjSetActive(obj, true); } @@ -441,6 +441,7 @@ storagePoolLookupByUUID(virConnectPtr conn, const unsigned char *uuid) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; virStoragePoolPtr pool =3D NULL; =20 storageDriverLock(); @@ -448,11 +449,12 @@ storagePoolLookupByUUID(virConnectPtr conn, storageDriverUnlock(); if (!obj) return NULL; + def =3D virStoragePoolObjGetDef(obj); =20 - if (virStoragePoolLookupByUUIDEnsureACL(conn, obj->def) < 0) + if (virStoragePoolLookupByUUIDEnsureACL(conn, def) < 0) goto cleanup; =20 - pool =3D virGetStoragePool(conn, obj->def->name, obj->def->uuid, NULL,= NULL); + pool =3D virGetStoragePool(conn, def->name, def->uuid, NULL, NULL); =20 cleanup: virStoragePoolObjUnlock(obj); @@ -464,15 +466,17 @@ storagePoolLookupByName(virConnectPtr conn, const char *name) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; virStoragePoolPtr pool =3D NULL; =20 if (!(obj =3D storagePoolObjFindByName(name))) return NULL; + def =3D virStoragePoolObjGetDef(obj); =20 - if (virStoragePoolLookupByNameEnsureACL(conn, obj->def) < 0) + if (virStoragePoolLookupByNameEnsureACL(conn, def) < 0) goto cleanup; =20 - pool =3D virGetStoragePool(conn, obj->def->name, obj->def->uuid, NULL,= NULL); + pool =3D virGetStoragePool(conn, def->name, def->uuid, NULL, NULL); =20 cleanup: virStoragePoolObjUnlock(obj); @@ -483,16 +487,17 @@ static virStoragePoolPtr storagePoolLookupByVolume(virStorageVolPtr vol) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; virStoragePoolPtr pool =3D NULL; =20 if (!(obj =3D storagePoolObjFindByName(vol->pool))) return NULL; + def =3D virStoragePoolObjGetDef(obj); =20 - if (virStoragePoolLookupByVolumeEnsureACL(vol->conn, obj->def) < 0) + if (virStoragePoolLookupByVolumeEnsureACL(vol->conn, def) < 0) goto cleanup; =20 - pool =3D virGetStoragePool(vol->conn, obj->def->name, obj->def->uuid, - NULL, NULL); + pool =3D virGetStoragePool(vol->conn, def->name, def->uuid, NULL, NULL= ); =20 cleanup: virStoragePoolObjUnlock(obj); @@ -613,12 +618,14 @@ static int storagePoolIsActive(virStoragePoolPtr pool) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; int ret =3D -1; =20 if (!(obj =3D virStoragePoolObjFromStoragePool(pool))) return -1; + def =3D virStoragePoolObjGetDef(obj); =20 - if (virStoragePoolIsActiveEnsureACL(pool->conn, obj->def) < 0) + if (virStoragePoolIsActiveEnsureACL(pool->conn, def) < 0) goto cleanup; =20 ret =3D virStoragePoolObjIsActive(obj); @@ -633,12 +640,14 @@ static int storagePoolIsPersistent(virStoragePoolPtr pool) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; int ret =3D -1; =20 if (!(obj =3D virStoragePoolObjFromStoragePool(pool))) return -1; + def =3D virStoragePoolObjGetDef(obj); =20 - if (virStoragePoolIsPersistentEnsureACL(pool->conn, obj->def) < 0) + if (virStoragePoolIsPersistentEnsureACL(pool->conn, def) < 0) goto cleanup; =20 ret =3D virStoragePoolObjGetConfigFile(obj) ? 1 : 0; @@ -654,8 +663,9 @@ storagePoolCreateXML(virConnectPtr conn, const char *xml, unsigned int flags) { - virStoragePoolDefPtr def; + virStoragePoolDefPtr newDef; virStoragePoolObjPtr obj =3D NULL; + virStoragePoolDefPtr def; virStoragePoolPtr pool =3D NULL; virStorageBackendPtr backend; virObjectEventPtr event =3D NULL; @@ -670,24 +680,25 @@ storagePoolCreateXML(virConnectPtr conn, VIR_STORAGE_POOL_BUILD_NO_OVERWRITE, NULL); =20 storageDriverLock(); - if (!(def =3D virStoragePoolDefParseString(xml))) + if (!(newDef =3D virStoragePoolDefParseString(xml))) goto cleanup; =20 - if (virStoragePoolCreateXMLEnsureACL(conn, def) < 0) + if (virStoragePoolCreateXMLEnsureACL(conn, newDef) < 0) goto cleanup; =20 - if (virStoragePoolObjIsDuplicate(&driver->pools, def, 1) < 0) + if (virStoragePoolObjIsDuplicate(&driver->pools, newDef, 1) < 0) goto cleanup; =20 - if (virStoragePoolObjSourceFindDuplicate(conn, &driver->pools, def) < = 0) + if (virStoragePoolObjSourceFindDuplicate(conn, &driver->pools, newDef)= < 0) goto cleanup; =20 - if ((backend =3D virStorageBackendForType(def->type)) =3D=3D NULL) + if ((backend =3D virStorageBackendForType(newDef->type)) =3D=3D NULL) goto cleanup; =20 - if (!(obj =3D virStoragePoolObjAssignDef(&driver->pools, def))) + if (!(obj =3D virStoragePoolObjAssignDef(&driver->pools, newDef))) goto cleanup; - def =3D NULL; + newDef =3D NULL; + def =3D virStoragePoolObjGetDef(obj); =20 if (backend->buildPool) { if (flags & VIR_STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE) @@ -712,11 +723,10 @@ storagePoolCreateXML(virConnectPtr conn, goto cleanup; } =20 - stateFile =3D virFileBuildPath(driver->stateDir, - obj->def->name, ".xml"); + stateFile =3D virFileBuildPath(driver->stateDir, def->name, ".xml"); =20 virStoragePoolObjClearVols(obj); - if (!stateFile || virStoragePoolSaveState(stateFile, obj->def) < 0 || + if (!stateFile || virStoragePoolSaveState(stateFile, def) < 0 || backend->refreshPool(conn, obj) < 0) { if (stateFile) unlink(stateFile); @@ -727,19 +737,19 @@ storagePoolCreateXML(virConnectPtr conn, goto cleanup; } =20 - event =3D virStoragePoolEventLifecycleNew(obj->def->name, - obj->def->uuid, + event =3D virStoragePoolEventLifecycleNew(def->name, + def->uuid, VIR_STORAGE_POOL_EVENT_STARTED, 0); =20 - VIR_INFO("Creating storage pool '%s'", obj->def->name); + VIR_INFO("Creating storage pool '%s'", def->name); virStoragePoolObjSetActive(obj, true); =20 - pool =3D virGetStoragePool(conn, obj->def->name, obj->def->uuid, NULL,= NULL); + pool =3D virGetStoragePool(conn, def->name, def->uuid, NULL, NULL); =20 cleanup: VIR_FREE(stateFile); - virStoragePoolDefFree(def); + virStoragePoolDefFree(newDef); if (event) virObjectEventStateQueue(driver->storageEventState, event); if (obj) @@ -753,38 +763,40 @@ storagePoolDefineXML(virConnectPtr conn, const char *xml, unsigned int flags) { - virStoragePoolDefPtr def; + virStoragePoolDefPtr newDef; virStoragePoolObjPtr obj =3D NULL; + virStoragePoolDefPtr def; virStoragePoolPtr pool =3D NULL; virObjectEventPtr event =3D NULL; =20 virCheckFlags(0, NULL); =20 storageDriverLock(); - if (!(def =3D virStoragePoolDefParseString(xml))) + if (!(newDef =3D virStoragePoolDefParseString(xml))) goto cleanup; =20 - if (virXMLCheckIllegalChars("name", def->name, "\n") < 0) + if (virXMLCheckIllegalChars("name", newDef->name, "\n") < 0) goto cleanup; =20 - if (virStoragePoolDefineXMLEnsureACL(conn, def) < 0) + if (virStoragePoolDefineXMLEnsureACL(conn, newDef) < 0) goto cleanup; =20 - if (virStoragePoolObjIsDuplicate(&driver->pools, def, 0) < 0) + if (virStoragePoolObjIsDuplicate(&driver->pools, newDef, 0) < 0) goto cleanup; =20 - if (virStoragePoolObjSourceFindDuplicate(conn, &driver->pools, def) < = 0) + if (virStoragePoolObjSourceFindDuplicate(conn, &driver->pools, newDef)= < 0) goto cleanup; =20 - if (virStorageBackendForType(def->type) =3D=3D NULL) + if (virStorageBackendForType(newDef->type) =3D=3D NULL) goto cleanup; =20 - if (!(obj =3D virStoragePoolObjAssignDef(&driver->pools, def))) + if (!(obj =3D virStoragePoolObjAssignDef(&driver->pools, newDef))) goto cleanup; + newDef =3D NULL; + def =3D virStoragePoolObjGetDef(obj); =20 if (virStoragePoolObjSaveDef(driver, obj, def) < 0) { virStoragePoolObjRemove(&driver->pools, obj); - def =3D NULL; obj =3D NULL; goto cleanup; } @@ -793,15 +805,13 @@ storagePoolDefineXML(virConnectPtr conn, VIR_STORAGE_POOL_EVENT_DEFINED, 0); =20 - def =3D NULL; - - VIR_INFO("Defining storage pool '%s'", obj->def->name); - pool =3D virGetStoragePool(conn, obj->def->name, obj->def->uuid, NULL,= NULL); + VIR_INFO("Defining storage pool '%s'", def->name); + pool =3D virGetStoragePool(conn, def->name, def->uuid, NULL, NULL); =20 cleanup: if (event) virObjectEventStateQueue(driver->storageEventState, event); - virStoragePoolDefFree(def); + virStoragePoolDefFree(newDef); if (obj) virStoragePoolObjUnlock(obj); storageDriverUnlock(); @@ -812,6 +822,7 @@ static int storagePoolUndefine(virStoragePoolPtr pool) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; const char *autostartLink; virObjectEventPtr event =3D NULL; int ret =3D -1; @@ -819,21 +830,22 @@ storagePoolUndefine(virStoragePoolPtr pool) storageDriverLock(); if (!(obj =3D storagePoolObjFindByUUID(pool->uuid, pool->name))) goto cleanup; + def =3D virStoragePoolObjGetDef(obj); =20 - if (virStoragePoolUndefineEnsureACL(pool->conn, obj->def) < 0) + if (virStoragePoolUndefineEnsureACL(pool->conn, def) < 0) goto cleanup; =20 if (virStoragePoolObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, _("storage pool '%s' is still active"), - obj->def->name); + def->name); goto cleanup; } =20 if (virStoragePoolObjGetAsyncjobs(obj) > 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("pool '%s' has asynchronous jobs running."), - obj->def->name); + def->name); goto cleanup; } =20 @@ -848,13 +860,12 @@ storagePoolUndefine(virStoragePoolPtr pool) autostartLink, virStrerror(errno, ebuf, sizeof(ebuf))); } =20 - - event =3D virStoragePoolEventLifecycleNew(obj->def->name, - obj->def->uuid, + event =3D virStoragePoolEventLifecycleNew(def->name, + def->uuid, VIR_STORAGE_POOL_EVENT_UNDEFIN= ED, 0); =20 - VIR_INFO("Undefining storage pool '%s'", obj->def->name); + VIR_INFO("Undefining storage pool '%s'", def->name); virStoragePoolObjRemove(&driver->pools, obj); obj =3D NULL; ret =3D 0; @@ -873,6 +884,7 @@ storagePoolCreate(virStoragePoolPtr pool, unsigned int flags) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; virStorageBackendPtr backend; virObjectEventPtr event =3D NULL; int ret =3D -1; @@ -888,17 +900,18 @@ storagePoolCreate(virStoragePoolPtr pool, =20 if (!(obj =3D virStoragePoolObjFromStoragePool(pool))) return -1; + def =3D virStoragePoolObjGetDef(obj); =20 - if (virStoragePoolCreateEnsureACL(pool->conn, obj->def) < 0) + if (virStoragePoolCreateEnsureACL(pool->conn, def) < 0) goto cleanup; =20 - if ((backend =3D virStorageBackendForType(obj->def->type)) =3D=3D NULL) + if ((backend =3D virStorageBackendForType(def->type)) =3D=3D NULL) goto cleanup; =20 if (virStoragePoolObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, _("storage pool '%s' is already active"), - obj->def->name); + def->name); goto cleanup; } =20 @@ -915,16 +928,15 @@ storagePoolCreate(virStoragePoolPtr pool, } } =20 - VIR_INFO("Starting up storage pool '%s'", obj->def->name); + VIR_INFO("Starting up storage pool '%s'", def->name); if (backend->startPool && backend->startPool(pool->conn, obj) < 0) goto cleanup; =20 - stateFile =3D virFileBuildPath(driver->stateDir, - obj->def->name, ".xml"); + stateFile =3D virFileBuildPath(driver->stateDir, def->name, ".xml"); =20 virStoragePoolObjClearVols(obj); - if (!stateFile || virStoragePoolSaveState(stateFile, obj->def) < 0 || + if (!stateFile || virStoragePoolSaveState(stateFile, def) < 0 || backend->refreshPool(pool->conn, obj) < 0) { if (stateFile) unlink(stateFile); @@ -933,8 +945,8 @@ storagePoolCreate(virStoragePoolPtr pool, goto cleanup; } =20 - event =3D virStoragePoolEventLifecycleNew(obj->def->name, - obj->def->uuid, + event =3D virStoragePoolEventLifecycleNew(def->name, + def->uuid, VIR_STORAGE_POOL_EVENT_STARTED, 0); =20 @@ -955,22 +967,24 @@ storagePoolBuild(virStoragePoolPtr pool, unsigned int flags) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; virStorageBackendPtr backend; int ret =3D -1; =20 if (!(obj =3D virStoragePoolObjFromStoragePool(pool))) return -1; + def =3D virStoragePoolObjGetDef(obj); =20 - if (virStoragePoolBuildEnsureACL(pool->conn, obj->def) < 0) + if (virStoragePoolBuildEnsureACL(pool->conn, def) < 0) goto cleanup; =20 - if ((backend =3D virStorageBackendForType(obj->def->type)) =3D=3D NULL) + if ((backend =3D virStorageBackendForType(def->type)) =3D=3D NULL) goto cleanup; =20 if (virStoragePoolObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, _("storage pool '%s' is already active"), - obj->def->name); + def->name); goto cleanup; } =20 @@ -989,6 +1003,7 @@ static int storagePoolDestroy(virStoragePoolPtr pool) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; virStorageBackendPtr backend; virObjectEventPtr event =3D NULL; char *stateFile =3D NULL; @@ -997,31 +1012,30 @@ storagePoolDestroy(virStoragePoolPtr pool) storageDriverLock(); if (!(obj =3D storagePoolObjFindByUUID(pool->uuid, pool->name))) goto cleanup; + def =3D virStoragePoolObjGetDef(obj); =20 - if (virStoragePoolDestroyEnsureACL(pool->conn, obj->def) < 0) + if (virStoragePoolDestroyEnsureACL(pool->conn, def) < 0) goto cleanup; =20 - if ((backend =3D virStorageBackendForType(obj->def->type)) =3D=3D NULL) + if ((backend =3D virStorageBackendForType(def->type)) =3D=3D NULL) goto cleanup; =20 - VIR_INFO("Destroying storage pool '%s'", obj->def->name); + VIR_INFO("Destroying storage pool '%s'", def->name); =20 if (!virStoragePoolObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, - _("storage pool '%s' is not active"), obj->def->nam= e); + _("storage pool '%s' is not active"), def->name); goto cleanup; } =20 if (virStoragePoolObjGetAsyncjobs(obj) > 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("pool '%s' has asynchronous jobs running."), - obj->def->name); + def->name); goto cleanup; } =20 - if (!(stateFile =3D virFileBuildPath(driver->stateDir, - obj->def->name, - ".xml"))) + if (!(stateFile =3D virFileBuildPath(driver->stateDir, def->name, ".xm= l"))) goto cleanup; =20 unlink(stateFile); @@ -1033,8 +1047,8 @@ storagePoolDestroy(virStoragePoolPtr pool) =20 virStoragePoolObjClearVols(obj); =20 - event =3D virStoragePoolEventLifecycleNew(obj->def->name, - obj->def->uuid, + event =3D virStoragePoolEventLifecycleNew(def->name, + def->uuid, VIR_STORAGE_POOL_EVENT_STOPPED, 0); =20 @@ -1058,38 +1072,38 @@ storagePoolDelete(virStoragePoolPtr pool, unsigned int flags) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; virStorageBackendPtr backend; char *stateFile =3D NULL; int ret =3D -1; =20 if (!(obj =3D virStoragePoolObjFromStoragePool(pool))) return -1; + def =3D virStoragePoolObjGetDef(obj); =20 - if (virStoragePoolDeleteEnsureACL(pool->conn, obj->def) < 0) + if (virStoragePoolDeleteEnsureACL(pool->conn, def) < 0) goto cleanup; =20 - if ((backend =3D virStorageBackendForType(obj->def->type)) =3D=3D NULL) + if ((backend =3D virStorageBackendForType(def->type)) =3D=3D NULL) goto cleanup; =20 - VIR_INFO("Deleting storage pool '%s'", obj->def->name); + VIR_INFO("Deleting storage pool '%s'", def->name); =20 if (virStoragePoolObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, _("storage pool '%s' is still active"), - obj->def->name); + def->name); goto cleanup; } =20 if (virStoragePoolObjGetAsyncjobs(obj) > 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("pool '%s' has asynchronous jobs running."), - obj->def->name); + def->name); goto cleanup; } =20 - if (!(stateFile =3D virFileBuildPath(driver->stateDir, - obj->def->name, - ".xml"))) + if (!(stateFile =3D virFileBuildPath(driver->stateDir, def->name, ".xm= l"))) goto cleanup; =20 unlink(stateFile); @@ -1116,6 +1130,7 @@ storagePoolRefresh(virStoragePoolPtr pool, unsigned int flags) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; virStorageBackendPtr backend; int ret =3D -1; virObjectEventPtr event =3D NULL; @@ -1125,23 +1140,24 @@ storagePoolRefresh(virStoragePoolPtr pool, storageDriverLock(); if (!(obj =3D storagePoolObjFindByUUID(pool->uuid, pool->name))) goto cleanup; + def =3D virStoragePoolObjGetDef(obj); =20 - if (virStoragePoolRefreshEnsureACL(pool->conn, obj->def) < 0) + if (virStoragePoolRefreshEnsureACL(pool->conn, def) < 0) goto cleanup; =20 - if ((backend =3D virStorageBackendForType(obj->def->type)) =3D=3D NULL) + if ((backend =3D virStorageBackendForType(def->type)) =3D=3D NULL) goto cleanup; =20 if (!virStoragePoolObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, - _("storage pool '%s' is not active"), obj->def->nam= e); + _("storage pool '%s' is not active"), def->name); goto cleanup; } =20 if (virStoragePoolObjGetAsyncjobs(obj) > 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("pool '%s' has asynchronous jobs running."), - obj->def->name); + def->name); goto cleanup; } =20 @@ -1150,8 +1166,8 @@ storagePoolRefresh(virStoragePoolPtr pool, if (backend->stopPool) backend->stopPool(pool->conn, obj); =20 - event =3D virStoragePoolEventLifecycleNew(obj->def->name, - obj->def->uuid, + event =3D virStoragePoolEventLifecycleNew(def->name, + def->uuid, VIR_STORAGE_POOL_EVENT_STO= PPED, 0); virStoragePoolObjSetActive(obj, false); @@ -1161,8 +1177,8 @@ storagePoolRefresh(virStoragePoolPtr pool, goto cleanup; } =20 - event =3D virStoragePoolEventRefreshNew(obj->def->name, - obj->def->uuid); + event =3D virStoragePoolEventRefreshNew(def->name, + def->uuid); ret =3D 0; =20 cleanup: @@ -1180,15 +1196,17 @@ storagePoolGetInfo(virStoragePoolPtr pool, virStoragePoolInfoPtr info) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; int ret =3D -1; =20 if (!(obj =3D virStoragePoolObjFromStoragePool(pool))) return -1; + def =3D virStoragePoolObjGetDef(obj); =20 - if (virStoragePoolGetInfoEnsureACL(pool->conn, obj->def) < 0) + if (virStoragePoolGetInfoEnsureACL(pool->conn, def) < 0) goto cleanup; =20 - if (virStorageBackendForType(obj->def->type) =3D=3D NULL) + if (virStorageBackendForType(def->type) =3D=3D NULL) goto cleanup; =20 memset(info, 0, sizeof(virStoragePoolInfo)); @@ -1196,9 +1214,9 @@ storagePoolGetInfo(virStoragePoolPtr pool, info->state =3D VIR_STORAGE_POOL_RUNNING; else info->state =3D VIR_STORAGE_POOL_INACTIVE; - info->capacity =3D obj->def->capacity; - info->allocation =3D obj->def->allocation; - info->available =3D obj->def->available; + info->capacity =3D def->capacity; + info->allocation =3D def->allocation; + info->available =3D def->available; ret =3D 0; =20 cleanup: @@ -1212,22 +1230,26 @@ storagePoolGetXMLDesc(virStoragePoolPtr pool, { virStoragePoolObjPtr obj; virStoragePoolDefPtr def; + virStoragePoolDefPtr newDef; + virStoragePoolDefPtr curDef; char *ret =3D NULL; =20 virCheckFlags(VIR_STORAGE_XML_INACTIVE, NULL); =20 if (!(obj =3D virStoragePoolObjFromStoragePool(pool))) return NULL; + def =3D virStoragePoolObjGetDef(obj); + newDef =3D virStoragePoolObjGetNewDef(obj); =20 - if (virStoragePoolGetXMLDescEnsureACL(pool->conn, obj->def) < 0) + if (virStoragePoolGetXMLDescEnsureACL(pool->conn, def) < 0) goto cleanup; =20 - if ((flags & VIR_STORAGE_XML_INACTIVE) && obj->newDef) - def =3D obj->newDef; + if ((flags & VIR_STORAGE_XML_INACTIVE) && newDef) + curDef =3D newDef; else - def =3D obj->def; + curDef =3D def; =20 - ret =3D virStoragePoolDefFormat(def); + ret =3D virStoragePoolDefFormat(curDef); =20 cleanup: virStoragePoolObjUnlock(obj); @@ -1244,7 +1266,8 @@ storagePoolGetAutostart(virStoragePoolPtr pool, if (!(obj =3D virStoragePoolObjFromStoragePool(pool))) return -1; =20 - if (virStoragePoolGetAutostartEnsureACL(pool->conn, obj->def) < 0) + if (virStoragePoolGetAutostartEnsureACL(pool->conn, + virStoragePoolObjGetDef(obj)) = < 0) goto cleanup; =20 *autostart =3D virStoragePoolObjIsAutostart(obj) ? 1 : 0; @@ -1271,7 +1294,8 @@ storagePoolSetAutostart(virStoragePoolPtr pool, if (!(obj =3D storagePoolObjFindByUUID(pool->uuid, pool->name))) goto cleanup; =20 - if (virStoragePoolSetAutostartEnsureACL(pool->conn, obj->def) < 0) + if (virStoragePoolSetAutostartEnsureACL(pool->conn, + virStoragePoolObjGetDef(obj)) = < 0) goto cleanup; =20 if (!(configFile =3D virStoragePoolObjGetConfigFile(obj))) { @@ -1325,17 +1349,19 @@ static int storagePoolNumOfVolumes(virStoragePoolPtr pool) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; int ret =3D -1; =20 if (!(obj =3D virStoragePoolObjFromStoragePool(pool))) return -1; + def =3D virStoragePoolObjGetDef(obj); =20 - if (virStoragePoolNumOfVolumesEnsureACL(pool->conn, obj->def) < 0) + if (virStoragePoolNumOfVolumesEnsureACL(pool->conn, def) < 0) goto cleanup; =20 if (!virStoragePoolObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, - _("storage pool '%s' is not active"), obj->def->nam= e); + _("storage pool '%s' is not active"), def->name); goto cleanup; } =20 @@ -1354,17 +1380,19 @@ storagePoolListVolumes(virStoragePoolPtr pool, int maxnames) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; int n =3D -1; =20 if (!(obj =3D virStoragePoolObjFromStoragePool(pool))) return -1; + def =3D virStoragePoolObjGetDef(obj); =20 - if (virStoragePoolListVolumesEnsureACL(pool->conn, obj->def) < 0) + if (virStoragePoolListVolumesEnsureACL(pool->conn, def) < 0) goto cleanup; =20 if (!virStoragePoolObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, - _("storage pool '%s' is not active"), obj->def->nam= e); + _("storage pool '%s' is not active"), def->name); goto cleanup; } =20 @@ -1383,19 +1411,21 @@ storagePoolListAllVolumes(virStoragePoolPtr pool, unsigned int flags) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; int ret =3D -1; =20 virCheckFlags(0, -1); =20 if (!(obj =3D virStoragePoolObjFromStoragePool(pool))) return -1; + def =3D virStoragePoolObjGetDef(obj); =20 - if (virStoragePoolListAllVolumesEnsureACL(pool->conn, obj->def) < 0) + if (virStoragePoolListAllVolumesEnsureACL(pool->conn, def) < 0) goto cleanup; =20 if (!virStoragePoolObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, - _("storage pool '%s' is not active"), obj->def->nam= e); + _("storage pool '%s' is not active"), def->name); goto cleanup; } =20 @@ -1414,15 +1444,17 @@ storageVolLookupByName(virStoragePoolPtr pool, const char *name) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; virStorageVolDefPtr voldef; virStorageVolPtr vol =3D NULL; =20 if (!(obj =3D virStoragePoolObjFromStoragePool(pool))) return NULL; + def =3D virStoragePoolObjGetDef(obj); =20 if (!virStoragePoolObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, - _("storage pool '%s' is not active"), obj->def->nam= e); + _("storage pool '%s' is not active"), def->name); goto cleanup; } =20 @@ -1435,10 +1467,10 @@ storageVolLookupByName(virStoragePoolPtr pool, goto cleanup; } =20 - if (virStorageVolLookupByNameEnsureACL(pool->conn, obj->def, voldef) <= 0) + if (virStorageVolLookupByNameEnsureACL(pool->conn, def, voldef) < 0) goto cleanup; =20 - vol =3D virGetStorageVol(pool->conn, obj->def->name, voldef->name, + vol =3D virGetStorageVol(pool->conn, def->name, voldef->name, voldef->key, NULL, NULL); =20 cleanup: @@ -1456,26 +1488,26 @@ storageVolLookupByKey(virConnectPtr conn, =20 storageDriverLock(); for (i =3D 0; i < driver->pools.count && !vol; i++) { - virStoragePoolObjLock(driver->pools.objs[i]); - if (virStoragePoolObjIsActive(driver->pools.objs[i])) { - virStorageVolDefPtr voldef =3D - virStorageVolDefFindByKey(driver->pools.objs[i], key); + virStoragePoolObjPtr obj =3D driver->pools.objs[i]; + virStoragePoolDefPtr def; + + virStoragePoolObjLock(obj); + def =3D virStoragePoolObjGetDef(obj); + if (virStoragePoolObjIsActive(obj)) { + virStorageVolDefPtr voldef =3D virStorageVolDefFindByKey(obj, = key); =20 if (voldef) { - virStoragePoolDefPtr def =3D driver->pools.objs[i]->def; if (virStorageVolLookupByKeyEnsureACL(conn, def, voldef) <= 0) { - virStoragePoolObjUnlock(driver->pools.objs[i]); + virStoragePoolObjUnlock(obj); goto cleanup; } =20 - vol =3D virGetStorageVol(conn, - def->name, - voldef->name, - voldef->key, + vol =3D virGetStorageVol(conn, def->name, + voldef->name, voldef->key, NULL, NULL); } } - virStoragePoolObjUnlock(driver->pools.objs[i]); + virStoragePoolObjUnlock(obj); } =20 if (!vol) @@ -1502,17 +1534,19 @@ storageVolLookupByPath(virConnectPtr conn, storageDriverLock(); for (i =3D 0; i < driver->pools.count && !vol; i++) { virStoragePoolObjPtr obj =3D driver->pools.objs[i]; + virStoragePoolDefPtr def; virStorageVolDefPtr voldef; char *stable_path =3D NULL; =20 virStoragePoolObjLock(obj); + def =3D virStoragePoolObjGetDef(obj); =20 if (!virStoragePoolObjIsActive(obj)) { virStoragePoolObjUnlock(obj); continue; } =20 - switch ((virStoragePoolType) obj->def->type) { + switch ((virStoragePoolType) def->type) { case VIR_STORAGE_POOL_DIR: case VIR_STORAGE_POOL_FS: case VIR_STORAGE_POOL_NETFS: @@ -1530,7 +1564,7 @@ storageVolLookupByPath(virConnectPtr conn, * getting the stable path for some of the pools. */ VIR_WARN("Failed to get stable path for pool '%s'", - obj->def->name); + def->name); virStoragePoolObjUnlock(obj); continue; } @@ -1552,12 +1586,12 @@ storageVolLookupByPath(virConnectPtr conn, VIR_FREE(stable_path); =20 if (voldef) { - if (virStorageVolLookupByPathEnsureACL(conn, obj->def, voldef)= < 0) { + if (virStorageVolLookupByPathEnsureACL(conn, def, voldef) < 0)= { virStoragePoolObjUnlock(obj); goto cleanup; } =20 - vol =3D virGetStorageVol(conn, obj->def->name, + vol =3D virGetStorageVol(conn, def->name, voldef->name, voldef->key, NULL, NULL); } @@ -1597,18 +1631,18 @@ storagePoolLookupByTargetPath(virConnectPtr conn, storageDriverLock(); for (i =3D 0; i < driver->pools.count && !pool; i++) { virStoragePoolObjPtr obj =3D driver->pools.objs[i]; + virStoragePoolDefPtr def; =20 virStoragePoolObjLock(obj); + def =3D virStoragePoolObjGetDef(obj); =20 if (!virStoragePoolObjIsActive(obj)) { virStoragePoolObjUnlock(obj); continue; } =20 - if (STREQ(path, obj->def->target.path)) { - pool =3D virGetStoragePool(conn, obj->def->name, obj->def->uui= d, - NULL, NULL); - } + if (STREQ(path, def->target.path)) + pool =3D virGetStoragePool(conn, def->name, def->uuid, NULL, N= ULL); =20 virStoragePoolObjUnlock(obj); } @@ -1633,6 +1667,7 @@ storageVolDeleteInternal(virStorageVolPtr vol, unsigned int flags, bool updateMeta) { + virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(obj); int ret =3D -1; =20 if (!backend->deleteVol) { @@ -1650,9 +1685,9 @@ storageVolDeleteInternal(virStorageVolPtr vol, * Ignore the disk backend since it updates the pool values. */ if (updateMeta) { - if (obj->def->type !=3D VIR_STORAGE_POOL_DISK) { - obj->def->allocation -=3D voldef->target.allocation; - obj->def->available +=3D voldef->target.allocation; + if (def->type !=3D VIR_STORAGE_POOL_DISK) { + def->allocation -=3D voldef->target.allocation; + def->available +=3D voldef->target.allocation; } } =20 @@ -1670,14 +1705,16 @@ virStorageVolDefFromVol(virStorageVolPtr vol, virStorageBackendPtr *backend) { virStorageVolDefPtr voldef =3D NULL; + virStoragePoolDefPtr def; =20 if (!(*obj =3D storagePoolObjFindByName(vol->pool))) return NULL; + def =3D virStoragePoolObjGetDef(*obj); =20 if (!virStoragePoolObjIsActive(*obj)) { virReportError(VIR_ERR_OPERATION_INVALID, _("storage pool '%s' is not active"), - (*obj)->def->name); + def->name); goto error; } =20 @@ -1689,7 +1726,7 @@ virStorageVolDefFromVol(virStorageVolPtr vol, } =20 if (backend) { - if (!(*backend =3D virStorageBackendForType((*obj)->def->type))) + if (!(*backend =3D virStorageBackendForType(def->type))) goto error; } =20 @@ -1715,7 +1752,8 @@ storageVolDelete(virStorageVolPtr vol, if (!(voldef =3D virStorageVolDefFromVol(vol, &obj, &backend))) return -1; =20 - if (virStorageVolDeleteEnsureACL(vol->conn, obj->def, voldef) < 0) + if (virStorageVolDeleteEnsureACL(vol->conn, virStoragePoolObjGetDef(ob= j), + voldef) < 0) goto cleanup; =20 if (voldef->in_use) { @@ -1749,6 +1787,7 @@ storageVolCreateXML(virStoragePoolPtr pool, unsigned int flags) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; virStorageBackendPtr backend; virStorageVolDefPtr voldef =3D NULL; virStorageVolPtr vol =3D NULL, newvol =3D NULL; @@ -1757,17 +1796,18 @@ storageVolCreateXML(virStoragePoolPtr pool, =20 if (!(obj =3D virStoragePoolObjFromStoragePool(pool))) return NULL; + def =3D virStoragePoolObjGetDef(obj); =20 if (!virStoragePoolObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, - _("storage pool '%s' is not active"), obj->def->nam= e); + _("storage pool '%s' is not active"), def->name); goto cleanup; } =20 - if ((backend =3D virStorageBackendForType(obj->def->type)) =3D=3D NULL) + if ((backend =3D virStorageBackendForType(def->type)) =3D=3D NULL) goto cleanup; =20 - voldef =3D virStorageVolDefParseString(obj->def, xmldesc, + voldef =3D virStorageVolDefParseString(def, xmldesc, VIR_VOL_XML_PARSE_OPT_CAPACITY); if (voldef =3D=3D NULL) goto cleanup; @@ -1779,7 +1819,7 @@ storageVolCreateXML(virStoragePoolPtr pool, goto cleanup; } =20 - if (virStorageVolCreateXMLEnsureACL(pool->conn, obj->def, voldef) < 0) + if (virStorageVolCreateXMLEnsureACL(pool->conn, def, voldef) < 0) goto cleanup; =20 if (virStorageVolDefFindByName(obj, voldef->name)) { @@ -1801,7 +1841,7 @@ storageVolCreateXML(virStoragePoolPtr pool, if (backend->createVol(pool->conn, obj, voldef) < 0) goto cleanup; =20 - if (!(newvol =3D virGetStorageVol(pool->conn, obj->def->name, voldef->= name, + if (!(newvol =3D virGetStorageVol(pool->conn, def->name, voldef->name, voldef->key, NULL, NULL))) goto cleanup; =20 @@ -1860,13 +1900,13 @@ storageVolCreateXML(virStoragePoolPtr pool, /* Update pool metadata ignoring the disk backend since * it updates the pool values. */ - if (obj->def->type !=3D VIR_STORAGE_POOL_DISK) { - obj->def->allocation +=3D voldef->target.allocation; - obj->def->available -=3D voldef->target.allocation; + if (def->type !=3D VIR_STORAGE_POOL_DISK) { + def->allocation +=3D voldef->target.allocation; + def->available -=3D voldef->target.allocation; } =20 VIR_INFO("Creating volume '%s' in storage pool '%s'", - newvol->name, obj->def->name); + newvol->name, def->name); vol =3D newvol; newvol =3D NULL; voldef =3D NULL; @@ -1886,6 +1926,7 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool, unsigned int flags) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; virStoragePoolObjPtr objsrc =3D NULL; virStorageBackendPtr backend; virStorageVolDefPtr voldefsrc =3D NULL; @@ -1915,6 +1956,7 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool, uuidstr, pool->name); goto cleanup; } + def =3D virStoragePoolObjGetDef(obj); =20 if (STRNEQ(pool->name, volsrc->pool) && !objsrc) { virReportError(VIR_ERR_NO_STORAGE_POOL, @@ -1925,18 +1967,19 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool, =20 if (!virStoragePoolObjIsActive(obj)) { virReportError(VIR_ERR_OPERATION_INVALID, - _("storage pool '%s' is not active"), obj->def->nam= e); + _("storage pool '%s' is not active"), def->name); goto cleanup; } =20 if (objsrc && !virStoragePoolObjIsActive(objsrc)) { + virStoragePoolDefPtr objsrcdef =3D virStoragePoolObjGetDef(objsrc); virReportError(VIR_ERR_OPERATION_INVALID, _("storage pool '%s' is not active"), - objsrc->def->name); + objsrcdef->name); goto cleanup; } =20 - if ((backend =3D virStorageBackendForType(obj->def->type)) =3D=3D NULL) + if ((backend =3D virStorageBackendForType(def->type)) =3D=3D NULL) goto cleanup; =20 voldefsrc =3D virStorageVolDefFindByName(objsrc ? @@ -1948,12 +1991,12 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool, goto cleanup; } =20 - voldef =3D virStorageVolDefParseString(obj->def, xmldesc, + voldef =3D virStorageVolDefParseString(def, xmldesc, VIR_VOL_XML_PARSE_NO_CAPACITY); if (voldef =3D=3D NULL) goto cleanup; =20 - if (virStorageVolCreateXMLFromEnsureACL(pool->conn, obj->def, voldef) = < 0) + if (virStorageVolCreateXMLFromEnsureACL(pool->conn, def, voldef) < 0) goto cleanup; =20 if (virStorageVolDefFindByName(obj, voldef->name)) { @@ -2009,7 +2052,7 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool, =20 memcpy(shadowvol, voldef, sizeof(*voldef)); =20 - if (!(newvol =3D virGetStorageVol(pool->conn, obj->def->name, voldef->= name, + if (!(newvol =3D virGetStorageVol(pool->conn, def->name, voldef->name, voldef->key, NULL, NULL))) goto cleanup; =20 @@ -2057,13 +2100,13 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool, /* Updating pool metadata ignoring the disk backend since * it updates the pool values */ - if (obj->def->type !=3D VIR_STORAGE_POOL_DISK) { - obj->def->allocation +=3D voldef->target.allocation; - obj->def->available -=3D voldef->target.allocation; + if (def->type !=3D VIR_STORAGE_POOL_DISK) { + def->allocation +=3D voldef->target.allocation; + def->available -=3D voldef->target.allocation; } =20 VIR_INFO("Creating volume '%s' in storage pool '%s'", - newvol->name, obj->def->name); + newvol->name, def->name); vol =3D newvol; newvol =3D NULL; voldef =3D NULL; @@ -2097,7 +2140,8 @@ storageVolDownload(virStorageVolPtr vol, if (!(voldef =3D virStorageVolDefFromVol(vol, &obj, &backend))) return -1; =20 - if (virStorageVolDownloadEnsureACL(vol->conn, obj->def, voldef) < 0) + if (virStorageVolDownloadEnsureACL(vol->conn, virStoragePoolObjGetDef(= obj), + voldef) < 0) goto cleanup; =20 if (voldef->building) { @@ -2191,6 +2235,7 @@ virStorageVolPoolRefreshThread(void *opaque) =20 virStorageVolStreamInfoPtr cbdata =3D opaque; virStoragePoolObjPtr obj =3D NULL; + virStoragePoolDefPtr def; virStorageBackendPtr backend; virObjectEventPtr event =3D NULL; =20 @@ -2202,16 +2247,16 @@ virStorageVolPoolRefreshThread(void *opaque) if (!(obj =3D virStoragePoolObjFindByName(&driver->pools, cbdata->pool_name))) goto cleanup; + def =3D virStoragePoolObjGetDef(obj); =20 - if (!(backend =3D virStorageBackendForType(obj->def->type))) + if (!(backend =3D virStorageBackendForType(def->type))) goto cleanup; =20 virStoragePoolObjClearVols(obj); if (backend->refreshPool(NULL, obj) < 0) VIR_DEBUG("Failed to refresh storage pool"); =20 - event =3D virStoragePoolEventRefreshNew(obj->def->name, - obj->def->uuid); + event =3D virStoragePoolEventRefreshNew(def->name, def->uuid); =20 cleanup: if (event) @@ -2256,6 +2301,7 @@ storageVolUpload(virStorageVolPtr vol, { virStorageBackendPtr backend; virStoragePoolObjPtr obj =3D NULL; + virStoragePoolDefPtr def; virStorageVolDefPtr voldef =3D NULL; virStorageVolStreamInfoPtr cbdata =3D NULL; int ret =3D -1; @@ -2264,8 +2310,9 @@ storageVolUpload(virStorageVolPtr vol, =20 if (!(voldef =3D virStorageVolDefFromVol(vol, &obj, &backend))) return -1; + def =3D virStoragePoolObjGetDef(obj); =20 - if (virStorageVolUploadEnsureACL(vol->conn, obj->def, voldef) < 0) + if (virStorageVolUploadEnsureACL(vol->conn, def, voldef) < 0) goto cleanup; =20 if (voldef->in_use) { @@ -2295,7 +2342,7 @@ storageVolUpload(virStorageVolPtr vol, * routine in order to call the refresh API. */ if (VIR_ALLOC(cbdata) < 0 || - VIR_STRDUP(cbdata->pool_name, obj->def->name) < 0) + VIR_STRDUP(cbdata->pool_name, def->name) < 0) goto cleanup; if (voldef->type =3D=3D VIR_STORAGE_VOL_PLOOP && VIR_STRDUP(cbdata->vol_path, voldef->target.path) < 0) @@ -2328,6 +2375,7 @@ storageVolResize(virStorageVolPtr vol, { virStorageBackendPtr backend; virStoragePoolObjPtr obj =3D NULL; + virStoragePoolDefPtr def; virStorageVolDefPtr voldef =3D NULL; unsigned long long abs_capacity, delta =3D 0; int ret =3D -1; @@ -2338,8 +2386,9 @@ storageVolResize(virStorageVolPtr vol, =20 if (!(voldef =3D virStorageVolDefFromVol(vol, &obj, &backend))) return -1; + def =3D virStoragePoolObjGetDef(obj); =20 - if (virStorageVolResizeEnsureACL(vol->conn, obj->def, voldef) < 0) + if (virStorageVolResizeEnsureACL(vol->conn, def, voldef) < 0) goto cleanup; =20 if (voldef->in_use) { @@ -2384,7 +2433,7 @@ storageVolResize(virStorageVolPtr vol, if (flags & VIR_STORAGE_VOL_RESIZE_ALLOCATE) delta =3D abs_capacity - voldef->target.allocation; =20 - if (delta > obj->def->available) { + if (delta > def->available) { virReportError(VIR_ERR_OPERATION_FAILED, "%s", _("Not enough space left in storage pool")); goto cleanup; @@ -2407,8 +2456,8 @@ storageVolResize(virStorageVolPtr vol, */ if (flags & VIR_STORAGE_VOL_RESIZE_ALLOCATE) { voldef->target.allocation =3D abs_capacity; - obj->def->allocation +=3D delta; - obj->def->available -=3D delta; + def->allocation +=3D delta; + def->available -=3D delta; } =20 ret =3D 0; @@ -2442,7 +2491,9 @@ storageVolWipePattern(virStorageVolPtr vol, if (!(voldef =3D virStorageVolDefFromVol(vol, &obj, &backend))) return -1; =20 - if (virStorageVolWipePatternEnsureACL(vol->conn, obj->def, voldef) < 0) + if (virStorageVolWipePatternEnsureACL(vol->conn, + virStoragePoolObjGetDef(obj), + voldef) < 0) goto cleanup; =20 if (voldef->in_use) { @@ -2506,7 +2557,9 @@ storageVolGetInfoFlags(virStorageVolPtr vol, if (!(voldef =3D virStorageVolDefFromVol(vol, &obj, &backend))) return -1; =20 - if (virStorageVolGetInfoFlagsEnsureACL(vol->conn, obj->def, voldef) < = 0) + if (virStorageVolGetInfoFlagsEnsureACL(vol->conn, + virStoragePoolObjGetDef(obj), + voldef) < 0) goto cleanup; =20 if (backend->refreshVol && @@ -2541,6 +2594,7 @@ storageVolGetXMLDesc(virStorageVolPtr vol, unsigned int flags) { virStoragePoolObjPtr obj; + virStoragePoolDefPtr def; virStorageBackendPtr backend; virStorageVolDefPtr voldef; char *ret =3D NULL; @@ -2549,15 +2603,16 @@ storageVolGetXMLDesc(virStorageVolPtr vol, =20 if (!(voldef =3D virStorageVolDefFromVol(vol, &obj, &backend))) return NULL; + def =3D virStoragePoolObjGetDef(obj); =20 - if (virStorageVolGetXMLDescEnsureACL(vol->conn, obj->def, voldef) < 0) + if (virStorageVolGetXMLDescEnsureACL(vol->conn, def, voldef) < 0) goto cleanup; =20 if (backend->refreshVol && backend->refreshVol(vol->conn, obj, voldef) < 0) goto cleanup; =20 - ret =3D virStorageVolDefFormat(obj->def, voldef); + ret =3D virStorageVolDefFormat(def, voldef); =20 cleanup: virStoragePoolObjUnlock(obj); @@ -2575,7 +2630,8 @@ storageVolGetPath(virStorageVolPtr vol) if (!(voldef =3D virStorageVolDefFromVol(vol, &obj, NULL))) return NULL; =20 - if (virStorageVolGetPathEnsureACL(vol->conn, obj->def, voldef) < 0) + if (virStorageVolGetPathEnsureACL(vol->conn, virStoragePoolObjGetDef(o= bj), + voldef) < 0) goto cleanup; =20 ignore_value(VIR_STRDUP(ret, voldef->target.path)); @@ -3025,9 +3081,10 @@ virStoragePoolObjBuildTempFilePath(virStoragePoolObj= Ptr obj, virStorageVolDefPtr voldef) =20 { + virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(obj); char *tmp =3D NULL; =20 ignore_value(virAsprintf(&tmp, "%s/%s.%s.secret.XXXXXX", - driver->stateDir, obj->def->name, voldef->nam= e)); + driver->stateDir, def->name, voldef->name)); return tmp; } --=20 2.13.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list