]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: fix block{commit,copy} abort handling
authorErik Skultety <eskultet@redhat.com>
Thu, 27 Nov 2014 12:29:42 +0000 (13:29 +0100)
committerJiri Denemark <jdenemar@redhat.com>
Mon, 1 Dec 2014 09:09:03 +0000 (10:09 +0100)
When a block{commit,copy} job was aborted on a domain, block job handler
did not process it correctly, leaving a phantom job in the background.
Any further calls to any blockjob causes "block <jobtype> still active"
error. This patch fixes the blockjob handler so that it checks not only
for VIR_DOMAIN_BLOCK_JOB_FAILED status, but VIR_DOMAIN_BLOCK_JOB_CANCELED
status as well, followed by our existing cleanup routine.

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

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
src/qemu/qemu_process.c

index 382d8029ab2f21288f6a9b8abd794e4278037a63..049cfe965e83186a75824f69788f9a52ab00d0c1 100644 (file)
@@ -1104,7 +1104,8 @@ qemuProcessHandleBlockJob(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
             if (status == VIR_DOMAIN_BLOCK_JOB_READY) {
                 disk->mirrorState = VIR_DOMAIN_DISK_MIRROR_STATE_READY;
                 save = true;
-            } else if (status == VIR_DOMAIN_BLOCK_JOB_FAILED) {
+            } else if (status == VIR_DOMAIN_BLOCK_JOB_FAILED ||
+                       status == VIR_DOMAIN_BLOCK_JOB_CANCELED) {
                 virStorageSourceFree(disk->mirror);
                 disk->mirror = NULL;
                 disk->mirrorState = VIR_DOMAIN_DISK_MIRROR_STATE_NONE;