Read-only mirror. Please submit merge requests / issues to https://gitlab.com/libvirt/libvirt
Go to file
Michal Privoznik d1a60f4c3b virfdstream: Drop iohelper in favour of a thread
Currently we use iohelper for virFDStream implementation. This is
because UNIX I/O can lie sometimes: even though a FD for a
file/block device is set as unblocking, actual read()/write() can
block. To avoid this, a pipe is created and one end is kept for
read/write while the other is handed over to iohelper to
write/read the data for us. Thus it's iohelper which gets blocked
and not our event loop.

This approach has two problems:
1) we are spawning a new process.
2) any exchange of information between daemon and iohelper can be
done only through the pipe.

Therefore, iohelper is replaced with an implementation in thread
which is created just for the stream lifetime. The data are still
transferred through pipe (for now), but both problems described
above are solved.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2017-04-28 14:17:10 +02:00
.gnulib@94386a1366 maint: update to latest gnulib 2017-01-10 12:54:54 -06:00
build-aux annotate all mocked functions with noinline 2017-04-19 10:51:51 +01:00
daemon remote: Fix possible use-after-free when sending event message 2017-04-25 07:26:36 -04:00
docs qemu: add support for qemu-xhci USB controller 2017-04-28 10:44:36 +02:00
examples lib: Fix c99 style comments 2017-04-27 14:13:19 +02:00
gnulib build: drop hack for old mingw ssize_t 2016-07-12 08:57:13 -06:00
include/libvirt Add VIR_DOMAIN_JOB_OPERATION typed parameter 2017-04-27 15:06:40 +02:00
m4 locking: Add support for sanlock_strerror 2017-04-27 11:44:11 +02:00
po Refresh translations from zanata 2017-04-19 16:58:12 +01:00
src virfdstream: Drop iohelper in favour of a thread 2017-04-28 14:17:10 +02:00
tests fdstreamtest: Print more info on read failure 2017-04-28 14:17:10 +02:00
tools Add VIR_DOMAIN_JOB_OPERATION typed parameter 2017-04-27 15:06:40 +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 Add ability to generate man page describing key code names & values 2017-04-25 21:20:43 +01:00
.gitmodules util: switch over to use keycodemapdb GIT submodule 2017-04-25 21:14:18 +01:00
.mailmap maint: update .mailmap for recent contributions 2015-03-20 06:17:55 -06:00
.travis.yml Add travis build configuration 2017-04-19 10:51:51 +01:00
AUTHORS.in Change maintainers list 2016-02-12 13:10:05 +03:00
autogen.sh autogen.sh: Improve and generalize 2017-04-25 09:52:37 +02:00
bootstrap maint: update to latest gnulib 2017-01-10 12:54:54 -06:00
bootstrap.conf hvsupport: use a regex instead of XML::XPath 2016-07-19 18:42:44 +02:00
cfg.mk xenconfig: add conversions for xen-xl 2017-04-27 15:05:44 -06:00
ChangeLog-old Fix typos in src/* 2014-04-21 16:49:08 -06:00
config-post.h m4/virt-devmapper: use LIBVIRT_CHECK_(PKG|LIB) 2016-12-21 15:39:39 +01:00
configure.ac util: Add virNetDevSetCoalesce function 2017-04-21 13:29:39 +02:00
COPYING maint: follow recommended practice for using LGPL 2013-05-20 14:15:21 -06:00
COPYING.LESSER maint: Remove control characters from LGPL license file 2015-09-25 09:16:24 +02:00
HACKING Document preferred naming conventions 2017-03-10 11:28:56 +00:00
libvirt-admin.pc.in Add libvirt-admin library 2015-06-16 13:46:20 +02:00
libvirt-lxc.pc.in Add pkg-config files for libvirt-qemu & libvirt-lxc 2014-06-23 16:17:27 +01:00
libvirt-qemu.pc.in Add pkg-config files for libvirt-qemu & libvirt-lxc 2014-06-23 16:17:27 +01:00
libvirt.pc.in Add pkg-config files for libvirt-qemu & libvirt-lxc 2014-06-23 16:17:27 +01:00
libvirt.spec.in Add ability to generate man page describing key code names & values 2017-04-25 21:20:43 +01:00
Makefile.am Drop autobuild.sh 2017-04-13 19:03:46 +02:00
Makefile.nonreentrant cfg.mk: use a single regex for all non-reentrant functions 2016-06-15 15:00:56 +02:00
mingw-libvirt.spec.in Add ability to generate man page describing key code names & values 2017-04-25 21:20:43 +01:00
README Correct typos in the documentation (Atsushi SAKAI) 2008-01-24 10:15:13 +00:00
README-hacking docs: update README-hacking 2014-05-06 16:20:24 -06:00
run.in Add PKG_CONFIG_PATH to run.in script. 2014-06-26 14:32:35 +01: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>