File 18d47d61-revert-d00c77ae.patch of Package libvirt.16761

commit ba09fba297098be5fa420b2c0820e2e606fdaaeb
Author: Jim Fehlig <jfehlig@suse.com>
Date:   Tue Aug 13 13:33:24 2019 -0600

    Revert "libxl: send lifecycle event on suspend"
    
    A libxl event with shutdown reason LIBXL_SHUTDOWN_REASON_SUSPEND
    is sent after a domain is successfully suspended, which could result
    from suspending the domain to file (virDomainSave), suspending it to
    socket (virDomainMigrate), or suspending it to memory
    (virDomainPMSuspendForDuration). Commit d00c77ae changed the event
    handler to always set domain state to VIR_DOMAIN_PMSUSPENDED when
    LIBXL_SHUTDOWN_REASON_SUSPEND is received. The causes a persistent
    domain to show state "pmsuspended" after a successful migrate or save
    operation. Revert the commit and ignore the suspend event as before.
    
    This reverts commit d00c77ae45c7d9fd90384f01cd8b04c54f501e96.
    
    Signed-off-by: Jim Fehlig <jfehlig@suse.com>

Index: libvirt-5.1.0/src/libxl/libxl_domain.c
===================================================================
--- libvirt-5.1.0.orig/src/libxl/libxl_domain.c
+++ libvirt-5.1.0/src/libxl/libxl_domain.c
@@ -556,17 +556,6 @@ 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.
-         */
 #ifdef LIBXL_HAVE_SOFT_RESET
     } else if (xl_reason == LIBXL_SHUTDOWN_REASON_SOFT_RESET) {
         libxlDomainObjPrivatePtr priv = vm->privateData;
@@ -666,6 +655,7 @@ 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;
@@ -678,6 +668,13 @@ libxlDomainEventHandler(void *data, VIR_
     }
 
     /*
+     * 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.
      */
openSUSE Build Service is sponsored by