From nobody Sun Feb 8 18:48:59 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; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1549460551872992.3363654222874; Wed, 6 Feb 2019 05:42:31 -0800 (PST) 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 9D69F19CBE9; Wed, 6 Feb 2019 13:42: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 5DEE06CF66; Wed, 6 Feb 2019 13:42: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 EE6AC18033A3; Wed, 6 Feb 2019 13:42:28 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x16Dg6bO001921 for ; Wed, 6 Feb 2019 08:42:06 -0500 Received: by smtp.corp.redhat.com (Postfix) id 701AA5C26D; Wed, 6 Feb 2019 13:42:06 +0000 (UTC) Received: from unknown0050b6a41c42.attlocal.net.com (ovpn-116-19.phx2.redhat.com [10.3.116.19]) by smtp.corp.redhat.com (Postfix) with ESMTP id 116136426E for ; Wed, 6 Feb 2019 13:42:05 +0000 (UTC) From: John Ferlan To: libvir-list@redhat.com Date: Wed, 6 Feb 2019 08:41:36 -0500 Message-Id: <20190206134147.18032-5-jferlan@redhat.com> In-Reply-To: <20190206134147.18032-1-jferlan@redhat.com> References: <20190206134147.18032-1-jferlan@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 04/15] conf: Introduce VIR_DEFINE_AUTOPTR_FUNC for virStoragePoolDef 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: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Wed, 06 Feb 2019 13:42:30 +0000 (UTC) Content-Type: text/plain; charset="utf-8" Let's make use of the auto __cleanup capabilities cleaning up any now unnecessary goto paths. For virStoragePoolDefParseXML use the @def/@ret similarly as other methods. For storagePoolDefineXML make it clearer and use @objNewDef after adding @newDef to the object. Signed-off-by: John Ferlan Reviewed-by: Erik Skultety --- src/conf/domain_conf.c | 3 +- src/conf/storage_conf.c | 114 ++++++++++++++--------------- src/conf/storage_conf.h | 1 + src/conf/virstorageobj.c | 27 +++---- src/phyp/phyp_driver.c | 3 +- src/storage/storage_driver.c | 14 ++-- src/test/test_driver.c | 6 +- tests/storagebackendsheepdogtest.c | 6 +- tests/storagepoolxml2argvtest.c | 21 ++++-- tests/storagepoolxml2xmltest.c | 3 +- tests/storagevolxml2argvtest.c | 16 ++-- tests/storagevolxml2xmltest.c | 3 +- 12 files changed, 103 insertions(+), 114 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 5699a60549..ee0edff4b2 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -30996,7 +30996,7 @@ int virDomainDiskTranslateSourcePool(virDomainDiskDefPtr def) { virConnectPtr conn =3D NULL; - virStoragePoolDefPtr pooldef =3D NULL; + VIR_AUTOPTR(virStoragePoolDef) pooldef =3D NULL; virStoragePoolPtr pool =3D NULL; virStorageVolPtr vol =3D NULL; char *poolxml =3D NULL; @@ -31160,7 +31160,6 @@ virDomainDiskTranslateSourcePool(virDomainDiskDefPt= r def) virObjectUnref(pool); virObjectUnref(vol); VIR_FREE(poolxml); - virStoragePoolDefFree(pooldef); return ret; } =20 diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c index 83ca379217..4fb5fb9f57 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -737,159 +737,157 @@ virStoragePoolDefPtr virStoragePoolDefParseXML(xmlXPathContextPtr ctxt) { virStoragePoolOptionsPtr options; - virStoragePoolDefPtr ret; + VIR_AUTOPTR(virStoragePoolDef) def =3D NULL; + virStoragePoolDefPtr ret =3D NULL; xmlNodePtr source_node; char *type =3D NULL; char *uuid =3D NULL; char *target_path =3D NULL; =20 - if (VIR_ALLOC(ret) < 0) + if (VIR_ALLOC(def) < 0) return NULL; =20 type =3D virXPathString("string(./@type)", ctxt); if (type =3D=3D NULL) { virReportError(VIR_ERR_XML_ERROR, "%s", _("storage pool missing type attribute")); - goto error; + goto cleanup; } =20 - if ((ret->type =3D virStoragePoolTypeFromString(type)) < 0) { + if ((def->type =3D virStoragePoolTypeFromString(type)) < 0) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("unknown storage pool type %s"), type); - goto error; + goto cleanup; } =20 - if ((options =3D virStoragePoolOptionsForPoolType(ret->type)) =3D=3D N= ULL) - goto error; + if ((options =3D virStoragePoolOptionsForPoolType(def->type)) =3D=3D N= ULL) + goto cleanup; =20 source_node =3D virXPathNode("./source", ctxt); if (source_node) { - if (virStoragePoolDefParseSource(ctxt, &ret->source, ret->type, + if (virStoragePoolDefParseSource(ctxt, &def->source, def->type, source_node) < 0) - goto error; + goto cleanup; } else { if (options->formatFromString) - ret->source.format =3D options->defaultFormat; + def->source.format =3D options->defaultFormat; } =20 - ret->name =3D virXPathString("string(./name)", ctxt); - if (ret->name =3D=3D NULL && + def->name =3D virXPathString("string(./name)", ctxt); + if (def->name =3D=3D NULL && options->flags & VIR_STORAGE_POOL_SOURCE_NAME && - VIR_STRDUP(ret->name, ret->source.name) < 0) - goto error; - if (ret->name =3D=3D NULL) { + VIR_STRDUP(def->name, def->source.name) < 0) + goto cleanup; + if (def->name =3D=3D NULL) { virReportError(VIR_ERR_XML_ERROR, "%s", _("missing pool source name element")); - goto error; + goto cleanup; } =20 - if (strchr(ret->name, '/')) { + if (strchr(def->name, '/')) { virReportError(VIR_ERR_XML_ERROR, - _("name %s cannot contain '/'"), ret->name); - goto error; + _("name %s cannot contain '/'"), def->name); + goto cleanup; } =20 uuid =3D virXPathString("string(./uuid)", ctxt); if (uuid =3D=3D NULL) { - if (virUUIDGenerate(ret->uuid) < 0) { + if (virUUIDGenerate(def->uuid) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("unable to generate uuid")); - goto error; + goto cleanup; } } else { - if (virUUIDParse(uuid, ret->uuid) < 0) { + if (virUUIDParse(uuid, def->uuid) < 0) { virReportError(VIR_ERR_XML_ERROR, "%s", _("malformed uuid element")); - goto error; + goto cleanup; } } =20 if (options->flags & VIR_STORAGE_POOL_SOURCE_HOST) { - if (!ret->source.nhost) { + if (!def->source.nhost) { virReportError(VIR_ERR_XML_ERROR, "%s", _("missing storage pool source host name")); - goto error; + goto cleanup; } } =20 if (options->flags & VIR_STORAGE_POOL_SOURCE_DIR) { - if (!ret->source.dir) { + if (!def->source.dir) { virReportError(VIR_ERR_XML_ERROR, "%s", _("missing storage pool source path")); - goto error; + goto cleanup; } } if (options->flags & VIR_STORAGE_POOL_SOURCE_NAME) { - if (ret->source.name =3D=3D NULL) { + if (def->source.name =3D=3D NULL) { /* source name defaults to pool name */ - if (VIR_STRDUP(ret->source.name, ret->name) < 0) - goto error; + if (VIR_STRDUP(def->source.name, def->name) < 0) + goto cleanup; } } =20 if ((options->flags & VIR_STORAGE_POOL_SOURCE_ADAPTER) && - (virStorageAdapterValidate(&ret->source.adapter)) < 0) - goto error; + (virStorageAdapterValidate(&def->source.adapter)) < 0) + goto cleanup; =20 /* If DEVICE is the only source type, then its required */ if (options->flags =3D=3D VIR_STORAGE_POOL_SOURCE_DEVICE) { - if (!ret->source.ndevice) { + if (!def->source.ndevice) { virReportError(VIR_ERR_XML_ERROR, "%s", _("missing storage pool source device name")); - goto error; + goto cleanup; } } =20 /* When we are working with a virtual disk we can skip the target * path and permissions */ if (!(options->flags & VIR_STORAGE_POOL_SOURCE_NETWORK)) { - if (ret->type =3D=3D VIR_STORAGE_POOL_LOGICAL) { - if (virAsprintf(&target_path, "/dev/%s", ret->source.name) < 0) - goto error; - } else if (ret->type =3D=3D VIR_STORAGE_POOL_ZFS) { - if (virAsprintf(&target_path, "/dev/zvol/%s", ret->source.name= ) < 0) - goto error; + if (def->type =3D=3D VIR_STORAGE_POOL_LOGICAL) { + if (virAsprintf(&target_path, "/dev/%s", def->source.name) < 0) + goto cleanup; + } else if (def->type =3D=3D VIR_STORAGE_POOL_ZFS) { + if (virAsprintf(&target_path, "/dev/zvol/%s", def->source.name= ) < 0) + goto cleanup; } else { target_path =3D virXPathString("string(./target/path)", ctxt); if (!target_path) { virReportError(VIR_ERR_XML_ERROR, "%s", _("missing storage pool target path")); - goto error; + goto cleanup; } } - ret->target.path =3D virFileSanitizePath(target_path); - if (!ret->target.path) - goto error; + def->target.path =3D virFileSanitizePath(target_path); + if (!def->target.path) + goto cleanup; =20 - if (virStorageDefParsePerms(ctxt, &ret->target.perms, + if (virStorageDefParsePerms(ctxt, &def->target.perms, "./target/permissions") < 0) - goto error; + goto cleanup; } =20 - if (ret->type =3D=3D VIR_STORAGE_POOL_ISCSI_DIRECT && - !ret->source.initiator.iqn) { + if (def->type =3D=3D VIR_STORAGE_POOL_ISCSI_DIRECT && + !def->source.initiator.iqn) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("missing initiator IQN")); - goto error; + goto cleanup; } =20 /* Make a copy of all the callback pointers here for easier use, * especially during the virStoragePoolSourceClear method */ - ret->ns =3D options->ns; - if (ret->ns.parse && - (ret->ns.parse)(ctxt, &ret->namespaceData) < 0) - goto error; + def->ns =3D options->ns; + if (def->ns.parse && + (def->ns.parse)(ctxt, &def->namespaceData) < 0) + goto cleanup; + + VIR_STEAL_PTR(ret, def); =20 cleanup: VIR_FREE(uuid); VIR_FREE(type); VIR_FREE(target_path); return ret; - - error: - virStoragePoolDefFree(ret); - ret =3D NULL; - goto cleanup; } =20 =20 diff --git a/src/conf/storage_conf.h b/src/conf/storage_conf.h index b8e73864c4..daf6f9b68c 100644 --- a/src/conf/storage_conf.h +++ b/src/conf/storage_conf.h @@ -461,6 +461,7 @@ VIR_ENUM_DECL(virStoragePartedFs); VIR_CONNECT_LIST_STORAGE_POOLS_FILTERS_POOL_TYPE) =20 VIR_DEFINE_AUTOPTR_FUNC(virStoragePoolSource, virStoragePoolSourceFree); +VIR_DEFINE_AUTOPTR_FUNC(virStoragePoolDef, virStoragePoolDefFree); VIR_DEFINE_AUTOPTR_FUNC(virStorageVolDef, virStorageVolDefFree); =20 #endif /* LIBVIRT_STORAGE_CONF_H */ diff --git a/src/conf/virstorageobj.c b/src/conf/virstorageobj.c index 7005de3c24..3a2f3fa77b 100644 --- a/src/conf/virstorageobj.c +++ b/src/conf/virstorageobj.c @@ -1579,7 +1579,7 @@ virStoragePoolObjLoad(virStoragePoolObjListPtr pools, const char *path, const char *autostartLink) { - virStoragePoolDefPtr def; + VIR_AUTOPTR(virStoragePoolDef) def =3D NULL; virStoragePoolObjPtr obj; =20 if (!(def =3D virStoragePoolDefParseFile(path))) @@ -1590,14 +1590,12 @@ virStoragePoolObjLoad(virStoragePoolObjListPtr pool= s, _("Storage pool config filename '%s' does " "not match pool name '%s'"), path, def->name); - virStoragePoolDefFree(def); return NULL; } =20 - if (!(obj =3D virStoragePoolObjAssignDef(pools, def, false))) { - virStoragePoolDefFree(def); + if (!(obj =3D virStoragePoolObjAssignDef(pools, def, false))) return NULL; - } + def =3D NULL; =20 VIR_FREE(obj->configFile); /* for driver reload */ if (VIR_STRDUP(obj->configFile, path) < 0) { @@ -1625,39 +1623,40 @@ virStoragePoolObjLoadState(virStoragePoolObjListPtr= pools, const char *name) { char *stateFile =3D NULL; - virStoragePoolDefPtr def =3D NULL; + VIR_AUTOPTR(virStoragePoolDef) def =3D NULL; virStoragePoolObjPtr obj =3D NULL; xmlDocPtr xml =3D NULL; xmlXPathContextPtr ctxt =3D NULL; xmlNodePtr node =3D NULL; =20 if (!(stateFile =3D virFileBuildPath(stateDir, name, ".xml"))) - goto error; + return NULL; =20 if (!(xml =3D virXMLParseCtxt(stateFile, NULL, _("(pool state)"), &ctx= t))) - goto error; + goto cleanup; =20 if (!(node =3D virXPathNode("//pool", ctxt))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Could not find any 'pool' element in state file"= )); - goto error; + goto cleanup; } =20 ctxt->node =3D node; if (!(def =3D virStoragePoolDefParseXML(ctxt))) - goto error; + goto cleanup; =20 if (STRNEQ(name, def->name)) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Storage pool state file '%s' does not match " "pool name '%s'"), stateFile, def->name); - goto error; + goto cleanup; } =20 /* create the object */ if (!(obj =3D virStoragePoolObjAssignDef(pools, def, true))) - goto error; + goto cleanup; + def =3D NULL; =20 /* XXX: future handling of some additional useful status data, * for now, if a status file for a pool exists, the pool will be marked @@ -1671,10 +1670,6 @@ virStoragePoolObjLoadState(virStoragePoolObjListPtr = pools, xmlFreeDoc(xml); xmlXPathFreeContext(ctxt); return obj; - - error: - virStoragePoolDefFree(def); - goto cleanup; } =20 =20 diff --git a/src/phyp/phyp_driver.c b/src/phyp/phyp_driver.c index 966e0b3c0f..2ebf4f3cfd 100644 --- a/src/phyp/phyp_driver.c +++ b/src/phyp/phyp_driver.c @@ -1953,7 +1953,7 @@ phypStorageVolCreateXML(virStoragePoolPtr pool, virCheckFlags(0, NULL); =20 VIR_AUTOPTR(virStorageVolDef) voldef =3D NULL; - virStoragePoolDefPtr spdef =3D NULL; + VIR_AUTOPTR(virStoragePoolDef) spdef =3D NULL; virStorageVolPtr vol =3D NULL; virStorageVolPtr dup_vol =3D NULL; char *key =3D NULL; @@ -2036,7 +2036,6 @@ phypStorageVolCreateXML(virStoragePoolPtr pool, =20 err: VIR_FREE(key); - virStoragePoolDefFree(spdef); virObjectUnref(vol); return NULL; } diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index 48b4c5127f..dcdd52bbbf 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -690,7 +690,7 @@ storagePoolCreateXML(virConnectPtr conn, const char *xml, unsigned int flags) { - virStoragePoolDefPtr newDef; + VIR_AUTOPTR(virStoragePoolDef) newDef =3D NULL; virStoragePoolObjPtr obj =3D NULL; virStoragePoolDefPtr def; virStoragePoolPtr pool =3D NULL; @@ -762,7 +762,6 @@ storagePoolCreateXML(virConnectPtr conn, =20 cleanup: VIR_FREE(stateFile); - virStoragePoolDefFree(newDef); virObjectEventStateQueue(driver->storageEventState, event); virStoragePoolObjEndAPI(&obj); return pool; @@ -779,9 +778,10 @@ storagePoolDefineXML(virConnectPtr conn, const char *xml, unsigned int flags) { - virStoragePoolDefPtr newDef; + VIR_AUTOPTR(virStoragePoolDef) newDef =3D NULL; virStoragePoolObjPtr obj =3D NULL; virStoragePoolDefPtr def; + virStoragePoolDefPtr objNewDef; virStoragePoolPtr pool =3D NULL; virObjectEventPtr event =3D NULL; =20 @@ -801,14 +801,14 @@ storagePoolDefineXML(virConnectPtr conn, =20 if (!(obj =3D virStoragePoolObjAssignDef(driver->pools, newDef, false)= )) goto cleanup; - newDef =3D virStoragePoolObjGetNewDef(obj); + newDef =3D NULL; + objNewDef =3D virStoragePoolObjGetNewDef(obj); def =3D virStoragePoolObjGetDef(obj); =20 - if (virStoragePoolObjSaveDef(driver, obj, newDef ? newDef : def) < 0) { + if (virStoragePoolObjSaveDef(driver, obj, objNewDef ? objNewDef : def)= < 0) { virStoragePoolObjRemove(driver->pools, obj); virObjectUnref(obj); obj =3D NULL; - newDef =3D NULL; goto cleanup; } =20 @@ -818,11 +818,9 @@ storagePoolDefineXML(virConnectPtr conn, =20 VIR_INFO("Defining storage pool '%s'", def->name); pool =3D virGetStoragePool(conn, def->name, def->uuid, NULL, NULL); - newDef =3D NULL; =20 cleanup: virObjectEventStateQueue(driver->storageEventState, event); - virStoragePoolDefFree(newDef); virStoragePoolObjEndAPI(&obj); return pool; } diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 44ae711b5a..ff773f39b0 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -4474,7 +4474,7 @@ testStoragePoolCreateXML(virConnectPtr conn, unsigned int flags) { testDriverPtr privconn =3D conn->privateData; - virStoragePoolDefPtr newDef; + VIR_AUTOPTR(virStoragePoolDef) newDef =3D NULL; virStoragePoolObjPtr obj =3D NULL; virStoragePoolDefPtr def; virStoragePoolPtr pool =3D NULL; @@ -4527,7 +4527,6 @@ testStoragePoolCreateXML(virConnectPtr conn, pool =3D virGetStoragePool(conn, def->name, def->uuid, NULL, NULL); =20 cleanup: - virStoragePoolDefFree(newDef); virObjectEventStateQueue(privconn->eventState, event); virStoragePoolObjEndAPI(&obj); virObjectUnlock(privconn); @@ -4541,7 +4540,7 @@ testStoragePoolDefineXML(virConnectPtr conn, unsigned int flags) { testDriverPtr privconn =3D conn->privateData; - virStoragePoolDefPtr newDef; + VIR_AUTOPTR(virStoragePoolDef) newDef =3D NULL; virStoragePoolObjPtr obj =3D NULL; virStoragePoolDefPtr def; virStoragePoolPtr pool =3D NULL; @@ -4576,7 +4575,6 @@ testStoragePoolDefineXML(virConnectPtr conn, pool =3D virGetStoragePool(conn, def->name, def->uuid, NULL, NULL); =20 cleanup: - virStoragePoolDefFree(newDef); virObjectEventStateQueue(privconn->eventState, event); virStoragePoolObjEndAPI(&obj); virObjectUnlock(privconn); diff --git a/tests/storagebackendsheepdogtest.c b/tests/storagebackendsheep= dogtest.c index 540f89c3ab..03ddf76d65 100644 --- a/tests/storagebackendsheepdogtest.c +++ b/tests/storagebackendsheepdogtest.c @@ -59,7 +59,7 @@ test_node_info_parser(const void *opaque) collie_test test =3D data->data; int ret =3D -1; char *output =3D NULL; - virStoragePoolDefPtr pool =3D NULL; + VIR_AUTOPTR(virStoragePoolDef) pool =3D NULL; =20 if (!(pool =3D virStoragePoolDefParseFile(data->poolxml))) goto cleanup; @@ -82,7 +82,6 @@ test_node_info_parser(const void *opaque) =20 cleanup: VIR_FREE(output); - virStoragePoolDefFree(pool); return ret; } =20 @@ -93,7 +92,7 @@ test_vdi_list_parser(const void *opaque) collie_test test =3D data->data; int ret =3D -1; char *output =3D NULL; - virStoragePoolDefPtr pool =3D NULL; + VIR_AUTOPTR(virStoragePoolDef) pool =3D NULL; VIR_AUTOPTR(virStorageVolDef) vol =3D NULL; =20 if (!(pool =3D virStoragePoolDefParseFile(data->poolxml))) @@ -120,7 +119,6 @@ test_vdi_list_parser(const void *opaque) =20 cleanup: VIR_FREE(output); - virStoragePoolDefFree(pool); return ret; } =20 diff --git a/tests/storagepoolxml2argvtest.c b/tests/storagepoolxml2argvtes= t.c index e7f42dc0f8..2dd87ab731 100644 --- a/tests/storagepoolxml2argvtest.c +++ b/tests/storagepoolxml2argvtest.c @@ -24,30 +24,35 @@ testCompareXMLToArgvFiles(bool shouldFail, { VIR_AUTOFREE(char *) actualCmdline =3D NULL; VIR_AUTOFREE(char *) src =3D NULL; + VIR_AUTOPTR(virStoragePoolDef) def =3D NULL; + int defType; int ret =3D -1; virCommandPtr cmd =3D NULL; - virStoragePoolDefPtr def =3D NULL; virStoragePoolObjPtr pool =3D NULL; + virStoragePoolDefPtr objDef; =20 if (!(def =3D virStoragePoolDefParseFile(poolxml))) goto cleanup; + defType =3D def->type; =20 - switch ((virStoragePoolType)def->type) { + switch ((virStoragePoolType)defType) { case VIR_STORAGE_POOL_FS: case VIR_STORAGE_POOL_NETFS: + if (!(pool =3D virStoragePoolObjNew())) { - VIR_TEST_DEBUG("pool type %d alloc pool obj fails\n", def->typ= e); - virStoragePoolDefFree(def); + VIR_TEST_DEBUG("pool type %d alloc pool obj fails\n", defType); goto cleanup; } virStoragePoolObjSetDef(pool, def); + def =3D NULL; + objDef =3D virStoragePoolObjGetDef(pool); =20 if (!(src =3D virStorageBackendFileSystemGetPoolSource(pool))) { - VIR_TEST_DEBUG("pool type %d has no pool source\n", def->type); + VIR_TEST_DEBUG("pool type %d has no pool source\n", defType); goto cleanup; } =20 - cmd =3D virStorageBackendFileSystemMountCmd(MOUNT, def, src); + cmd =3D virStorageBackendFileSystemMountCmd(MOUNT, objDef, src); break; =20 case VIR_STORAGE_POOL_LOGICAL: @@ -67,12 +72,12 @@ testCompareXMLToArgvFiles(bool shouldFail, case VIR_STORAGE_POOL_VSTORAGE: case VIR_STORAGE_POOL_LAST: default: - VIR_TEST_DEBUG("pool type %d has no xml2argv test\n", def->type); + VIR_TEST_DEBUG("pool type %d has no xml2argv test\n", defType); goto cleanup; }; =20 if (!(actualCmdline =3D virCommandToString(cmd, false))) { - VIR_TEST_DEBUG("pool type %d failed to get commandline\n", def->ty= pe); + VIR_TEST_DEBUG("pool type %d failed to get commandline\n", defType= ); goto cleanup; } =20 diff --git a/tests/storagepoolxml2xmltest.c b/tests/storagepoolxml2xmltest.c index acb15f3a2c..c8d5c41cd4 100644 --- a/tests/storagepoolxml2xmltest.c +++ b/tests/storagepoolxml2xmltest.c @@ -20,7 +20,7 @@ testCompareXMLToXMLFiles(const char *inxml, const char *o= utxml) { char *actual =3D NULL; int ret =3D -1; - virStoragePoolDefPtr dev =3D NULL; + VIR_AUTOPTR(virStoragePoolDef) dev =3D NULL; =20 if (!(dev =3D virStoragePoolDefParseFile(inxml))) goto fail; @@ -35,7 +35,6 @@ testCompareXMLToXMLFiles(const char *inxml, const char *o= utxml) =20 fail: VIR_FREE(actual); - virStoragePoolDefFree(dev); return ret; } =20 diff --git a/tests/storagevolxml2argvtest.c b/tests/storagevolxml2argvtest.c index 8e19f10b73..2acbf567ca 100644 --- a/tests/storagevolxml2argvtest.c +++ b/tests/storagevolxml2argvtest.c @@ -50,18 +50,19 @@ testCompareXMLToArgvFiles(bool shouldFail, =20 VIR_AUTOPTR(virStorageVolDef) vol =3D NULL; VIR_AUTOPTR(virStorageVolDef) inputvol =3D NULL; - virStoragePoolDefPtr def =3D NULL; - virStoragePoolDefPtr inputpool =3D NULL; + VIR_AUTOPTR(virStoragePoolDef) inputpool =3D NULL; + VIR_AUTOPTR(virStoragePoolDef) def =3D NULL; virStoragePoolObjPtr obj =3D NULL; + virStoragePoolDefPtr objDef; =20 if (!(def =3D virStoragePoolDefParseFile(poolxml))) goto cleanup; =20 - if (!(obj =3D virStoragePoolObjNew())) { - virStoragePoolDefFree(def); + if (!(obj =3D virStoragePoolObjNew())) goto cleanup; - } virStoragePoolObjSetDef(obj, def); + def =3D NULL; + objDef =3D virStoragePoolObjGetDef(obj); =20 if (inputpoolxml) { if (!(inputpool =3D virStoragePoolDefParseFile(inputpoolxml))) @@ -71,14 +72,14 @@ testCompareXMLToArgvFiles(bool shouldFail, if (inputvolxml) parse_flags |=3D VIR_VOL_XML_PARSE_NO_CAPACITY; =20 - if (!(vol =3D virStorageVolDefParseFile(def, volxml, parse_flags))) + if (!(vol =3D virStorageVolDefParseFile(objDef, volxml, parse_flags))) goto cleanup; =20 if (inputvolxml && !(inputvol =3D virStorageVolDefParseFile(inputpool, inputvolxml, 0= ))) goto cleanup; =20 - testSetVolumeType(vol, def); + testSetVolumeType(vol, objDef); testSetVolumeType(inputvol, inputpool); =20 /* Using an input file for encryption requires a multi-step process @@ -139,7 +140,6 @@ testCompareXMLToArgvFiles(bool shouldFail, ret =3D 0; =20 cleanup: - virStoragePoolDefFree(inputpool); virCommandFree(cmd); VIR_FREE(actualCmdline); virStoragePoolObjEndAPI(&obj); diff --git a/tests/storagevolxml2xmltest.c b/tests/storagevolxml2xmltest.c index 95e205a0ab..cb78bd5b28 100644 --- a/tests/storagevolxml2xmltest.c +++ b/tests/storagevolxml2xmltest.c @@ -19,7 +19,7 @@ testCompareXMLToXMLFiles(const char *poolxml, const char = *inxml, { char *actual =3D NULL; int ret =3D -1; - virStoragePoolDefPtr pool =3D NULL; + VIR_AUTOPTR(virStoragePoolDef) pool =3D NULL; VIR_AUTOPTR(virStorageVolDef) dev =3D NULL; =20 if (!(pool =3D virStoragePoolDefParseFile(poolxml))) @@ -38,7 +38,6 @@ testCompareXMLToXMLFiles(const char *poolxml, const char = *inxml, =20 fail: VIR_FREE(actual); - virStoragePoolDefFree(pool); return ret; } =20 --=20 2.20.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list