]> xenbits.xensource.com Git - libvirt.git/commitdiff
Fix probing of legacy Xen driver to not leave URI set
authorDaniel P. Berrange <berrange@redhat.com>
Fri, 26 Jul 2013 16:28:02 +0000 (17:28 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Mon, 29 Jul 2013 10:28:09 +0000 (11:28 +0100)
When the legacy Xen driver probes with a NULL URI, and
finds itself running on Xen, it will set conn->uri. A
little bit later though it checks to see if libxl support
exists, and if so declines the driver. This leaves the
conn->uri set to 'xen:///', so if libxl also declines
it, it prevents probing of the QEMU driver.

Once a driver has set the conn->uri, it must *never*
decline an open request. So we must move the libxl
check earlier

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
src/xen/xen_driver.c

index 39334b75ecc04e8f8c75af6672c068f634d4397e..4ae38d37ad0ebb8aad3af2bc2b032232c0436474 100644 (file)
@@ -365,6 +365,13 @@ xenUnifiedConnectOpen(virConnectPtr conn, virConnectAuthPtr auth, unsigned int f
         if (!xenUnifiedProbe())
             return VIR_DRV_OPEN_DECLINED;
 
+#ifdef WITH_LIBXL
+        /* Decline xen:// URI if xend is not running and libxenlight
+         * driver is potentially available. */
+        if (!xenUnifiedXendProbe())
+            return VIR_DRV_OPEN_DECLINED;
+#endif
+
         if (!(conn->uri = virURIParse("xen:///")))
             return VIR_DRV_OPEN_ERROR;
     } else {
@@ -374,6 +381,12 @@ xenUnifiedConnectOpen(virConnectPtr conn, virConnectAuthPtr auth, unsigned int f
                 STRCASENEQ(conn->uri->scheme, "http"))
                 return VIR_DRV_OPEN_DECLINED;
 
+#ifdef WITH_LIBXL
+            /* Decline xen:// URI if xend is not running and libxenlight
+             * driver is potentially available. */
+            if (!xenUnifiedXendProbe())
+                return VIR_DRV_OPEN_DECLINED;
+#endif
 
             /* Return an error if the path isn't '' or '/' */
             if (conn->uri->path &&
@@ -395,13 +408,6 @@ xenUnifiedConnectOpen(virConnectPtr conn, virConnectAuthPtr auth, unsigned int f
         }
     }
 
-#ifdef WITH_LIBXL
-    /* Decline xen:// URI if xend is not running and libxenlight
-     * driver is potentially available. */
-    if (!xenUnifiedXendProbe())
-        return VIR_DRV_OPEN_DECLINED;
-#endif
-
     /* We now know the URI is definitely for this driver, so beyond
      * here, don't return DECLINED, always use ERROR */