]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Remove cleanup label in qemuDomainSnapshotPrepareDiskExternal
authorPeter Krempa <pkrempa@redhat.com>
Mon, 12 Aug 2019 11:47:36 +0000 (13:47 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 26 Aug 2019 11:49:17 +0000 (13:49 +0200)
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@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_driver.c

index 6e3bab904afd2398125e1bfbd1ae67d78fba0906..ac235c9cc6f6ddc5dd2fcee5023f82055088a78b 100644 (file)
@@ -14983,8 +14983,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,
@@ -15010,31 +15011,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;
 }