Libvirt provides a portable, long term stable C API for managing the virtualization technologies provided by many operating systems. It includes support for QEMU, KVM, Xen, LXC, bhyve, Virtuozzo, VMware vCenter and ESX, VMware Desktop, Hyper-V, VirtualBox and the POWER Hypervisor.
Go to file
Laine Stump 822fe1367d netcf driver: use a single netcf handle for all connections
This resolves: https://bugzilla.redhat.com/show_bug.cgi?id=983026

The netcf interface driver previously had no state driver associated
with it - as a connection was opened, it would create a new netcf
instance just for that connection, and close it when it was
finished. the problem with this is that each connection to libvirt
used up a netlink socket, and there is a per process maximum of ~1000
netlink sockets.

The solution is to create a state driver to go along with the netcf
driver. The state driver will opens a netcf instance, then all
connections share that same netcf instance, thus only a single
netlink socket will be used no matter how many connections are mde to
libvirtd.

This was rather simple to do - a new virObjectLockable class is
created for the single driverState object, which is created in
netcfStateInitialize and contains the single netcf handle; instead of
creating a new object for each client connection, netcfInterfaceOpen
now just increments the driverState object's reference count and puts
a pointer to it into the connection's privateData. Similarly,
netcfInterfaceClose() just un-refs the driverState object (as does
netcfStateCleanup()), and virNetcfInterfaceDriverStateDispose()
handles closing the netcf instance. Since all the functions already
have locking around them, the static lock functions used by all
functions just needed to be changed to call virObjectLock() and
virObjectUnlock() instead of directly calling the virMutex* functions.
2013-09-12 07:33:24 -04:00
.gnulib@0ba087759d maint: update gnulib submodule 2013-08-15 16:54:30 -06:00
build-aux Add API for calling systemd-machined's DBus API 2013-07-22 13:09:58 +01:00
daemon build: use library rather than cross-directory compilation 2013-09-09 12:04:03 -06:00
docs Add some notes about security considerations when using LXC 2013-09-12 11:48:29 +01:00
examples build: only install nwfilter examples when building nwfilter 2013-09-04 13:48:27 -06:00
gnulib build: enforce makefile conditional style 2013-09-04 09:40:20 -06:00
include Add flag to BaselineCPU API to return detailed CPU features 2013-08-16 15:31:18 -06:00
m4 build: fix regression in requiring yajl for new enough qemu 2013-09-10 12:03:19 -06:00
po libxl: Introduce libxl_domain.[ch] 2013-09-03 16:43:20 -06:00
python docs, comments: minor typo fixes 2013-09-10 17:06:41 -06:00
src netcf driver: use a single netcf handle for all connections 2013-09-12 07:33:24 -04:00
tests Fix launching of VMs on when only logind part of systemd is present 2013-09-12 11:32:36 +01:00
tools virsh domjobinfo: Do not return 1 if job is NONE 2013-09-12 11:31:49 +02:00
.ctags maint: Make ctags work out of the box 2013-07-18 08:47:21 +02:00
.dir-locals.el build: avoid tabs that failed syntax-check 2012-09-06 09:43:46 -06:00
.gitignore build: use automake subdir-objects 2013-09-09 12:04:03 -06:00
.gitmodules make .gnulib a submodule 2009-07-08 16:17:51 +02:00
.mailmap Autogenerate AUTHORS 2012-10-19 12:44:56 -04:00
AUTHORS.in Add John Ferlan to the committers list 2013-02-05 10:59:32 -05:00
autobuild.sh build: add configure option to disable gnulib tests 2013-08-12 10:02:38 -06:00
autogen.sh autogen.sh: Correctly detect .git as a file 2013-08-29 13:19:45 +02:00
bootstrap maint: update gnulib submodule 2013-08-15 16:54:30 -06:00
bootstrap.conf maint: avoid bootstrap warning 2013-08-15 16:54:06 -06:00
cfg.mk tests: check remaining .x files 2013-09-09 12:04:03 -06:00
ChangeLog-old docs, comments: minor typo fixes 2013-09-10 17:06:41 -06:00
configure.ac build: require libnl-3 if netcf uses it 2013-09-11 14:10:33 -06:00
COPYING maint: follow recommended practice for using LGPL 2013-05-20 14:15:21 -06:00
COPYING.LESSER maint: follow recommended practice for using LGPL 2013-05-20 14:15:21 -06:00
HACKING docs: mention VIR_TEST_RANGE 2013-08-12 20:44:41 -06:00
libvirt.pc.in Add missing 'libvirt_lxc_api' variable in pkg-config file 2013-09-04 14:52:40 +01:00
libvirt.spec.in spec: make client-only testing easier 2013-09-05 07:06:36 -06:00
Makefile.am maint: split long lines in Makefiles 2013-07-19 05:25:35 -06:00
Makefile.nonreentrant maint: use LGPL correctly 2013-05-20 14:03:48 -06:00
mingw-libvirt.spec.in build: add configure option to disable gnulib tests 2013-08-12 10:02:38 -06:00
README Correct typos in the documentation (Atsushi SAKAI) 2008-01-24 10:15:13 +00:00
README-hacking maint: relax git minimum version 2010-02-24 14:29:27 -05:00
run.in run: license as LGPL 2013-02-23 14:03:19 -07:00
TODO Update todo list file to point at bugzilla/website 2010-10-13 16:45:26 +01:00

         LibVirt : simple API for virtualization

  Libvirt is a C toolkit to interact with the virtualization capabilities
of recent versions of Linux (and other OSes). It is free software
available under the GNU Lesser General Public License. Virtualization of
the Linux Operating System means the ability to run multiple instances of
Operating Systems concurrently on a single hardware system where the basic
resources are driven by a Linux instance. The library aim at providing
long term stable C API initially for the Xen paravirtualization but
should be able to integrate other virtualization mechanisms if needed.

Daniel Veillard <veillard@redhat.com>