[PATCH 4/4] virStorageBackendISCSIDirectFindPoolSources: Rework cleanup

Peter Krempa pkrempa at redhat.com
Fri Jun 18 13:04:49 UTC 2021


virISCSIDirectScanTargets now returns a GStrv, so we can use automatic
cleanup for it and get rid of the cleanup section.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/storage/storage_backend_iscsi_direct.c | 20 ++++++--------------
 1 file changed, 6 insertions(+), 14 deletions(-)

diff --git a/src/storage/storage_backend_iscsi_direct.c b/src/storage/storage_backend_iscsi_direct.c
index 2073a6df38..b108b12f7b 100644
--- a/src/storage/storage_backend_iscsi_direct.c
+++ b/src/storage/storage_backend_iscsi_direct.c
@@ -485,8 +485,7 @@ virStorageBackendISCSIDirectFindPoolSources(const char *srcSpec,
                                             unsigned int flags)
 {
     size_t ntargets = 0;
-    char **targets = NULL;
-    char *ret = NULL;
+    g_auto(GStrv) targets = NULL;
     size_t i;
     g_autoptr(virStoragePoolSourceList) list = g_new0(virStoragePoolSourceList, 1);
     g_autofree char *portal = NULL;
@@ -508,20 +507,20 @@ virStorageBackendISCSIDirectFindPoolSources(const char *srcSpec,
     if (source->nhost != 1) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                        _("Expected exactly 1 host for the storage pool"));
-        goto cleanup;
+        return NULL;
     }

     if (!source->initiator.iqn) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                        _("missing initiator IQN"));
-        goto cleanup;
+        return NULL;
     }

     if (!(portal = virStorageBackendISCSIDirectPortal(source)))
-        goto cleanup;
+        return NULL;

     if (virISCSIDirectScanTargets(source->initiator.iqn, portal, &ntargets, &targets) < 0)
-        goto cleanup;
+        return NULL;

     list->sources = g_new0(virStoragePoolSource, ntargets);

@@ -541,14 +540,7 @@ virStorageBackendISCSIDirectFindPoolSources(const char *srcSpec,
         list->nsources++;
     }

-    if (!(ret = virStoragePoolSourceListFormat(list)))
-        goto cleanup;
-
- cleanup:
-    for (i = 0; i < ntargets; i++)
-        VIR_FREE(targets[i]);
-    VIR_FREE(targets);
-    return ret;
+    return virStoragePoolSourceListFormat(list);
 }

 static struct iscsi_context *
-- 
2.31.1




More information about the libvir-list mailing list