From: Peter Krempa Date: Thu, 1 Jul 2021 14:03:57 +0000 (+0200) Subject: qemu: Prevent two threshold events when it was registered with index X-Git-Tag: v7.6.0-rc1~231 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a3edda6b9eed7c5ea2518ba778a5fe3c19bbb239;p=thirdparty%2Flibvirt.git qemu: Prevent two threshold events when it was registered with index Remember whether the user passed an explicit index when registering the event so that we can avoid the top level event when it isn't needed. Signed-off-by: Peter Krempa Reviewed-by: Michal Privoznik --- diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 72f550bf8d..df44c3fbd0 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -19623,6 +19623,10 @@ qemuDomainSetBlockThreshold(virDomainPtr dom, if (qemuDomainObjExitMonitor(driver, vm) < 0 || rc < 0) goto endjob; + /* we need to remember whether the threshold was registered with an explicit + * index to fire the correct event */ + src->thresholdEventWithIndex = !!strchr(dev, '['); + ret = 0; endjob: diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 3693796b06..7487e12640 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -1487,7 +1487,8 @@ qemuProcessHandleBlockThreshold(qemuMonitor *mon G_GNUC_UNUSED, if (virStorageSourceIsLocalStorage(src)) path = src->path; - if (src == disk->src) { + if (src == disk->src && + !src->thresholdEventWithIndex) { g_autofree char *dev = qemuDomainDiskBackingStoreGetName(disk, 0); eventDevice = virDomainEventBlockThresholdNewFromObj(vm, dev, path,