]> xenbits.xensource.com Git - people/dariof/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>
Tue, 2 Jul 2013 05:51:51 +0000 (07:51 +0200)
If qemuMonitorBlockJob returned 0, qemuDomainBlockPivot
might return 0 even if an error occured.

https://bugzilla.redhat.com/show_bug.cgi?id=977678

src/qemu/qemu_driver.c

index f51e766108ae8df0d6f15f7853057ea0212f4d12..6a83fda1dca0926c3b4c77e98ab6afff87cdac68 100644 (file)
@@ -13844,7 +13844,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);
@@ -13857,17 +13857,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;
     }