[libvirt] QEMU/KVM auto-detection bug

Chris Lalancette clalance at redhat.com
Tue May 12 09:55:17 UTC 2009


Pritesh Kothari wrote:
> On Tuesday 12 May 2009 11:36:50 Chris Lalancette wrote:
>> All,
>>      Even with Guido/Pritesh's recent changes to the vbox open routine, the
>> auto-detection in libvirt is currently broken.  What happens is that in
>> src/libvirt.c:do_open(), at the start of the loop to auto-detect drivers,
>> ret->uri is NULL.  As each driver declines, it remains NULL.  However, the
>> very first thing the vboxOpen() routine does is:
>>
>>     if (conn->uri == NULL) {
>>         conn->uri = xmlParseURI(uid ? "vbox:///session" :
>> "vbox:///system"); if (conn->uri == NULL) {
>>             return VIR_DRV_OPEN_ERROR;
>>         }
>>
>> So, any driver that is trying to auto-probe after vboxOpen sees a conn->uri
>> with a scheme of vbox and a path of system/session, and they all fail
>> (including Qemu, which is what I'm mostly concerned with at the moment).
> 
> 
> this seems to be common case in all other drivers also, for example uml, 
> openvz, etc does the same and not to mention that qemu driver does it also, so 
> i guess the fix should apply to all and not just vbox driver.

Well, yes and no.  They all do it, but only *after* doing their probe routines.
 At least, I've never had a problem with auto-detection until I enabled vbox to
build in my libvirt config.

Like I said, though, the whole thing is fragile, and yes, I would prefer
something that would help all of the drivers.  Resetting the conn->uri pointer
to NULL in each iteration of the loop is tempting and easy, but on the other
hand, it could easily cause resource leaks in drivers to go undetected.

-- 
Chris Lalancette




More information about the libvir-list mailing list