[libvirt] [PATCH LIBVIRT] libxl: don't end job for ephemeal domain on start failure

Jim Fehlig jfehlig at suse.com
Fri Sep 11 15:41:00 UTC 2015


On 09/11/2015 03:14 AM, Michal Privoznik wrote:
> On 10.09.2015 17:45, Ian Campbell wrote:
>> commit 4b53d0d4ac9c "libxl: don't remove persistent domain on start
>> failure" cleans up the vm object and sets it to NULL if the vm is not
>> persistent, however at end job vm (now NULL) is dereferenced via the call to
>> libxlDomainObjEndJob. Avoid this by skipping "endjob" and going
>> straight to "cleanup" in this case.
>>
>> Signed-off-by: Ian Campbell <ian.campbell at citrix.com>
>> ---
>>   src/libxl/libxl_driver.c | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
>> index 5f69b49..e2797d5 100644
>> --- a/src/libxl/libxl_driver.c
>> +++ b/src/libxl/libxl_driver.c
>> @@ -992,6 +992,7 @@ libxlDomainCreateXML(virConnectPtr conn, const char *xml,
>>           if (!vm->persistent) {
>>               virDomainObjListRemove(driver->domains, vm);
>>               vm = NULL;
>> +            goto cleanup;
>>           }
>>           goto endjob;
>>       }
>>
> While usually having cleanup label in between BeginJob and EndJob is
> causing troubles, here it is desired.
>
> ACKed and pushed.
>
> Although, looking at the code, maybe it's time to make it look more like
> qemu driver. I mean, wrapping EndJob(); vm= NULL; into one function. Do
> proper refcounting, etc.

I have a patch to do just that

https://www.redhat.com/archives/libvir-list/2015-June/msg00711.html

Sadly, I haven't found time to address Martin's latest comments, do another 
round of testing, and submit a V2.

Regards,
Jim




More information about the libvir-list mailing list