]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: fix return value of qemuDomainBlockPivot on errors
authorJán Tomko <jtomko@redhat.com>
Mon, 1 Jul 2013 10:41:34 +0000 (12:41 +0200)
committerJán Tomko <jtomko@redhat.com>
Thu, 11 Jul 2013 13:45:17 +0000 (15:45 +0200)
If qemuMonitorBlockJob returned 0, qemuDomainBlockPivot
might return 0 even if an error occured.

https://bugzilla.redhat.com/show_bug.cgi?id=977678
(cherry picked from commit c34107dfd3a25232255e6d6f559b1306ef99bb3b)

src/qemu/qemu_driver.c

index a9482ee55e5b0f43df20249b7155b8afdae02d7f..21784c5cdf1a69d1bde6ed344b02a17b4d320a09 100644 (file)
@@ -13055,7 +13055,7 @@ qemuDomainBlockPivot(virConnectPtr conn,
                      virQEMUDriverPtr driver, virDomainObjPtr vm,
                      const char *device, virDomainDiskDefPtr disk)
 {
-    int ret = -1;
+    int ret = -1, rc;
     qemuDomainObjPrivatePtr priv = vm->privateData;
     virDomainBlockJobInfo info;
     const char *format = virStorageFileFormatTypeToString(disk->mirrorFormat);
@@ -13069,17 +13069,17 @@ qemuDomainBlockPivot(virConnectPtr conn,
     /* Probe the status, if needed.  */
     if (!disk->mirroring) {
         qemuDomainObjEnterMonitor(driver, vm);
-        ret = qemuMonitorBlockJob(priv->mon, device, NULL, 0, &info,
+        rc = qemuMonitorBlockJob(priv->mon, device, NULL, 0, &info,
                                   BLOCK_JOB_INFO, true);
         qemuDomainObjExitMonitor(driver, vm);
-        if (ret < 0)
+        if (rc < 0)
             goto cleanup;
         if (!virDomainObjIsActive(vm)) {
             virReportError(VIR_ERR_OPERATION_INVALID, "%s",
                            _("domain is not running"));
             goto cleanup;
         }
-        if (ret == 1 && info.cur == info.end &&
+        if (rc == 1 && info.cur == info.end &&
             info.type == VIR_DOMAIN_BLOCK_JOB_TYPE_COPY)
             disk->mirroring = true;
     }