From nobody Mon Feb 9 00:20:10 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 1549651105277290.9989986912641; Fri, 8 Feb 2019 10:38:25 -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 BA3C6C0C0568; Fri, 8 Feb 2019 18:38:21 +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 6B443BA53; Fri, 8 Feb 2019 18:38:21 +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 12FEF18033B4; Fri, 8 Feb 2019 18:38:21 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x18IbdPG007601 for ; Fri, 8 Feb 2019 13:37:39 -0500 Received: by smtp.corp.redhat.com (Postfix) id D8F9317A66; Fri, 8 Feb 2019 18:37:39 +0000 (UTC) Received: from unknown0050b6a41c42.attlocal.net.com (ovpn-117-20.phx2.redhat.com [10.3.117.20]) by smtp.corp.redhat.com (Postfix) with ESMTP id 67CF360BE0; Fri, 8 Feb 2019 18:37:39 +0000 (UTC) From: John Ferlan To: libvir-list@redhat.com Date: Fri, 8 Feb 2019 13:37:05 -0500 Message-Id: <20190208183726.30903-12-jferlan@redhat.com> In-Reply-To: <20190208183726.30903-1-jferlan@redhat.com> References: <20190208183726.30903-1-jferlan@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-loop: libvir-list@redhat.com Cc: Erik Skultety Subject: [libvirt] [PATCH v2 11/32] storage: Use VIR_AUTOPTR(virCommand) 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.32]); Fri, 08 Feb 2019 18:38:24 +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. Signed-off-by: John Ferlan Reviewed-by: Erik Skultety Reviewed-by: J=C3=A1n Tomko --- src/storage/storage_backend_disk.c | 85 +++++++++------------ src/storage/storage_backend_fs.c | 39 +++------- src/storage/storage_backend_logical.c | 101 +++++++------------------ src/storage/storage_backend_sheepdog.c | 59 ++++++--------- src/storage/storage_backend_vstorage.c | 14 +--- src/storage/storage_backend_zfs.c | 47 +++--------- src/storage/storage_driver.c | 3 +- src/storage/storage_util.c | 34 +++------ src/util/virstoragefile.c | 67 +++++++--------- tests/storagepoolxml2argvtest.c | 7 +- tests/storagevolxml2argvtest.c | 6 +- tests/virstoragetest.c | 6 +- 12 files changed, 156 insertions(+), 312 deletions(-) diff --git a/src/storage/storage_backend_disk.c b/src/storage/storage_backe= nd_disk.c index 061c494b7d..4fb38178b2 100644 --- a/src/storage/storage_backend_disk.c +++ b/src/storage/storage_backend_disk.c @@ -356,12 +356,12 @@ virStorageBackendDiskReadPartitions(virStoragePoolObj= Ptr pool, =20 virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); char *parthelper_path; - virCommandPtr cmd; struct virStorageBackendDiskPoolVolData cbdata =3D { .pool =3D pool, .vol =3D vol, }; int ret; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 if (!(parthelper_path =3D virFileFindResource("libvirt_parthelper", abs_topbuilddir "/src", @@ -392,7 +392,6 @@ virStorageBackendDiskReadPartitions(virStoragePoolObjPt= r pool, 6, virStorageBackendDiskMakeVol, &cbdata); - virCommandFree(cmd); VIR_FREE(parthelper_path); return ret; } @@ -421,8 +420,8 @@ virStorageBackendDiskReadGeometry(virStoragePoolObjPtr = pool) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); char *parthelper_path; - virCommandPtr cmd; int ret; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 if (!(parthelper_path =3D virFileFindResource("libvirt_parthelper", abs_topbuilddir "/src", @@ -438,7 +437,6 @@ virStorageBackendDiskReadGeometry(virStoragePoolObjPtr = pool) 3, virStorageBackendDiskMakePoolGeometry, pool); - virCommandFree(cmd); VIR_FREE(parthelper_path); return ret; } @@ -502,51 +500,40 @@ virStorageBackendDiskBuildPool(virStoragePoolObjPtr p= ool, virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); int format =3D def->source.format; const char *fmt; - bool ok_to_mklabel =3D false; - int ret =3D -1; - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 virCheckFlags(VIR_STORAGE_POOL_BUILD_OVERWRITE | - VIR_STORAGE_POOL_BUILD_NO_OVERWRITE, ret); + VIR_STORAGE_POOL_BUILD_NO_OVERWRITE, -1); =20 - VIR_EXCLUSIVE_FLAGS_GOTO(VIR_STORAGE_POOL_BUILD_OVERWRITE, - VIR_STORAGE_POOL_BUILD_NO_OVERWRITE, - error); + VIR_EXCLUSIVE_FLAGS_RET(VIR_STORAGE_POOL_BUILD_OVERWRITE, + VIR_STORAGE_POOL_BUILD_NO_OVERWRITE, + -1); =20 fmt =3D virStoragePoolFormatDiskTypeToString(format); - if (flags & VIR_STORAGE_POOL_BUILD_OVERWRITE) { - ok_to_mklabel =3D true; - } else { - if (virStorageBackendDeviceIsEmpty(def->source.devices[0].path, - fmt, true)) - ok_to_mklabel =3D true; - } + if (!(flags & VIR_STORAGE_POOL_BUILD_OVERWRITE) && + !(virStorageBackendDeviceIsEmpty(def->source.devices[0].path, + fmt, true))) + return -1; =20 - if (ok_to_mklabel) { - if (virStorageBackendZeroPartitionTable(def->source.devices[0].pat= h, - 1024 * 1024) < 0) - goto error; + if (virStorageBackendZeroPartitionTable(def->source.devices[0].path, + 1024 * 1024) < 0) + return -1; =20 - /* eg parted /dev/sda mklabel --script msdos */ - if (format =3D=3D VIR_STORAGE_POOL_DISK_UNKNOWN) - format =3D def->source.format =3D VIR_STORAGE_POOL_DISK_DOS; - if (format =3D=3D VIR_STORAGE_POOL_DISK_DOS) - fmt =3D "msdos"; - else - fmt =3D virStoragePoolFormatDiskTypeToString(format); - - cmd =3D virCommandNewArgList(PARTED, - def->source.devices[0].path, - "mklabel", - "--script", - fmt, - NULL); - ret =3D virCommandRun(cmd, NULL); - } + /* eg parted /dev/sda mklabel --script msdos */ + if (format =3D=3D VIR_STORAGE_POOL_DISK_UNKNOWN) + format =3D def->source.format =3D VIR_STORAGE_POOL_DISK_DOS; + if (format =3D=3D VIR_STORAGE_POOL_DISK_DOS) + fmt =3D "msdos"; + else + fmt =3D virStoragePoolFormatDiskTypeToString(format); =20 - error: - virCommandFree(cmd); - return ret; + cmd =3D virCommandNewArgList(PARTED, + def->source.devices[0].path, + "mklabel", + "--script", + fmt, + NULL); + return virCommandRun(cmd, NULL); } =20 =20 @@ -787,9 +774,9 @@ virStorageBackendDiskDeleteVol(virStoragePoolObjPtr poo= l, virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); char *src_path =3D def->source.devices[0].path; char *srcname =3D last_component(src_path); - virCommandPtr cmd =3D NULL; bool isDevMapperDevice; int rc =3D -1; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 virCheckFlags(0, -1); =20 @@ -862,7 +849,6 @@ virStorageBackendDiskDeleteVol(virStoragePoolObjPtr poo= l, rc =3D 0; cleanup: VIR_FREE(devpath); - virCommandFree(cmd); return rc; } =20 @@ -876,11 +862,13 @@ virStorageBackendDiskCreateVol(virStoragePoolObjPtr p= ool, unsigned long long startOffset =3D 0, endOffset =3D 0; virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); virErrorPtr save_err; - virCommandPtr cmd =3D virCommandNewArgList(PARTED, - def->source.devices[0].path, - "mkpart", - "--script", - NULL); + VIR_AUTOPTR(virCommand) cmd =3D NULL; + + cmd =3D virCommandNewArgList(PARTED, + def->source.devices[0].path, + "mkpart", + "--script", + NULL); =20 if (vol->target.encryption && vol->target.encryption->format !=3D VIR_STORAGE_ENCRYPTION_FORMAT_= LUKS) { @@ -934,7 +922,6 @@ virStorageBackendDiskCreateVol(virStoragePoolObjPtr poo= l, =20 cleanup: VIR_FREE(partFormat); - virCommandFree(cmd); return res; =20 error: diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend= _fs.c index 420601a303..0436c25af0 100644 --- a/src/storage/storage_backend_fs.c +++ b/src/storage/storage_backend_fs.c @@ -95,8 +95,6 @@ virStorageBackendFileSystemNetFindPoolSourcesFunc(char **= const groups, static int virStorageBackendFileSystemNetFindNFSPoolSources(virNetfsDiscoverState *st= ate) { - int ret =3D -1; - /* * # showmount --no-headers -e HOSTNAME * /tmp * @@ -112,7 +110,7 @@ virStorageBackendFileSystemNetFindNFSPoolSources(virNet= fsDiscoverState *state) 1 }; =20 - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 cmd =3D virCommandNewArgList(SHOWMOUNT, "--no-headers", @@ -120,16 +118,9 @@ virStorageBackendFileSystemNetFindNFSPoolSources(virNe= tfsDiscoverState *state) state->host, NULL); =20 - if (virCommandRunRegex(cmd, 1, regexes, vars, - virStorageBackendFileSystemNetFindPoolSourcesFu= nc, - state, NULL, NULL) < 0) - goto cleanup; - - ret =3D 0; - - cleanup: - virCommandFree(cmd); - return ret; + return virCommandRunRegex(cmd, 1, regexes, vars, + virStorageBackendFileSystemNetFindPoolSource= sFunc, + state, NULL, NULL); } =20 =20 @@ -309,9 +300,9 @@ virStorageBackendFileSystemMount(virStoragePoolObjPtr p= ool) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); char *src =3D NULL; - virCommandPtr cmd =3D NULL; int ret =3D -1; int rc; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 if (virStorageBackendFileSystemIsValid(pool) < 0) return -1; @@ -334,7 +325,6 @@ virStorageBackendFileSystemMount(virStoragePoolObjPtr p= ool) =20 ret =3D 0; cleanup: - virCommandFree(cmd); VIR_FREE(src); return ret; } @@ -376,9 +366,8 @@ static int virStorageBackendFileSystemStop(virStoragePoolObjPtr pool) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; - int ret =3D -1; int rc; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 if (virStorageBackendFileSystemIsValid(pool) < 0) return -1; @@ -388,13 +377,7 @@ virStorageBackendFileSystemStop(virStoragePoolObjPtr p= ool) return rc; =20 cmd =3D virCommandNewArgList(UMOUNT, def->target.path, NULL); - if (virCommandRun(cmd, NULL) < 0) - goto cleanup; - - ret =3D 0; - cleanup: - virCommandFree(cmd); - return ret; + return virCommandRun(cmd, NULL); } #endif /* WITH_STORAGE_FS */ =20 @@ -432,8 +415,7 @@ static int virStorageBackendExecuteMKFS(const char *device, const char *format) { - int ret =3D 0; - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 cmd =3D virCommandNewArgList(MKFS, "-t", format, NULL); =20 @@ -456,11 +438,10 @@ virStorageBackendExecuteMKFS(const char *device, _("Failed to make filesystem of " "type '%s' on device '%s'"), format, device); - ret =3D -1; + return -1; } =20 - virCommandFree(cmd); - return ret; + return 0; } #else /* #ifdef MKFS */ static int diff --git a/src/storage/storage_backend_logical.c b/src/storage/storage_ba= ckend_logical.c index fd95bd0d48..9ebc560a46 100644 --- a/src/storage/storage_backend_logical.c +++ b/src/storage/storage_backend_logical.c @@ -48,13 +48,11 @@ static int virStorageBackendLogicalSetActive(virStoragePoolObjPtr pool, bool on) { - int ret; virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D virStorageBackendLogicalChangeCmd(VGCHANGE, def,= on); + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 - ret =3D virCommandRun(cmd, NULL); - virCommandFree(cmd); - return ret; + cmd =3D virStorageBackendLogicalChangeCmd(VGCHANGE, def, on); + return virCommandRun(cmd, NULL); } =20 =20 @@ -67,11 +65,11 @@ virStorageBackendLogicalSetActive(virStoragePoolObjPtr = pool, static void virStorageBackendLogicalRemoveDevice(const char *path) { - virCommandPtr cmd =3D virCommandNewArgList(PVREMOVE, path, NULL); + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 + cmd =3D virCommandNewArgList(PVREMOVE, path, NULL); if (virCommandRun(cmd, NULL) < 0) VIR_INFO("Failed to pvremove logical device '%s'", path); - virCommandFree(cmd); } =20 =20 @@ -85,8 +83,7 @@ virStorageBackendLogicalRemoveDevice(const char *path) static int virStorageBackendLogicalInitializeDevice(const char *path) { - int ret =3D -1; - virCommandPtr pvcmd =3D NULL; + VIR_AUTOPTR(virCommand) pvcmd =3D NULL; =20 /* * LVM requires that the first sector is blanked if using @@ -101,15 +98,7 @@ virStorageBackendLogicalInitializeDevice(const char *pa= th) * clever enough todo this for us :-( */ pvcmd =3D virCommandNewArgList(PVCREATE, path, NULL); - if (virCommandRun(pvcmd, NULL) < 0) - goto cleanup; - - ret =3D 0; - - cleanup: - virCommandFree(pvcmd); - - return ret; + return virCommandRun(pvcmd, NULL); } =20 =20 @@ -426,13 +415,12 @@ virStorageBackendLogicalFindLVs(virStoragePoolObjPtr = pool, int vars[] =3D { VIR_STORAGE_VOL_LOGICAL_REGEX_COUNT }; - int ret =3D -1; - virCommandPtr cmd; virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); struct virStorageBackendLogicalPoolVolData cbdata =3D { .pool =3D pool, .vol =3D vol, }; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 cmd =3D virCommandNewArgList(LVS, "--separator", "#", @@ -444,20 +432,9 @@ virStorageBackendLogicalFindLVs(virStoragePoolObjPtr p= ool, "lv_name,origin,uuid,devices,segtype,stripe= s,seg_size,vg_extent_size,size,lv_attr", def->source.name, NULL); - if (virCommandRunRegex(cmd, - 1, - regexes, - vars, - virStorageBackendLogicalMakeVol, - &cbdata, - "lvs", - NULL) < 0) - goto cleanup; - - ret =3D 0; - cleanup: - virCommandFree(cmd); - return ret; + return virCommandRunRegex(cmd, 1, regexes, vars, + virStorageBackendLogicalMakeVol, + &cbdata, "lvs", NULL); } =20 static int @@ -550,8 +527,7 @@ virStorageBackendLogicalGetPoolSources(virStoragePoolSo= urceListPtr sourceList) int vars[] =3D { 2 }; - virCommandPtr cmd; - int ret =3D -1; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 /* * NOTE: ignoring errors here; this is just to "touch" any logical vol= umes @@ -567,15 +543,9 @@ virStorageBackendLogicalGetPoolSources(virStoragePoolS= ourceListPtr sourceList) "--noheadings", "-o", "pv_name,vg_name", NULL, NULL); - if (virCommandRunRegex(cmd, 1, regexes, vars, - virStorageBackendLogicalFindPoolSourcesFunc, - sourceList, "pvs", NULL) < 0) - goto cleanup; - ret =3D 0; - - cleanup: - virCommandFree(cmd); - return ret; + return virCommandRunRegex(cmd, 1, regexes, vars, + virStorageBackendLogicalFindPoolSourcesFunc, + sourceList, "pvs", NULL); } =20 =20 @@ -737,9 +707,9 @@ virStorageBackendLogicalBuildPool(virStoragePoolObjPtr = pool, unsigned int flags) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr vgcmd =3D NULL; int ret =3D -1; size_t i =3D 0; + VIR_AUTOPTR(virCommand) vgcmd =3D NULL; =20 virCheckFlags(VIR_STORAGE_POOL_BUILD_OVERWRITE | VIR_STORAGE_POOL_BUILD_NO_OVERWRITE, ret); @@ -773,8 +743,6 @@ virStorageBackendLogicalBuildPool(virStoragePoolObjPtr = pool, ret =3D 0; =20 cleanup: - virCommandFree(vgcmd); - /* On any failure, run through the devices that had pvcreate run in * in order to run pvremove on the device; otherwise, subsequent build * will fail if a pvcreate had been run already. */ @@ -805,8 +773,8 @@ virStorageBackendLogicalRefreshPool(virStoragePoolObjPt= r pool) 2 }; virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; int ret =3D -1; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 virWaitForDevices(); =20 @@ -838,7 +806,6 @@ virStorageBackendLogicalRefreshPool(virStoragePoolObjPt= r pool) ret =3D 0; =20 cleanup: - virCommandFree(cmd); if (ret < 0) virStoragePoolObjClearVols(pool); return ret; @@ -863,9 +830,8 @@ virStorageBackendLogicalDeletePool(virStoragePoolObjPtr= pool, unsigned int flags) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; size_t i; - int ret =3D -1; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 virCheckFlags(0, -1); =20 @@ -874,17 +840,13 @@ virStorageBackendLogicalDeletePool(virStoragePoolObjP= tr pool, "-f", def->source.name, NULL); if (virCommandRun(cmd, NULL) < 0) - goto cleanup; + return -1; =20 /* now remove the pv devices and clear them out */ for (i =3D 0; i < def->source.ndevice; i++) virStorageBackendLogicalRemoveDevice(def->source.devices[i].path); =20 - ret =3D 0; - - cleanup: - virCommandFree(cmd); - return ret; + return 0; } =20 =20 @@ -893,10 +855,8 @@ virStorageBackendLogicalDeleteVol(virStoragePoolObjPtr= pool ATTRIBUTE_UNUSED, virStorageVolDefPtr vol, unsigned int flags) { - int ret =3D -1; - - virCommandPtr lvchange_cmd =3D NULL; - virCommandPtr lvremove_cmd =3D NULL; + VIR_AUTOPTR(virCommand) lvchange_cmd =3D NULL; + VIR_AUTOPTR(virCommand) lvremove_cmd =3D NULL; =20 virCheckFlags(0, -1); =20 @@ -907,18 +867,14 @@ virStorageBackendLogicalDeleteVol(virStoragePoolObjPt= r pool ATTRIBUTE_UNUSED, =20 if (virCommandRun(lvremove_cmd, NULL) < 0) { if (virCommandRun(lvchange_cmd, NULL) < 0) { - goto cleanup; + return -1; } else { if (virCommandRun(lvremove_cmd, NULL) < 0) - goto cleanup; + return -1; } } =20 - ret =3D 0; - cleanup: - virCommandFree(lvchange_cmd); - virCommandFree(lvremove_cmd); - return ret; + return 0; } =20 =20 @@ -926,9 +882,8 @@ static int virStorageBackendLogicalLVCreate(virStorageVolDefPtr vol, virStoragePoolDefPtr def) { - int ret; unsigned long long capacity =3D vol->target.capacity; - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 if (vol->target.encryption && vol->target.encryption->format !=3D VIR_STORAGE_ENCRYPTION_FORMAT_= LUKS) { @@ -961,9 +916,7 @@ virStorageBackendLogicalLVCreate(virStorageVolDefPtr vo= l, else virCommandAddArg(cmd, def->source.name); =20 - ret =3D virCommandRun(cmd, NULL); - virCommandFree(cmd); - return ret; + return virCommandRun(cmd, NULL); } =20 =20 diff --git a/src/storage/storage_backend_sheepdog.c b/src/storage/storage_b= ackend_sheepdog.c index 9ab318bb4d..73dcfb2f40 100644 --- a/src/storage/storage_backend_sheepdog.c +++ b/src/storage/storage_backend_sheepdog.c @@ -141,8 +141,9 @@ virStorageBackendSheepdogRefreshAllVol(virStoragePoolOb= jPtr pool) size_t i; VIR_AUTOPTR(virString) lines =3D NULL; VIR_AUTOPTR(virString) cells =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 - virCommandPtr cmd =3D virCommandNewArgList(SHEEPDOGCLI, "vdi", "list",= "-r", NULL); + cmd =3D virCommandNewArgList(SHEEPDOGCLI, "vdi", "list", "-r", NULL); virStorageBackendSheepdogAddHostArg(cmd, pool); virCommandSetOutputBuffer(cmd, &output); if (virCommandRun(cmd, NULL) < 0) @@ -172,7 +173,6 @@ virStorageBackendSheepdogRefreshAllVol(virStoragePoolOb= jPtr pool) ret =3D 0; =20 cleanup: - virCommandFree(cmd); VIR_FREE(output); return ret; } @@ -183,7 +183,7 @@ virStorageBackendSheepdogRefreshPool(virStoragePoolObjP= tr pool) { int ret =3D -1; char *output =3D NULL; - virCommandPtr cmd; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 cmd =3D virCommandNewArgList(SHEEPDOGCLI, "node", "info", "-r", NULL); virStorageBackendSheepdogAddHostArg(cmd, pool); @@ -197,7 +197,6 @@ virStorageBackendSheepdogRefreshPool(virStoragePoolObjP= tr pool) =20 ret =3D virStorageBackendSheepdogRefreshAllVol(pool); cleanup: - virCommandFree(cmd); VIR_FREE(output); return ret; } @@ -208,14 +207,13 @@ virStorageBackendSheepdogDeleteVol(virStoragePoolObjP= tr pool, virStorageVolDefPtr vol, unsigned int flags) { + VIR_AUTOPTR(virCommand) cmd =3D NULL; + virCheckFlags(0, -1); =20 - virCommandPtr cmd =3D virCommandNewArgList(SHEEPDOGCLI, "vdi", "delete= ", vol->name, NULL); + cmd =3D virCommandNewArgList(SHEEPDOGCLI, "vdi", "delete", vol->name, = NULL); virStorageBackendSheepdogAddHostArg(cmd, pool); - int ret =3D virCommandRun(cmd, NULL); - - virCommandFree(cmd); - return ret; + return virCommandRun(cmd, NULL); } =20 =20 @@ -252,27 +250,20 @@ virStorageBackendSheepdogBuildVol(virStoragePoolObjPt= r pool, virStorageVolDefPtr vol, unsigned int flags) { - int ret =3D -1; - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 virCheckFlags(0, -1); =20 if (!vol->target.capacity) { virReportError(VIR_ERR_NO_SUPPORT, "%s", _("volume capacity required for this pool")); - goto cleanup; + return -1; } =20 cmd =3D virCommandNewArgList(SHEEPDOGCLI, "vdi", "create", vol->name, = NULL); virCommandAddArgFormat(cmd, "%llu", vol->target.capacity); virStorageBackendSheepdogAddHostArg(cmd, pool); - if (virCommandRun(cmd, NULL) < 0) - goto cleanup; - - ret =3D 0; - cleanup: - virCommandFree(cmd); - return ret; + return virCommandRun(cmd, NULL); } =20 =20 @@ -341,33 +332,30 @@ static int virStorageBackendSheepdogRefreshVol(virStoragePoolObjPtr pool, virStorageVolDefPtr vol) { - int ret; char *output =3D NULL; virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D virCommandNewArgList(SHEEPDOGCLI, "vdi", "list",= vol->name, "-r", NULL); + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 + cmd =3D virCommandNewArgList(SHEEPDOGCLI, "vdi", "list", vol->name, "-= r", NULL); virStorageBackendSheepdogAddHostArg(cmd, pool); virCommandSetOutputBuffer(cmd, &output); - ret =3D virCommandRun(cmd, NULL); - - if (ret < 0) - goto cleanup; + if (virCommandRun(cmd, NULL) < 0) + return -1; =20 - if ((ret =3D virStorageBackendSheepdogParseVdiList(vol, output)) < 0) - goto cleanup; + if (virStorageBackendSheepdogParseVdiList(vol, output) < 0) + return -1; =20 vol->type =3D VIR_STORAGE_VOL_NETWORK; =20 VIR_FREE(vol->key); if (virAsprintf(&vol->key, "%s/%s", def->source.name, vol->name) < 0) - goto cleanup; + return -1; =20 VIR_FREE(vol->target.path); ignore_value(VIR_STRDUP(vol->target.path, vol->name)); - cleanup: - virCommandFree(cmd); - return ret; + + return 0; } =20 =20 @@ -377,15 +365,14 @@ virStorageBackendSheepdogResizeVol(virStoragePoolObjP= tr pool, unsigned long long capacity, unsigned int flags) { + VIR_AUTOPTR(virCommand) cmd =3D NULL; + virCheckFlags(0, -1); =20 - virCommandPtr cmd =3D virCommandNewArgList(SHEEPDOGCLI, "vdi", "resize= ", vol->name, NULL); + cmd =3D virCommandNewArgList(SHEEPDOGCLI, "vdi", "resize", vol->name, = NULL); virCommandAddArgFormat(cmd, "%llu", capacity); virStorageBackendSheepdogAddHostArg(cmd, pool); - int ret =3D virCommandRun(cmd, NULL); - - virCommandFree(cmd); - return ret; + return virCommandRun(cmd, NULL); } =20 =20 diff --git a/src/storage/storage_backend_vstorage.c b/src/storage/storage_b= ackend_vstorage.c index 0a9abd446b..8c5becd4c4 100644 --- a/src/storage/storage_backend_vstorage.c +++ b/src/storage/storage_backend_vstorage.c @@ -39,10 +39,10 @@ virStorageBackendVzPoolStart(virStoragePoolObjPtr pool) { int ret =3D -1; virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; char *grp_name =3D NULL; char *usr_name =3D NULL; char *mode =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 /* Check the permissions */ if (def->target.perms.mode =3D=3D (mode_t)-1) @@ -75,7 +75,6 @@ virStorageBackendVzPoolStart(virStoragePoolObjPtr pool) ret =3D 0; =20 cleanup: - virCommandFree(cmd); VIR_FREE(mode); VIR_FREE(grp_name); VIR_FREE(usr_name); @@ -125,22 +124,15 @@ static int virStorageBackendVzPoolStop(virStoragePoolObjPtr pool) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; - int ret =3D -1; int rc; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 /* Short-circuit if already unmounted */ if ((rc =3D virStorageBackendVzIsMounted(pool)) !=3D 1) return rc; =20 cmd =3D virCommandNewArgList(UMOUNT, def->target.path, NULL); - if (virCommandRun(cmd, NULL) < 0) - goto cleanup; - - ret =3D 0; - cleanup: - virCommandFree(cmd); - return ret; + return virCommandRun(cmd, NULL); } =20 =20 diff --git a/src/storage/storage_backend_zfs.c b/src/storage/storage_backen= d_zfs.c index 4235b48c14..7d1a3dd2cd 100644 --- a/src/storage/storage_backend_zfs.c +++ b/src/storage/storage_backend_zfs.c @@ -51,9 +51,9 @@ VIR_LOG_INIT("storage.storage_backend_zfs"); static int virStorageBackendZFSVolModeNeeded(void) { - virCommandPtr cmd =3D NULL; int ret =3D -1, exit_code =3D -1; char *error =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 /* 'zfs get' without arguments prints out * usage information to stderr, including @@ -77,7 +77,6 @@ virStorageBackendZFSVolModeNeeded(void) ret =3D 0; =20 cleanup: - virCommandFree(cmd); VIR_FREE(error); return ret; } @@ -179,10 +178,10 @@ virStorageBackendZFSFindVols(virStoragePoolObjPtr poo= l, virStorageVolDefPtr vol) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; char *volumes_list =3D NULL; size_t i; VIR_AUTOPTR(virString) lines =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 /** * $ zfs list -Hp -t volume -o name,volsize -r test @@ -218,7 +217,6 @@ virStorageBackendZFSFindVols(virStoragePoolObjPtr pool, } =20 cleanup: - virCommandFree(cmd); VIR_FREE(volumes_list); =20 return 0; @@ -228,9 +226,9 @@ static int virStorageBackendZFSRefreshPool(virStoragePoolObjPtr pool ATTRIBUTE_UNUSED) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; char *zpool_props =3D NULL; size_t i; + VIR_AUTOPTR(virCommand) cmd =3D NULL; VIR_AUTOPTR(virString) lines =3D NULL; VIR_AUTOPTR(virString) tokens =3D NULL; =20 @@ -292,7 +290,6 @@ virStorageBackendZFSRefreshPool(virStoragePoolObjPtr po= ol ATTRIBUTE_UNUSED) goto cleanup; =20 cleanup: - virCommandFree(cmd); VIR_FREE(zpool_props); =20 return 0; @@ -303,9 +300,9 @@ virStorageBackendZFSCreateVol(virStoragePoolObjPtr pool, virStorageVolDefPtr vol) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; int ret =3D -1; int volmode_needed =3D -1; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 if (vol->target.encryption !=3D NULL) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, @@ -364,7 +361,6 @@ virStorageBackendZFSCreateVol(virStoragePoolObjPtr pool, =20 ret =3D 0; cleanup: - virCommandFree(cmd); return ret; =20 } @@ -374,9 +370,8 @@ virStorageBackendZFSDeleteVol(virStoragePoolObjPtr pool, virStorageVolDefPtr vol, unsigned int flags) { - int ret =3D -1; virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr destroy_cmd =3D NULL; + VIR_AUTOPTR(virCommand) destroy_cmd =3D NULL; =20 virCheckFlags(0, -1); =20 @@ -385,13 +380,7 @@ virStorageBackendZFSDeleteVol(virStoragePoolObjPtr poo= l, virCommandAddArgFormat(destroy_cmd, "%s/%s", def->source.name, vol->name); =20 - if (virCommandRun(destroy_cmd, NULL) < 0) - goto cleanup; - - ret =3D 0; - cleanup: - virCommandFree(destroy_cmd); - return ret; + return virCommandRun(destroy_cmd, NULL); } =20 static int @@ -399,9 +388,8 @@ virStorageBackendZFSBuildPool(virStoragePoolObjPtr pool, unsigned int flags) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; size_t i; - int ret =3D -1; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 virCheckFlags(0, -1); =20 @@ -417,14 +405,7 @@ virStorageBackendZFSBuildPool(virStoragePoolObjPtr poo= l, for (i =3D 0; i < def->source.ndevice; i++) virCommandAddArg(cmd, def->source.devices[i].path); =20 - if (virCommandRun(cmd, NULL) < 0) - goto cleanup; - - ret =3D 0; - - cleanup: - virCommandFree(cmd); - return ret; + return virCommandRun(cmd, NULL); } =20 static int @@ -432,22 +413,14 @@ virStorageBackendZFSDeletePool(virStoragePoolObjPtr p= ool, unsigned int flags) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; - int ret =3D -1; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 virCheckFlags(0, -1); =20 cmd =3D virCommandNewArgList(ZPOOL, "destroy", def->source.name, NULL); =20 - if (virCommandRun(cmd, NULL) < 0) - goto cleanup; - - ret =3D 0; - - cleanup: - virCommandFree(cmd); - return ret; + return virCommandRun(cmd, NULL); } =20 virStorageBackend virStorageBackendZFS =3D { diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index c684f44475..a71a16add1 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -2207,9 +2207,9 @@ static int virStorageBackendPloopRestoreDesc(char *path) { int ret =3D -1; - virCommandPtr cmd =3D NULL; char *refresh_tool =3D NULL; char *desc =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 if (virAsprintf(&desc, "%s/DiskDescriptor.xml", path) < 0) return ret; @@ -2238,7 +2238,6 @@ virStorageBackendPloopRestoreDesc(char *path) =20 cleanup: VIR_FREE(refresh_tool); - virCommandFree(cmd); VIR_FREE(desc); return ret; } diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c index 1770d21f33..fa364941c5 100644 --- a/src/storage/storage_util.c +++ b/src/storage/storage_util.c @@ -617,9 +617,9 @@ storageBackendCreatePloop(virStoragePoolObjPtr pool ATT= RIBUTE_UNUSED, unsigned int flags) { int ret =3D -1; - virCommandPtr cmd =3D NULL; char *create_tool =3D NULL; bool created =3D false; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 virCheckFlags(0, -1); =20 @@ -677,7 +677,6 @@ storageBackendCreatePloop(virStoragePoolObjPtr pool ATT= RIBUTE_UNUSED, created =3D true; ret =3D virCommandRun(cmd, NULL); cleanup: - virCommandFree(cmd); VIR_FREE(create_tool); if (ret < 0 && created) virFileDeleteTree(vol->target.path); @@ -690,8 +689,8 @@ storagePloopResize(virStorageVolDefPtr vol, unsigned long long capacity) { int ret =3D -1; - virCommandPtr cmd =3D NULL; char *resize_tool =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 resize_tool =3D virFindFileInPath("ploop"); if (!resize_tool) { @@ -705,7 +704,6 @@ storagePloopResize(virStorageVolDefPtr vol, virCommandAddArgFormat(cmd, "%s/DiskDescriptor.xml", vol->target.path); =20 ret =3D virCommandRun(cmd, NULL); - virCommandFree(cmd); VIR_FREE(resize_tool); return ret; } @@ -1319,8 +1317,7 @@ storageBackendDoCreateQemuImg(virStoragePoolObjPtr po= ol, const char *inputSecretPath, virStorageVolEncryptConvertStep convertStep) { - int ret; - virCommandPtr cmd; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 cmd =3D virStorageBackendCreateQemuImgCmdFromVol(pool, vol, inputvol, flags, create_tool, @@ -1329,11 +1326,7 @@ storageBackendDoCreateQemuImg(virStoragePoolObjPtr p= ool, if (!cmd) return -1; =20 - ret =3D virStorageBackendCreateExecCommand(pool, vol, cmd); - - virCommandFree(cmd); - - return ret; + return virStorageBackendCreateExecCommand(pool, vol, cmd); } =20 =20 @@ -2324,11 +2317,11 @@ storageBackendResizeQemuImg(virStoragePoolObjPtr po= ol, { int ret =3D -1; char *img_tool =3D NULL; - virCommandPtr cmd =3D NULL; const char *type; char *secretPath =3D NULL; char *secretAlias =3D NULL; virStorageEncryptionPtr enc =3D vol->target.encryption; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 if (enc && (enc->format =3D=3D VIR_STORAGE_ENCRYPTION_FORMAT_QCOW || enc->format =3D=3D VIR_STORAGE_ENCRYPTION_FORMAT_DEFAULT) = && @@ -2395,7 +2388,6 @@ storageBackendResizeQemuImg(virStoragePoolObjPtr pool, VIR_FREE(secretPath); } VIR_FREE(secretAlias); - virCommandFree(cmd); return ret; } =20 @@ -2449,10 +2441,10 @@ virStorageBackendVolResizeLocal(virStoragePoolObjPt= r pool, static int storageBackendPloopHasSnapshots(char *path) { - virCommandPtr cmd =3D NULL; char *output =3D NULL; char *snap_tool =3D NULL; int ret =3D -1; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 snap_tool =3D virFindFileInPath("ploop"); if (!snap_tool) { @@ -2477,7 +2469,6 @@ storageBackendPloopHasSnapshots(char *path) =20 cleanup: VIR_FREE(output); - virCommandFree(cmd); return ret; } =20 @@ -2685,7 +2676,7 @@ storageBackendVolWipeLocalFile(const char *path, int ret =3D -1, fd =3D -1; const char *alg_char =3D NULL; struct stat st; - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 fd =3D open(path, O_RDWR); if (fd =3D=3D -1) { @@ -2763,7 +2754,6 @@ storageBackendVolWipeLocalFile(const char *path, } =20 cleanup: - virCommandFree(cmd); VIR_FORCE_CLOSE(fd); return ret; } @@ -2773,10 +2763,10 @@ static int storageBackendVolWipePloop(virStorageVolDefPtr vol, unsigned int algorithm) { - virCommandPtr cmd =3D NULL; char *target_path =3D NULL; char *disk_desc =3D NULL; char *create_tool =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 int ret =3D -1; =20 @@ -2820,7 +2810,6 @@ storageBackendVolWipePloop(virStorageVolDefPtr vol, VIR_FREE(disk_desc); VIR_FREE(target_path); VIR_FREE(create_tool); - virCommandFree(cmd); return ret; } =20 @@ -3034,8 +3023,8 @@ virStorageBackendFindGlusterPoolSources(const char *h= ost, { char *glusterpath =3D NULL; char *outbuf =3D NULL; - virCommandPtr cmd =3D NULL; int rc; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 int ret =3D -1; =20 @@ -3069,7 +3058,6 @@ virStorageBackendFindGlusterPoolSources(const char *h= ost, =20 cleanup: VIR_FREE(outbuf); - virCommandFree(cmd); VIR_FREE(glusterpath); return ret; } @@ -3309,12 +3297,13 @@ virStorageBackendPARTEDFindLabel(const char *device, const char *const args[] =3D { device, "print", "--script", NULL, }; - virCommandPtr cmd =3D virCommandNew(PARTED); char *output =3D NULL; char *error =3D NULL; char *start, *end; int ret =3D VIR_STORAGE_PARTED_ERROR; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 + cmd =3D virCommandNew(PARTED); virCommandAddArgSet(cmd, args); virCommandAddEnvString(cmd, "LC_ALL=3DC"); virCommandSetOutputBuffer(cmd, &output); @@ -3359,7 +3348,6 @@ virStorageBackendPARTEDFindLabel(const char *device, ret =3D VIR_STORAGE_PARTED_DIFFERENT; =20 cleanup: - virCommandFree(cmd); VIR_FREE(output); VIR_FREE(error); return ret; diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index fc26c2f22e..828e95d5d3 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -1376,13 +1376,14 @@ int virStorageFileGetLVMKey(const char *path, * 06UgP5-2rhb-w3Bo-3mdR-WeoL-pytO-SAa2ky */ int status; - virCommandPtr cmd =3D virCommandNewArgList(LVS, "--noheadings", - "--unbuffered", "--nosuffix", - "--options", "uuid", path, - NULL - ); int ret =3D -1; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 + cmd =3D virCommandNewArgList(LVS, "--noheadings", + "--unbuffered", "--nosuffix", + "--options", "uuid", path, + NULL + ); *key =3D NULL; =20 /* Run the program and capture its output */ @@ -1417,8 +1418,6 @@ int virStorageFileGetLVMKey(const char *path, if (*key && STREQ(*key, "")) VIR_FREE(*key); =20 - virCommandFree(cmd); - return ret; } #else @@ -1451,20 +1450,20 @@ virStorageFileGetSCSIKey(const char *path, bool ignoreError ATTRIBUTE_UNUSED) { int status; - virCommandPtr cmd =3D virCommandNewArgList("/lib/udev/scsi_id", - "--replace-whitespace", - "--whitelisted", - "--device", path, - NULL - ); - int ret =3D -2; - + VIR_AUTOPTR(virCommand) cmd =3D NULL; + + cmd =3D virCommandNewArgList("/lib/udev/scsi_id", + "--replace-whitespace", + "--whitelisted", + "--device", path, + NULL + ); *key =3D NULL; =20 /* Run the program and capture its output */ virCommandSetOutputBuffer(cmd, key); if (virCommandRun(cmd, &status) < 0) - goto cleanup; + return -2; =20 /* Explicitly check status =3D=3D 0, rather than passing NULL * to virCommandRun because we don't want to raise an actual @@ -1476,15 +1475,10 @@ virStorageFileGetSCSIKey(const char *path, *nl =3D '\0'; } =20 - ret =3D 0; - - cleanup: if (*key && STREQ(*key, "")) VIR_FREE(*key); =20 - virCommandFree(cmd); - - return ret; + return 0; } #else int virStorageFileGetSCSIKey(const char *path, @@ -1521,24 +1515,24 @@ virStorageFileGetNPIVKey(const char *path, char **key) { int status; - VIR_AUTOFREE(char *) outbuf =3D NULL; const char *serial; const char *port; - virCommandPtr cmd =3D virCommandNewArgList("/lib/udev/scsi_id", - "--replace-whitespace", - "--whitelisted", - "--export", - "--device", path, - NULL - ); - int ret =3D -2; - + VIR_AUTOFREE(char *) outbuf =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; + + cmd =3D virCommandNewArgList("/lib/udev/scsi_id", + "--replace-whitespace", + "--whitelisted", + "--export", + "--device", path, + NULL + ); *key =3D NULL; =20 /* Run the program and capture its output */ virCommandSetOutputBuffer(cmd, &outbuf); if (virCommandRun(cmd, &status) < 0) - goto cleanup; + return -2; =20 /* Explicitly check status =3D=3D 0, rather than passing NULL * to virCommandRun because we don't want to raise an actual @@ -1562,12 +1556,7 @@ virStorageFileGetNPIVKey(const char *path, ignore_value(virAsprintf(key, "%s_PORT%s", serial, port)); } =20 - ret =3D 0; - - cleanup: - virCommandFree(cmd); - - return ret; + return 0; } #else int virStorageFileGetNPIVKey(const char *path ATTRIBUTE_UNUSED, diff --git a/tests/storagepoolxml2argvtest.c b/tests/storagepoolxml2argvtes= t.c index e7f42dc0f8..c9ba9b3fde 100644 --- a/tests/storagepoolxml2argvtest.c +++ b/tests/storagepoolxml2argvtest.c @@ -22,12 +22,12 @@ testCompareXMLToArgvFiles(bool shouldFail, const char *poolxml, const char *cmdline) { - VIR_AUTOFREE(char *) actualCmdline =3D NULL; - VIR_AUTOFREE(char *) src =3D NULL; int ret =3D -1; - virCommandPtr cmd =3D NULL; virStoragePoolDefPtr def =3D NULL; virStoragePoolObjPtr pool =3D NULL; + VIR_AUTOFREE(char *) actualCmdline =3D NULL; + VIR_AUTOFREE(char *) src =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 if (!(def =3D virStoragePoolDefParseFile(poolxml))) goto cleanup; @@ -83,7 +83,6 @@ testCompareXMLToArgvFiles(bool shouldFail, ret =3D 0; =20 cleanup: - virCommandFree(cmd); VIR_FREE(actualCmdline); virStoragePoolObjEndAPI(&pool); if (shouldFail) { diff --git a/tests/storagevolxml2argvtest.c b/tests/storagevolxml2argvtest.c index edff8d8477..d4ac02b31d 100644 --- a/tests/storagevolxml2argvtest.c +++ b/tests/storagevolxml2argvtest.c @@ -45,14 +45,12 @@ testCompareXMLToArgvFiles(bool shouldFail, char *actualCmdline =3D NULL; virStorageVolEncryptConvertStep convertStep =3D VIR_STORAGE_VOL_ENCRYP= T_NONE; int ret =3D -1; - - virCommandPtr cmd =3D NULL; - virStoragePoolDefPtr def =3D NULL; virStoragePoolObjPtr obj =3D NULL; VIR_AUTOPTR(virStorageVolDef) vol =3D NULL; VIR_AUTOPTR(virStorageVolDef) inputvol =3D NULL; VIR_AUTOPTR(virStoragePoolDef) inputpool =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 if (!(def =3D virStoragePoolDefParseFile(poolxml))) goto cleanup; @@ -90,6 +88,7 @@ testCompareXMLToArgvFiles(bool shouldFail, convertStep =3D VIR_STORAGE_VOL_ENCRYPT_CREATE; =20 do { + virCommandFree(cmd); cmd =3D virStorageBackendCreateQemuImgCmdFromVol(obj, vol, inputvol, flags, create_tool, @@ -139,7 +138,6 @@ testCompareXMLToArgvFiles(bool shouldFail, ret =3D 0; =20 cleanup: - virCommandFree(cmd); VIR_FREE(actualCmdline); virStoragePoolObjEndAPI(&obj); return ret; diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c index c7c40b16f8..7272df7e33 100644 --- a/tests/virstoragetest.c +++ b/tests/virstoragetest.c @@ -128,9 +128,9 @@ static int testPrepImages(void) { int ret =3D EXIT_FAILURE; - virCommandPtr cmd =3D NULL; char *buf =3D NULL; bool compat =3D false; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 qemuimg =3D virFindFileInPath("qemu-img"); if (!qemuimg) @@ -246,7 +246,6 @@ testPrepImages(void) ret =3D 0; cleanup: VIR_FREE(buf); - virCommandFree(cmd); if (ret) testCleanupImages(); return ret; @@ -713,7 +712,6 @@ static int mymain(void) { int ret; - virCommandPtr cmd =3D NULL; struct testChainData data; struct testLookupData data2; struct testPathCanonicalizeData data3; @@ -722,6 +720,7 @@ mymain(void) virStorageSourcePtr chain =3D NULL; virStorageSourcePtr chain2; /* short for chain->backingStore */ virStorageSourcePtr chain3; /* short for chain2->backingStore */ + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 if (storageRegisterAll() < 0) return EXIT_FAILURE; @@ -1604,7 +1603,6 @@ mymain(void) /* Final cleanup */ virStorageSourceFree(chain); testCleanupImages(); - virCommandFree(cmd); =20 return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; } --=20 2.20.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list