[libvirt] [PATCH V2] libxl: queue domain event earlier in shutdown handler

Jim Fehlig jfehlig at suse.com
Tue Feb 25 18:10:26 UTC 2014


Michal Privoznik wrote:
> On 24.02.2014 19:06, Jim Fehlig wrote:
>> The shutdown handler may restart a domain when handling a reboot
>> event or when <on_*> 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 <jfehlig at suse.com>
>> ---
>>
>> V2:
>> Enqueue any pending events at the beginning of the shutdown action
>> labels, as suggested by Michal Privoznik
>>
>> https://www.redhat.com/archives/libvir-list/2014-February/msg01446.html
>>
>>   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 f7379b5..a79efcb 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);
>>
>
> ACK

Thanks, pushed now.

Regards,
Jim




More information about the libvir-list mailing list