Add libxenlight driver
PATCH v3 1/1 Add libxenlight driver
Hi All,
Another update to the libxenlight driver for Xen 4.1. The primary change in this version is reservation of vnc ports within the driver when autoport=yes. libxenlight does not provide a mechanism to retrieve the auto-selected port and the 'vncunused' option is not in upstream qemu anyhow, so best to avoid it.
I've tested the following operations on both pv and hvm linux guests:
define, undefine, start, create, shutdown, reboot, destroy, getinfo, and dumpxml. I've also done some minimal testing with virt-manager, e.g. starting a previously defined domain and connecting to its graphical console.
Thanks for your review and comments.
Regards,
Jim
Quoted 1 line
From
1d07b5df91ae3cfc423532ccef75e79ddac8f571Mon Sep 17 00:00:00 2001
From: Jim Fehlig <[email protected]>
Date: Thu, 10 Feb 2011 15:42:34 -0700
Subject: [PATCH] Add libxenlight driver
Add a new xen driver based on libxenlight [1], which is the primary toolstack starting with Xen 4.1.0. The driver is stateful, runs privileged only, and is accessed with libxl:/// URI.
V3:
- Reserve vnc port within driver when autoport=yes
V2:
- Update to Xen 4.1 RC6-pre (c/s 22940:5a4710640f81)
- Rebased to current master
- Plug memory leaks found by Stefano Stabellini and valgrind
- Handle SHUTDOWN_crash domain death event
[1] http://lists.xensource.com/archives/html/xen-devel/2009-11/msg00436.html
--- cfg.mk | 1 + configure.ac | 48 ++ daemon/Makefile.am | 4 + daemon/libvirtd.c | 6 + docs/drivers.html.in | 3 +- docs/drvxen.html.in | 6 +- docs/drvxenlight.html.in | 53 ++ docs/sitemap.html.in | 6 +- include/libvirt/virterror.h | 1 + po/POTFILES.in | 2 + src/Makefile.am | 32 ++ src/driver.h | 3 +- src/libvirt.c | 4 + src/libxl/libxl_conf.c | 965 ++++++++++++++++++++++++++++++++ src/libxl/libxl_conf.h | 94 ++++ src/libxl/libxl_driver.c | 1303 +++++++++++++++++++++++++++++++++++++++++++ src/libxl/libxl_driver.h | 27 + src/util/virterror.c | 3 + 18 files changed, 2557 insertions(+), 4 deletions(-)
cfg.mk +1 -0
@@ -402,6 +402,7 @@ msg_gen_function += virXenStoreError msg_gen_function += virXendError msg_gen_function += vmwareError msg_gen_function += xenapiSessionErrorHandler +msg_gen_function += libxlError msg_gen_function += xenUnifiedError msg_gen_function += xenXMError msg_gen_function += VIR_ERROR
configure.ac +48 -0
72 lines not on this page · raw message
daemon/Makefile.am +4 -0
@@ -112,6 +112,10 @@ if WITH_LXC libvirtd_LDADD += ../src/libvirt_driver_lxc.la endif +if WITH_LIBXL + libvirtd_LDADD += ../src/libvirt_driver_libxl.la +endif + if WITH_UML libvirtd_LDADD += ../src/libvirt_driver_uml.la endif
daemon/libvirtd.c +6 -0
@@ -80,6 +80,9 @@# ifdef WITH_LXC # include "lxc/lxc_driver.h" # endif +# ifdef WITH_LIBXL +# include "libxl/libxl_driver.h" +# endif # ifdef WITH_UML # include "uml/uml_driver.h" # endif
@@ -928,6 +931,9 @@ static struct qemud_server *qemudInitialize(void) {# ifdef WITH_LXC lxcRegister ();# endif +# ifdef WITH_LIBXL +libxlRegister (); +# endif # ifdef WITH_UML umlRegister ();# endif
docs/drivers.html.in +2 -1
@@ -28,7 +28,8 @@ <li><strong><a href="drvvbox.html">VirtualBox</a></strong></li> <li><strong><a href="drvesx.html">VMware ESX</a></strong></li> <li><strong><a href="drvvmware.html">VMware Workstation/Player</a></strong></li> - <li><strong><a href="drvxen.html">Xen</a></strong></li> + <li><strong><a href="drvxen.html">Xen 3.0.1 - 4.0.x</a></strong></li> + <li><strong><a href="drvxenlight.html">Xen 4.1.0 onwards</a></strong></li> </ul> <h2><a name="stroage">Storage drivers</a></h2>
docs/drvxen.html.in +5 -1
@@ -6,7 +6,11 @@ <p> The libvirt Xen driver provides the ability to manage virtual machines - on any Xen release from 3.0.1 onwards. + on any Xen release from 3.0.1 to 4.0.x. Starting with Xen 4.1.0, + the traditional xm/xend toolstack is replaced with a new toolstack + based on libxenlight. Consult the + <a href="drvxenlight.html">libxenlight driver</a> if your Xen host is + configured to use the new toolstack. </p> <h2><a name="prereq">Deployment pre-requisites</a></h2>
docs/drvxenlight.html.in new file +53 -0
53 lines not on this page · raw message
docs/sitemap.html.in +5 -1
@@ -156,7 +156,11 @@ <ul> <li> <a href="drvxen.html">Xen</a> - <span>Driver the Xen hypervisor</span> + <span>Driver the Xen hypervisor, versions 3.0.1 - 4.0.x</span> + </li> + <li> + <a href="drvxenlight.html">libxenlight</a> + <span>Driver the Xen hypervisor, version 4.1.0 onwards</span> </li> <li> <a href="drvqemu.html">QEMU / KVM</a>
include/libvirt/virterror.h +1 -0
@@ -79,6 +79,7 @@ typedef enum {VIR_FROM_SYSINFO =37 ,/* Error from sysinfo/SMBIOS */ VIR_FROM_STREAMS =38 ,/* Error from I/O streams */ VIR_FROM_VMWARE =39 ,/* Error from VMware driver */ +VIR_FROM_LIBXL =40 ,/* Error from libxenlight driver */ } virErrorDomain;
po/POTFILES.in +2 -0
@@ -34,6 +34,8 @@ src/lxc/lxc_conf.c src/lxc/lxc_controller.c src/lxc/lxc_driver.c src/lxc/veth.c +src/libxl/libxl_driver.c +src/libxl/libxl_conf.c src/network/bridge_driver.c src/node_device/node_device_driver.c src/node_device/node_device_hal.c
src/Makefile.am +32 -0
@@ -297,6 +297,10 @@ XENAPI_DRIVER_SOURCES = \ xenapi/xenapi_driver_private.h \ xenapi/xenapi_utils.c xenapi/xenapi_utils.h +LIBXL_DRIVER_SOURCES = \ + libxl/libxl_conf.c libxl/libxl_conf.h \ + libxl/libxl_driver.c libxl/libxl_driver.h + UML_DRIVER_SOURCES = \ uml/uml_conf.c uml/uml_conf.h \ uml/uml_driver.c uml/uml_driver.h
@@ -691,6 +695,25 @@ endif libvirt_driver_xenapi_la_SOURCES = $(XENAPI_DRIVER_SOURCES) endif +if WITH_LIBXL +if WITH_DRIVER_MODULES +mod_LTLIBRARIES += libvirt_driver_libxl.la +else +noinst_LTLIBRARIES += libvirt_driver_libxl.la +# Stateful, so linked to daemon instead +#libvirt_la_BUILT_LIBADD += libvirt_driver_libxl.la +endif +libvirt_driver_libxl_la_CFLAGS = $(LIBXL_CFLAGS) \ + -I@top_srcdir@/src/conf $(AM_CFLAGS) +libvirt_driver_libxl_la_LDFLAGS = $(AM_LDFLAGS) +libvirt_driver_libxl_la_LIBADD = $(LIBXL_LIBS) +if WITH_DRIVER_MODULES +libvirt_driver_libxl_la_LIBADD += ../gnulib/lib/libgnu.la +libvirt_driver_libxl_la_LDFLAGS += -module -avoid-version +endif +libvirt_driver_libxl_la_SOURCES = $(LIBXL_DRIVER_SOURCES) +endif + if WITH_QEMU if WITH_DRIVER_MODULES mod_LTLIBRARIES += libvirt_driver_qemu.la
@@ -990,6 +1013,7 @@ EXTRA_DIST += \ $(PHYP_DRIVER_SOURCES) \ $(VBOX_DRIVER_SOURCES) \ $(XENAPI_DRIVER_SOURCES) \ + $(LIBXL_DRIVER_SOURCES) \ $(ESX_DRIVER_SOURCES) \ $(ESX_DRIVER_EXTRA_DIST) \ $(NETWORK_DRIVER_SOURCES) \
@@ -1244,6 +1268,10 @@ if WITH_LXC $(MKDIR_P) "$(DESTDIR)$(localstatedir)/lib/libvirt/lxc" $(MKDIR_P) "$(DESTDIR)$(localstatedir)/run/libvirt/lxc" endif +if WITH_LIBXL + $(MKDIR_P) "$(DESTDIR)$(localstatedir)/lib/libvirt/libxl" + $(MKDIR_P) "$(DESTDIR)$(localstatedir)/run/libvirt/libxl" +endif if WITH_UML $(MKDIR_P) "$(DESTDIR)$(localstatedir)/lib/libvirt/uml" $(MKDIR_P) "$(DESTDIR)$(localstatedir)/run/libvirt/uml"
@@ -1281,6 +1309,10 @@ if WITH_LXC rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/lxc" ||: rmdir "$(DESTDIR)$(localstatedir)/run/libvirt/lxc" ||: endif +if WITH_LIBXL + rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/libxl" ||: + rmdir "$(DESTDIR)$(localstatedir)/run/libvirt/libxl" ||: +endif if WITH_UML rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/uml" ||: rmdir "$(DESTDIR)$(localstatedir)/run/libvirt/uml" ||:
src/driver.h +2 -1
@@ -27,7 +27,8 @@ typedef enum {VIR_DRV_ESX =10 ,VIR_DRV_PHYP =11 ,VIR_DRV_XENAPI =12 , - VIR_DRV_VMWARE = 13 +VIR_DRV_VMWARE =13 , +VIR_DRV_LIBXL =14 , } virDrvNo;
src/libvirt.c +4 -0
@@ -912,6 +912,10 @@ virGetVersion(unsigned long *libVer, const char *type,if (STRCASEEQ (type,"LXC" )) *typeVer =LIBVIR_VERSION_NUMBER ;# endif +# if WITH_LIBXL +if (STRCASEEQ (type,"libxl" )) + *typeVer =LIBVIR_VERSION_NUMBER ; +# endif # if WITH_PHYP if (STRCASEEQ (type,"phyp" )) *typeVer =LIBVIR_VERSION_NUMBER ;
src/libxl/libxl_conf.c new file +965 -0
965 lines not on this page · raw message
src/libxl/libxl_conf.h new file +94 -0
94 lines not on this page · raw message
src/libxl/libxl_driver.c new file +1303 -0
1,303 lines not on this page · raw message
src/libxl/libxl_driver.h new file +27 -0
@@ -0,0 +1,27 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2.1 of the License, or (at your option) any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ +/*---------------------------------------------------------------------------*/ + +#ifndef LIBXL_DRIVER_H +# define LIBXL_DRIVER_H + +# include <config.h> + +int libxlRegister (void ); + +#endif /* LIBXL_DRIVER_H */
src/util/virterror.c +3 -0
@@ -89,6 +89,9 @@ static const char *virErrorDomainName(virErrorDomain domain) {case VIR_FROM_XENAPI : dom ="XenAPI " ;break ; +case VIR_FROM_LIBXL : + dom ="libxenlight " ; +break ;case VIR_FROM_XML : dom ="XML " ;break ;
Signature · 1 line
1.7.3.1
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel