diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c index b60511a266..4073bf8d46 100644 --- a/src/libxl/libxl_domain.c +++ b/src/libxl/libxl_domain.c @@ -559,17 +559,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; @@ -669,6 +658,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; @@ -680,6 +670,13 @@ 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.