Go to file
Christophe Fergeau 164c03d33b Fix unwanted closing of libvirt client connection
e5a1bee07 introduced a regression in Boxes: when Boxes is left idle
(it's still doing some libvirt calls in the background), the
libvirt connection gets closed after a few minutes. What happens is
that this code in virNetClientIOHandleOutput gets triggered:

if (!thecall)
    return -1; /* Shouldn't happen, but you never know... */

and after the changes in e5a1bee07, this causes the libvirt connection
to be closed.

Upon further investigation, what happens is that
virNetClientIOHandleOutput is called from gvir_event_handle_dispatch
in libvirt-glib, which is triggered because the client fd became
writable. However, between the times gvir_event_handle_dispatch
is called, and the time the client lock is grabbed and
virNetClientIOHandleOutput is called, another thread runs and
completes the current call. 'thecall' is then NULL when the first
thread gets to run virNetClientIOHandleOutput.

After describing this situation on IRC, danpb suggested this:

11:37 < danpb> In that case I think the correct thing would be to change
               'return -1' above to 'return 0' since that's not actually an
               error - its a rare, but expected event

which is what this patch is doing. I've tested it against master
libvirt, and I didn't get disconnected in ~10 minutes while this
happens in less than 5 minutes without this patch.
2012-09-10 14:13:06 +02:00
.gnulib@440a1dbe52 build: improved handling of <execinfo.h>, BSD <net/if.h> 2012-09-06 10:08:47 -06:00
build-aux Remove tabs from all perl files & enforce this 2012-07-30 13:09:57 +01:00
daemon list: Implement RPC calls for virStoragePoolListAllVolumes 2012-09-10 10:37:43 +08:00
docs docs: point out git send-email location, be more stern about make check 2012-09-08 23:20:29 -04:00
examples examples: Fix event detail printing in python test 2012-09-07 09:38:22 +02:00
gnulib build: fix fresh checkout on RHEL5 2012-04-19 17:11:43 -06:00
include list: Define new API virStoragePoolListAllVolumes 2012-09-10 10:37:22 +08:00
m4 build: fix build on older gcc 2012-09-07 14:15:22 -06:00
po Release of libvirt-0.10.1 2012-08-31 20:41:06 +08:00
python list: Expose virStoragePoolListAllVolumes to Python binding 2012-09-10 10:41:18 +08:00
src Fix unwanted closing of libvirt client connection 2012-09-10 14:13:06 +02:00
tests Introduce a test suite for the JSON monitor 2012-09-07 13:18:09 +01:00
tools list: Use virStoragePoolListAllVolumes in virsh 2012-09-10 10:40:34 +08:00
.dir-locals.el build: avoid tabs that failed syntax-check 2012-09-06 09:43:46 -06:00
.gitignore Introduce a test suite for the JSON monitor 2012-09-07 13:18:09 +01:00
.gitmodules make .gnulib a submodule 2009-07-08 16:17:51 +02:00
.mailmap build: fix author of previous commit 2012-08-09 15:39:34 -06:00
AUTHORS Pass a correct pointer type to localtime_r(3). 2012-09-04 17:20:08 -06:00
COPYING.LIB remove all trailing blank lines 2009-07-16 15:06:42 +02:00
ChangeLog-old virterror.c: Fix several spelling mistakes 2012-02-03 11:32:51 -07:00
HACKING docs: point out git send-email location, be more stern about make check 2012-09-08 23:20:29 -04:00
Makefile.am Switch automated builds to use Mingw64 toolchain instead of Mingw32 2012-06-25 10:41:10 +01:00
Makefile.nonreentrant Ban use of all inet_* functions 2010-10-22 11:59:23 +01: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
TODO Update todo list file to point at bugzilla/website 2010-10-13 16:45:26 +01:00
autobuild.sh Switch automated builds to use Mingw64 toolchain instead of Mingw32 2012-06-25 10:41:10 +01:00
autogen.sh Allow NOCONFIGURE=1 to make autogen.sh skip ./configure 2012-06-25 10:41:10 +01:00
bootstrap maint: regenerate bootstrap 2012-07-27 09:34:04 -06:00
bootstrap.conf build: improved handling of <execinfo.h>, BSD <net/if.h> 2012-09-06 10:08:47 -06:00
cfg.mk Add helper library for testing the qemu monitor code 2012-09-07 13:18:04 +01:00
configure.ac build: improved handling of <execinfo.h>, BSD <net/if.h> 2012-09-06 10:08:47 -06:00
libvirt.pc.in build: silence warning from autoconf 2012-05-30 09:22:02 -06:00
libvirt.spec.in Fix RPM spec conditional when %{rhel} is not defined 2012-09-07 16:45:50 +01:00
mingw-libvirt.spec.in parallels: add driver skeleton 2012-08-01 11:44:26 +08:00

README

         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>