libxl: send lifecycle event on suspend

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Reviewed-by: Jim Fehlig <jfehlig@suse.com>
This commit is contained in:
Marek Marczykowski-Górecki 2018-09-07 21:29:54 +02:00 committed by Jim Fehlig
parent a35a47e9f1
commit d00c77ae45

View File

@ -520,6 +520,18 @@ libxlDomainShutdownThread(void *opaque)
case VIR_DOMAIN_LIFECYCLE_ACTION_LAST: case VIR_DOMAIN_LIFECYCLE_ACTION_LAST:
goto endjob; 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 { } else {
VIR_INFO("Unhandled shutdown_reason %d", xl_reason); VIR_INFO("Unhandled shutdown_reason %d", xl_reason);
goto endjob; goto endjob;
@ -563,7 +575,6 @@ void
libxlDomainEventHandler(void *data, VIR_LIBXL_EVENT_CONST libxl_event *event) libxlDomainEventHandler(void *data, VIR_LIBXL_EVENT_CONST libxl_event *event)
{ {
libxlDriverPrivatePtr driver = data; libxlDriverPrivatePtr driver = data;
libxl_shutdown_reason xl_reason = event->u.domain_shutdown.shutdown_reason;
struct libxlShutdownThreadInfo *shutdown_info = NULL; struct libxlShutdownThreadInfo *shutdown_info = NULL;
virThread thread; virThread thread;
libxlDriverConfigPtr cfg; libxlDriverConfigPtr cfg;
@ -573,13 +584,6 @@ libxlDomainEventHandler(void *data, VIR_LIBXL_EVENT_CONST libxl_event *event)
goto error; 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 * Start a thread to handle shutdown. We don't want to be tying up
* libxl's event machinery by doing a potentially lengthy shutdown. * libxl's event machinery by doing a potentially lengthy shutdown.