]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: blockjob: Allow NULL 'mirror' for block copy jobs due to migration
authorPeter Krempa <pkrempa@redhat.com>
Fri, 6 Dec 2019 16:46:29 +0000 (17:46 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 9 Dec 2019 06:11:24 +0000 (07:11 +0100)
The non-shared-storage migration tracks the storage source used
explicitly in the migration data so we must allow for processing of the
block job which has NULL mirror as the mirror will not be populated.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
src/qemu/qemu_blockjob.c

index baa79ea80c2e2a3d6bd6baa60dcd7b5f47c3d8a2..4c8114d9d94c218505324b183e51898b9f5e381a 100644 (file)
@@ -1139,7 +1139,9 @@ qemuBlockJobProcessEventConcludedCopyPivot(virQEMUDriverPtr driver,
 {
     VIR_DEBUG("copy job '%s' on VM '%s' pivoted", job->name, vm->def->name);
 
-    if (!job->disk)
+    /* mirror may be NULL for copy job corresponding to migration */
+    if (!job->disk ||
+        !job->disk->mirror)
         return;
 
     /* for shallow copy without reusing external image the user can either not
@@ -1166,7 +1168,9 @@ qemuBlockJobProcessEventConcludedCopyAbort(virQEMUDriverPtr driver,
 {
     VIR_DEBUG("copy job '%s' on VM '%s' aborted", job->name, vm->def->name);
 
-    if (!job->disk)
+    /* mirror may be NULL for copy job corresponding to migration */
+    if (!job->disk ||
+        !job->disk->mirror)
         return;
 
     qemuBlockJobEventProcessConcludedRemoveChain(driver, vm, asyncJob, job->disk->mirror);
@@ -1383,7 +1387,8 @@ qemuBlockJobEventProcess(virQEMUDriverPtr driver,
         break;
 
     case QEMU_BLOCKJOB_STATE_READY:
-        if (job->disk && job->disk->mirror) {
+        /* mirror may be NULL for copy job corresponding to migration */
+        if (job->disk) {
             job->disk->mirrorState = VIR_DOMAIN_DISK_MIRROR_STATE_READY;
             qemuBlockJobEmitEvents(driver, vm, job->disk, job->type, job->newstate);
         }