diff options
author | Ján Tomko <jtomko@redhat.com> | 2013-07-01 12:41:34 +0200 |
---|---|---|
committer | Ján Tomko <jtomko@redhat.com> | 2013-07-11 15:45:17 +0200 |
commit | d145c8300ff72418bebb2bf12e698e190d22973e (patch) | |
tree | 87cc7d3d7b110b780de9dd8c1b8a895602e54a5d | |
parent | fbd23fbcbf1012a1d0636f6aa50de04bb671e6c6 (diff) | |
download | libvirt-d145c8300ff72418bebb2bf12e698e190d22973e.tar.gz |
qemu: fix return value of qemuDomainBlockPivot on errors
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)
-rw-r--r-- | src/qemu/qemu_driver.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index a9482ee55e..21784c5cdf 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -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; } |