]> xenbits.xensource.com Git - libvirt.git/commitdiff
libxl: send lifecycle event on suspend
authorMarek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Fri, 7 Sep 2018 19:29:54 +0000 (21:29 +0200)
committerJim Fehlig <jfehlig@suse.com>
Mon, 10 Sep 2018 15:16:07 +0000 (09:16 -0600)
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Reviewed-by: Jim Fehlig <jfehlig@suse.com>
src/libxl/libxl_domain.c

index 2ab78ac9a57ffeaf1e28930ef352a743908b6fd6..b800bc9f9deee73d1285ceb5787413234a8607ba 100644 (file)
@@ -520,6 +520,18 @@ libxlDomainShutdownThread(void *opaque)
         case VIR_DOMAIN_LIFECYCLE_ACTION_LAST:
             goto endjob;
         }
+    } else if (xl_reason == LIBXL_SHUTDOWN_REASON_SUSPEND) {
+        virDomainObjSetState(vm, VIR_DOMAIN_PMSUSPENDED,
+                             VIR_DOMAIN_PMSUSPENDED_UNKNOWN);
+
+        dom_event = virDomainEventLifecycleNewFromObj(vm,
+                                           VIR_DOMAIN_EVENT_PMSUSPENDED,
+                                           VIR_DOMAIN_EVENT_PMSUSPENDED_MEMORY);
+        /*
+         * Similar to the xl implementation, ignore SUSPEND.  Any actions needed
+         * after calling libxl_domain_suspend() are handled by it's callers.
+         */
+        goto endjob;
     } else {
         VIR_INFO("Unhandled shutdown_reason %d", xl_reason);
         goto endjob;
@@ -563,7 +575,6 @@ void
 libxlDomainEventHandler(void *data, VIR_LIBXL_EVENT_CONST libxl_event *event)
 {
     libxlDriverPrivatePtr driver = data;
-    libxl_shutdown_reason xl_reason = event->u.domain_shutdown.shutdown_reason;
     struct libxlShutdownThreadInfo *shutdown_info = NULL;
     virThread thread;
     libxlDriverConfigPtr cfg;
@@ -573,13 +584,6 @@ libxlDomainEventHandler(void *data, VIR_LIBXL_EVENT_CONST libxl_event *event)
         goto error;
     }
 
-    /*
-     * Similar to the xl implementation, ignore SUSPEND.  Any actions needed
-     * after calling libxl_domain_suspend() are handled by its callers.
-     */
-    if (xl_reason == LIBXL_SHUTDOWN_REASON_SUSPEND)
-        goto error;
-
     /*
      * Start a thread to handle shutdown.  We don't want to be tying up
      * libxl's event machinery by doing a potentially lengthy shutdown.