mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-02 01:45:17 +00:00
qemu: Fix virsh freeze when blockcopy storage file is removed
If someone removes blockcopy storage file when still in mirroring phase and then requesting blockjob abort using pivot, virsh cmd freezes. This is not an issue with older qemu versions which did not support asynchronous jobs (which we prefer by default). As we have reached the mirroring phase successfully, polling monitor for blockjob info always returns 1 and the loop never ends. This fix introduces a check for qemuDomainBlockPivot return code, possibly skipping the asynchronous waiting completely, if an error occurred and asynchronous waiting was the preferred method. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1139567
This commit is contained in:
parent
bc3b568103
commit
fe3691f663
@ -15606,6 +15606,8 @@ qemuDomainBlockJobImpl(virDomainObjPtr vm,
|
||||
|
||||
if (disk->mirror && (flags & VIR_DOMAIN_BLOCK_JOB_ABORT_PIVOT)) {
|
||||
ret = qemuDomainBlockPivot(conn, driver, vm, device, disk);
|
||||
if (ret < 0 && async)
|
||||
goto endjob;
|
||||
goto waitjob;
|
||||
}
|
||||
if (disk->mirror) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user