From f781e27653c7e50747c414a916c788cfc81760c4 Mon Sep 17 00:00:00 2001 From: Jim Fehlig Date: Thu, 30 Aug 2012 12:53:02 -0600 Subject: [PATCH] Fix xen driver following changes to make it stateful Recent work to improve support for loadable driver modules introduced a regression in the xen driver. The legacy xen driver is now a stateful, libvirtd driver but was not being registered when building without driver modules. A slight behavior change was also noted in the xen drivers when built as driver modules. Previously, explicitly specifying a connection URI was not necessary, but now Compiled against library: libvirt 0.10.0 Using library: libvirt 0.10.0 Using API: QEMU 0.10.0 error: failed to get the hypervisor version error: internal error Cannot find suitable emulator for x86_64 The xen drivers need to be registered before the qemu driver since the qemu driver will return success with a null connection URI. This ordering is safe since the xen drivers will decline when not running the xen kernel. --- daemon/Makefile.am | 4 ++++ daemon/libvirtd.c | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/daemon/Makefile.am b/daemon/Makefile.am index b00fc13bce..b45349c1bd 100644 --- a/daemon/Makefile.am +++ b/daemon/Makefile.am @@ -131,6 +131,10 @@ if WITH_LXC libvirtd_LDADD += ../src/libvirt_driver_lxc.la endif +if WITH_XEN + libvirtd_LDADD += ../src/libvirt_driver_xen.la +endif + if WITH_LIBXL libvirtd_LDADD += ../src/libvirt_driver_libxl.la endif diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c index 352d4fed15..6973df6461 100644 --- a/daemon/libvirtd.c +++ b/daemon/libvirtd.c @@ -66,6 +66,9 @@ # ifdef WITH_LXC # include "lxc/lxc_driver.h" # endif +# ifdef WITH_XEN +# include "xen/xen_driver.h" +# endif # ifdef WITH_LIBXL # include "libxl/libxl_driver.h" # endif @@ -382,6 +385,12 @@ static void daemonInitialize(void) # ifdef WITH_NETCF virDriverLoadModule("interface"); # endif +# ifdef WITH_XEN + virDriverLoadModule("xen"); +# endif +# ifdef WITH_LIBXL + virDriverLoadModule("libxl"); +# endif # ifdef WITH_QEMU virDriverLoadModule("qemu"); # endif @@ -391,12 +400,6 @@ static void daemonInitialize(void) # ifdef WITH_UML virDriverLoadModule("uml"); # endif -# ifdef WITH_XEN - virDriverLoadModule("xen"); -# endif -# ifdef WITH_LIBXL - virDriverLoadModule("libxl"); -# endif #else # ifdef WITH_NETWORK networkRegister(); @@ -416,6 +419,9 @@ static void daemonInitialize(void) # ifdef WITH_NWFILTER nwfilterRegister(); # endif +# ifdef WITH_XEN + xenRegister(); +# endif # ifdef WITH_LIBXL libxlRegister(); # endif