From: Peter Krempa Date: Thu, 28 Mar 2019 11:23:43 +0000 (+0100) Subject: qemu: hotplug: Disallow media change while blockjob is active X-Git-Tag: v5.3.0-rc1~336 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b3736febca1e371b5ee37b287fd760ffada45ad8;p=thirdparty%2Flibvirt.git qemu: hotplug: Disallow media change while blockjob is active Until the block job completes we can't change the disk chain. Removal would fail as the block job still has reference to the chain. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 150da34b4a..34249bd030 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -852,10 +852,17 @@ qemuDomainChangeEjectableMedia(virQEMUDriverPtr driver, VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); qemuDomainObjPrivatePtr priv = vm->privateData; virStorageSourcePtr oldsrc = disk->src; + qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk); bool sharedAdded = false; int ret = -1; int rc; + if (diskPriv->blockjob && qemuBlockJobIsRunning(diskPriv->blockjob)) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("can't change media while a block job is running on the device")); + return -1; + } + disk->src = newsrc; if (virDomainDiskTranslateSourcePool(disk) < 0)