[PATCH 1/5] ch: Emit event on device attach

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Michal Privoznik <mprivozn@xxxxxxxxxx>

When a device is attached to a running guest we ought to emit the
VIR_DOMAIN_EVENT_ID_DEVICE_ADDED event.

Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx>
---
 src/ch/ch_hotplug.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/ch/ch_hotplug.c b/src/ch/ch_hotplug.c
index 0a55a57069..e7734e2ff0 100644
--- a/src/ch/ch_hotplug.c
+++ b/src/ch/ch_hotplug.c
@@ -52,23 +52,26 @@ chDomainAddDisk(virCHMonitor *mon,
 }
 
 static int
-chDomainAttachDeviceLive(virDomainObj *vm,
+chDomainAttachDeviceLive(virCHDriver *driver,
+                         virDomainObj *vm,
                          virDomainDeviceDef *dev)
 {
     int ret = -1;
     virCHDomainObjPrivate *priv = vm->privateData;
     virCHMonitor *mon = priv->monitor;
+    const char *alias = NULL;
 
     switch (dev->type) {
-    case VIR_DOMAIN_DEVICE_DISK: {
+    case VIR_DOMAIN_DEVICE_DISK:
         if (chDomainAddDisk(mon, vm, dev->data.disk) < 0) {
             break;
         }
 
+        alias = dev->data.disk->info.alias;
         dev->data.disk = NULL;
         ret = 0;
         break;
-    }
+
     case VIR_DOMAIN_DEVICE_NET:
     case VIR_DOMAIN_DEVICE_LEASE:
     case VIR_DOMAIN_DEVICE_FS:
@@ -104,6 +107,13 @@ chDomainAttachDeviceLive(virDomainObj *vm,
         break;
     }
 
+    if (alias) {
+        virObjectEvent *event;
+
+        event = virDomainEventDeviceAddedNewFromObj(vm, alias);
+        virObjectEventStateQueue(driver->domainEventState, event);
+    }
+
     return ret;
 }
 
@@ -148,7 +158,7 @@ chDomainAttachDeviceLiveAndUpdateConfig(virDomainObj *vm,
             return -1;
         }
 
-        if (chDomainAttachDeviceLive(vm, devLive) < 0) {
+        if (chDomainAttachDeviceLive(driver, vm, devLive) < 0) {
             virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                         _("Failed to add device"));
             return -1;
-- 
2.49.1




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux