[libvirt] [PATCH 03/10] qemu: Remove cleanup label in qemuDomainSnapshotPrepareDiskExternal

Peter Krempa pkrempa at redhat.com
Fri Aug 16 13:54:37 UTC 2019


Refactor the code to avoid having a cleanup label. This will simplify
the change necessary when restricting this check in an upcoming patch.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/qemu/qemu_driver.c | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 913b57855c..29a47af0a2 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -14997,8 +14997,9 @@ qemuDomainSnapshotPrepareDiskExternal(virDomainDiskDefPtr disk,
                                       bool active,
                                       bool reuse)
 {
-    int ret = -1;
     struct stat st;
+    int err;
+    int rc;

     if (disk->src->readonly) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
@@ -15024,31 +15025,32 @@ qemuDomainSnapshotPrepareDiskExternal(virDomainDiskDefPtr disk,
     if (virStorageFileInit(snapdisk->src) < 0)
         return -1;

-    if (virStorageFileStat(snapdisk->src, &st) < 0) {
-        if (errno != ENOENT) {
-            virReportSystemError(errno,
+    rc = virStorageFileStat(snapdisk->src, &st);
+    err = errno;
+
+    virStorageFileDeinit(snapdisk->src);
+
+    if (rc < 0) {
+        if (err != ENOENT) {
+            virReportSystemError(err,
                                  _("unable to stat for disk %s: %s"),
                                  snapdisk->name, snapdisk->src->path);
-            goto cleanup;
+            return -1;
         } else if (reuse) {
-            virReportSystemError(errno,
+            virReportSystemError(err,
                                  _("missing existing file for disk %s: %s"),
                                  snapdisk->name, snapdisk->src->path);
-            goto cleanup;
+            return -1;
         }
     } else if (!S_ISBLK(st.st_mode) && st.st_size && !reuse) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                        _("external snapshot file for disk %s already "
                          "exists and is not a block device: %s"),
                        snapdisk->name, snapdisk->src->path);
-        goto cleanup;
+        return -1;
     }

-    ret = 0;
-
- cleanup:
-    virStorageFileDeinit(snapdisk->src);
-    return ret;
+    return 0;
 }


-- 
2.21.0




More information about the libvir-list mailing list