[libvirt] [PATCHv2 02/26] snapshot: better event when reverting qemu to paused snapshot
Eric Blake
eblake at redhat.com
Wed Aug 24 14:23:55 UTC 2011
On 08/24/2011 08:21 AM, Daniel P. Berrange wrote:
>> +++ b/src/qemu/qemu_driver.c
>> @@ -8804,14 +8804,16 @@ static int qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
>> QEMU_ASYNC_JOB_NONE);
>> if (rc< 0)
>> goto endjob;
>> + event = virDomainEventNewFromObj(vm,
>> + VIR_DOMAIN_EVENT_SUSPENDED,
>> + VIR_DOMAIN_EVENT_SUSPENDED_FROM_SNAPSHOT);
>> } else {
>> virDomainObjSetState(vm, VIR_DOMAIN_RUNNING,
>> VIR_DOMAIN_RUNNING_FROM_SNAPSHOT);
>> + event = virDomainEventNewFromObj(vm,
>> + VIR_DOMAIN_EVENT_STARTED,
>> + VIR_DOMAIN_EVENT_STARTED_FROM_SNAPSHOT);
>> }
>> -
>> - event = virDomainEventNewFromObj(vm,
>> - VIR_DOMAIN_EVENT_STARTED,
>> - VIR_DOMAIN_EVENT_STARTED_FROM_SNAPSHOT);
>> } else {
>
> This isn't so nice. The lifecycle model for VMs is
>
> shutoff<----> running<------>paused
Even when you use virDomainCreateWithFlags(, VIR_DOMAIN_START_PAUSED)?
>
> This change creates a direct transition from shutoff to paused, missing
> out the running state, which will break any apps which are just looking
> to find out when guests stop/start and don't care about pause/resume.
> Also
>
> virsh start --paused $GUEST
>
> will only emit a 'VIR_DOMAIN_EVENT_STARTED', so the current beahviour for
> reverting to a paused snapshot matches that.
>
> Arguably we could *also* emit an VIR_DOMAIN_EVENT_SUSPENDED, immediately
> *after* the VIR_DOMAIN_EVENT_STARTED, in both cases though.
This may have bigger cleanup impact, then, if we want to guarantee both
STARTED and SUSPENDED events on all code paths where we can start life
paused.
--
Eric Blake eblake at redhat.com +1-801-349-2682
Libvirt virtualization library http://libvirt.org
More information about the libvir-list
mailing list