[libvirt] [PATCH 09/13] Add support for an explicit guest reboot event
Daniel Veillard
veillard at redhat.com
Mon Mar 22 16:09:17 UTC 2010
On Fri, Mar 19, 2010 at 03:38:57PM +0000, Daniel P. Berrange wrote:
> The reboot event is not a normal lifecycle event, since the
> virtual machine on the host does not change state. Rather the
> guest OS is resetting the virtual CPUs. ie, the QEMU process
> does not restart. Thus, this does not belong in the current
> lifecycle events callback.
>
> This introduces a new event type
>
> VIR_DOMAIN_EVENT_ID_REBOOT
>
> It takes no parameters, besides the virDomainPtr, so it can
> use the generic callback signature.
>
[...]
> --- a/include/libvirt/libvirt.h.in
> +++ b/include/libvirt/libvirt.h.in
> @@ -1850,6 +1850,7 @@ typedef void (*virConnectDomainEventGenericCallback)(virConnectPtr conn,
>
> typedef enum {
> VIR_DOMAIN_EVENT_ID_LIFECYCLE = 0, /* virConnectDomainEventCallback */
> + VIR_DOMAIN_EVENT_ID_REBOOT = 1, /* virConnectDomainEventGenericCallback */
that answer my question on a previous review, yes we initialized to 0
[...]
> +
> +static int
> +qemuHandleDomainReset(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
> + virDomainObjPtr vm)
> +{
> + struct qemud_driver *driver = qemu_driver;
> + virDomainEventPtr event;
> +
> + virDomainObjLock(vm);
> + event = virDomainEventRebootNewFromObj(vm);
> + virDomainObjUnlock(vm);
> +
> + if (event) {
> + qemuDriverLock(driver);
> + qemuDomainEventQueue(driver, event);
> + qemuDriverUnlock(driver);
> + }
> +
> + return 0;
> +}
> +
> +
> static qemuMonitorCallbacks monitorCallbacks = {
> .eofNotify = qemuHandleMonitorEOF,
> .diskSecretLookup = findVolumeQcowPassphrase,
> + .domainReset = qemuHandleDomainReset,
> };
Okay, we already had qemuMonitorEmitReset() emit the event if the hook
was in place, which explain why there is no detection code in that
patch,
ACK,
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list