Emit the vcpu-removed event when QEMU vCPU unplug completes.

Hook this into qemuDomainRemoveVcpu(), which covers both the
synchronous completion path and the DEVICE_DELETED-driven alias
removal path.

Signed-off-by: Akash Kulhalli <[email protected]>
---
 src/qemu/qemu_hotplug.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index b7a282b96e52..7828b7d73821 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -6728,6 +6728,7 @@ qemuDomainRemoveVcpu(virDomainObj *vm,
     unsigned int nvcpus = vcpupriv->vcpus;
     size_t i;
     ssize_t offlineVcpuWithTid = -1;
+    virObjectEvent *event = NULL;
 
     if (qemuDomainRefreshVcpuInfo(vm, VIR_ASYNC_JOB_NONE, false) < 0)
         return -1;
@@ -6757,6 +6758,10 @@ qemuDomainRemoveVcpu(virDomainObj *vm,
 
     virDomainAuditVcpu(vm, oldvcpus, oldvcpus - nvcpus, "update", true);
 
+    /* fire the libvirt `vcpu-removed` event */
+    event = virDomainEventVcpuRemovedNewFromObj(vm, vcpu);
+    virObjectEventStateQueue(priv->driver->domainEventState, event);
+
     return 0;
 }
 
-- 
2.47.3

Reply via email to