From b7caae92e113a0cc449ff6dc8f9466bd8d836144 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Fri, 26 Jul 2013 17:28:02 +0100 Subject: [PATCH] Fix probing of legacy Xen driver to not leave URI set 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 --- src/xen/xen_driver.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c index 39334b75ec..4ae38d37ad 100644 --- a/src/xen/xen_driver.c +++ b/src/xen/xen_driver.c @@ -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 */