From 0d0b490a32be5cb4f8a3b103784e1f10ce6c51ce Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Fri, 6 Dec 2019 17:46:29 +0100 Subject: [PATCH] qemu: blockjob: Allow NULL 'mirror' for block copy jobs due to migration 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 Reviewed-by: Eric Blake --- src/qemu/qemu_blockjob.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_blockjob.c b/src/qemu/qemu_blockjob.c index baa79ea80c..4c8114d9d9 100644 --- a/src/qemu/qemu_blockjob.c +++ b/src/qemu/qemu_blockjob.c @@ -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); }