From: Peter Krempa Date: Thu, 15 Dec 2016 14:09:47 +0000 (+0100) Subject: qemu: blockcopy: Save monitor error prior to calling into lock manager X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=8551d39f4fbdb56551882ad3b48feb172da42ed6;p=libvirt.git qemu: blockcopy: Save monitor error prior to calling into lock manager The error would be overwritten otherwise producing a meaningless error message. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1302171 --- diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 1a464337e8..ef8eceaa12 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -16657,6 +16657,7 @@ qemuDomainBlockCopyCommon(virDomainObjPtr vm, virQEMUDriverConfigPtr cfg = NULL; const char *format = NULL; int desttype = virStorageSourceGetActualType(mirror); + virErrorPtr monitor_error = NULL; /* Preliminaries: find the disk we are editing, sanity checks */ virCheckFlags(VIR_DOMAIN_BLOCK_COPY_SHALLOW | @@ -16807,6 +16808,7 @@ qemuDomainBlockCopyCommon(virDomainObjPtr vm, if (qemuDomainObjExitMonitor(driver, vm) < 0) ret = -1; if (ret < 0) { + monitor_error = virSaveLastError(); qemuDomainDiskChainElementRevoke(driver, vm, mirror); goto endjob; } @@ -16827,6 +16829,10 @@ qemuDomainBlockCopyCommon(virDomainObjPtr vm, VIR_WARN("unable to unlink just-created %s", mirror->path); virStorageSourceFree(mirror); qemuDomainObjEndJob(driver, vm); + if (monitor_error) { + virSetError(monitor_error); + virFreeError(monitor_error); + } cleanup: VIR_FREE(device);