[libvirt] [PATCHv2 2/2] qemu: emit 'defined' event after reverted to snapshot

John Ferlan jferlan at redhat.com
Wed Dec 16 12:28:43 UTC 2015



On 12/16/2015 07:01 AM, Peter Krempa wrote:
> On Wed, Dec 16, 2015 at 12:09:42 +0300, Dmitry Andreev wrote:
>> If config file was changed VIR_DOMAIN_EVENT_DEFINED should be emitted
> 
> drop "file" here. The important part is the config itself being changed.
> The file is just a implication of that.
> 
> Additionally, commit messages here or in the previous patch don't
> provide any justification for this change. I'd like to have a statement
> why is this important to change.
> 

FWIW: This is what I got from the cover letter:

Lack of the event become a problem for virt-manager
https://bugzilla.redhat.com/show_bug.cgi?id=1081148


Without the event, it seems virt-manager doesn't "see" the change and
presents the data prior to snapshot

John

>> ---
>>  src/qemu/qemu_driver.c | 13 +++++++++++--
>>  1 file changed, 11 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
>> index 783a7cd..1474eaa 100644
>> --- a/src/qemu/qemu_driver.c
>> +++ b/src/qemu/qemu_driver.c
>> @@ -15512,7 +15512,7 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
>>                                               VIR_DOMAIN_EVENT_STARTED,
>>                                               detail);
>>              if (rc < 0)
>> -                goto endjob;
>> +                goto defined;
>>          }
>>  
>>          /* Touch up domain state.  */
>> @@ -15534,7 +15534,7 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
>>              if (!virDomainObjIsActive(vm)) {
>>                  virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>>                                 _("guest unexpectedly quit"));
>> -                goto endjob;
>> +                goto defined;
>>              }
>>              rc = qemuProcessStartCPUs(driver, vm, snapshot->domain->conn,
>>                                        VIR_DOMAIN_RUNNING_FROM_SNAPSHOT,
>> @@ -15636,6 +15636,15 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
>>  
>>      ret = 0;
>>  
>> + defined:
>> +    if (config) {
>> +        virObjectEventPtr define_event;
>> +        define_event = virDomainEventLifecycleNewFromObj(vm,
>> +                                    VIR_DOMAIN_EVENT_DEFINED,
>> +                                    VIR_DOMAIN_EVENT_DEFINED_FROM_SNAPSHOT);
>> +        qemuDomainEventQueue(driver, define_event);
>> +    }
> 
> This will emit the event even if the configuration itself didn't change.
> We do a similar thing when you switch off the VM. The next-start config
> replaces the current config. This is implied by the events of starting
> and stopping of the VM.
> 
> Since the internal snapshot code doesn't restart qemu in some cases,
> that's when the configuration can't change (which actually might be
> implemented wrong in a few places). For snapshot state transitions that
> change domain state, the appropriate events are already used.
> 
> As of the reasons above, I'd like you to provide some justification why
> this is a good thing to do.
> 
> Peter
> 
> 
> 
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
> 




More information about the libvir-list mailing list