mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
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:
parent
a35a47e9f1
commit
d00c77ae45
@ -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.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user