Daniel Veillard wrote:
On Thu, Aug 30, 2012 at 12:53:02PM -0600, Jim Fehlig wrote:
> 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.
>
okay
> 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.
>
Okay, since if running a xen kernel, kvm is not expected to be used.
> 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 b00fc13..b45349c 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 352d4fe..6973df6 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
>
That looks fine to me, and I confirmed this didn't change the
behaviour on my non-xen machine,
I tested this on a machine with both xen and kvm installed. With the
xen kernel booted, the xen or libxl driver was used (depending on status
of xend) when no URI was specified. With the native kernel booted, the
qemu driver was used.
ACK, and pushed,
Thanks!
Jim