1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

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
This commit is contained in:
Peter Krempa 2016-12-15 15:09:47 +01:00
parent 0dd1f7d2d7
commit 8551d39f4f

View File

@ -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);