[libvirt] [PATCH] Add support for SUSPEND_DISK event

Martin Kletzander mkletzan at redhat.com
Mon Oct 15 10:16:12 UTC 2012


On 10/15/2012 12:07 PM, Daniel P. Berrange wrote:
> On Fri, Oct 12, 2012 at 09:28:04PM +0200, Martin Kletzander wrote:
>> This patch adds support for SUSPEND_DISK event; both lifecycle and
>> separated.  The support is added for QEMU, machines are changed to
>> PMSUSPENDED, but as QEMU sends SHUTDOWN afterwards, the state changes
>> to shut-off.  This and much more needs to be done in order for libvirt
>> to work with transient devices, wake-ups etc.  This patch is not
>> aiming for that functionality.
> 
> I'm not convinced that we actually need a new PMSUSPEND_DISK event
> callback. The existing callback:
> 
> /**
>  * virConnectDomainEventPMSuspendCallback:
>  * @conn: connection object
>  * @dom: domain on which the event occurred
>  * @reason: reason why the callback was called, unused currently,
>  *          always passes 0
>  * @opaque: application specified data
>  *
>  * This callback occurs when the guest is waken up.
>  *
>  * The callback signature to use when registering for an event of type
>  * VIR_DOMAIN_EVENT_ID_PMSuspend with virConnectDomainEventRegisterAny()
>  */
> typedef void (*virConnectDomainEventPMSuspendCallback)(virConnectPtr conn,
>                                                        virDomainPtr dom,
>                                                        int reason,
>                                                        void *opaque);
> 
> 
> already has a 'reason' argumnent that is unused, and could be used
> to distinguish between S3 and S4 (memory vs disk).
> 
> Daniel
> 

The problem is that there is only reason field free in the event, but
this is not, strictly speaking, a reason, but a type of suspend.  The
reason could be used to say whether it was suspended y an agent, acpi
call, etc., but from what I see elsewhere we don't use it as a type of
suspend (disk/memory/hybrid).  And as there is no free place in the RPC
message for a type of the pmsuspend, I was forced to create a new one.

Martin




More information about the libvir-list mailing list