From 4d975deddda7668e4a7cfa465c720dea2975fdd3 Mon Sep 17 00:00:00 2001 From: Jim Fehlig Date: Wed, 19 Feb 2014 15:39:19 -0700 Subject: [PATCH] libxl: queue domain event earlier in shutdown handler The shutdown handler may restart a domain when handling a reboot event or when is set to 'restart'. Restarting consists of calling libxlVmCleanup followed by libxlVmStart. libxlVmStart will emit a VIR_DOMAIN_EVENT_STARTED event, but the SHUTDOWN event is not emitted until exiting the shutdown handler, after the STARTED event. This patch changes the logic a bit to queue the event at the start of the shutdown action, ensuring it is queued before any subsequent events that may be generated while executing the shutdown action. Signed-off-by: Jim Fehlig --- src/libxl/libxl_driver.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index f7379b554c..a79efcb807 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -473,6 +473,10 @@ libxlDomainShutdownThread(void *opaque) } destroy: + if (dom_event) { + libxlDomainEventQueue(driver, dom_event); + dom_event = NULL; + } libxl_domain_destroy(ctx, vm->def->id, NULL); if (libxlVmCleanupJob(driver, vm, reason)) { if (!vm->persistent) { @@ -483,6 +487,10 @@ destroy: goto cleanup; restart: + if (dom_event) { + libxlDomainEventQueue(driver, dom_event); + dom_event = NULL; + } libxl_domain_destroy(ctx, vm->def->id, NULL); libxlVmCleanupJob(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOWN); libxlVmStart(driver, vm, 0, -1); -- GitLab