
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