[libvirt] [PATCH 1/6] Enhance the streams helper to support plain file I/O

Daniel P. Berrange berrange at redhat.com
Thu Apr 7 18:29:29 UTC 2011


On Thu, Apr 07, 2011 at 10:41:34AM -0600, Jim Fehlig wrote:
> Wen Congyang wrote:
> > At 03/24/2011 01:36 AM, Daniel P. Berrange Write:
> >   
> >> The O_NONBLOCK flag doesn't work as desired on plain files
> >> or block devices. Introduce an I/O helper program that does
> >> the blocking I/O operations, communicating over a pipe that
> >> can support O_NONBLOCK
> >>
> >> * src/fdstream.c, src/fdstream.h: Add non-blocking I/O
> >>   on plain files/block devices
> >> * src/Makefile.am, src/util/iohelper.c: I/O helper program
> >> * src/qemu/qemu_driver.c, src/lxc/lxc_driver.c,
> >>   src/uml/uml_driver.c, src/xen/xen_driver.c: Update for
> >>   streams API change
> >> ---
> >>  po/POTFILES.in         |    1 +
> >>  src/Makefile.am        |   12 +++
> >>  src/fdstream.c         |  233 ++++++++++++++++++++++++++++++++++++------------
> >>  src/fdstream.h         |    5 +
> >>  src/lxc/lxc_driver.c   |    2 +-
> >>  src/qemu/qemu_driver.c |    2 +-
> >>  src/uml/uml_driver.c   |    2 +-
> >>  src/util/iohelper.c    |  203 +++++++++++++++++++++++++++++++++++++++++
> >>  src/xen/xen_driver.c   |    2 +-
> >>  9 files changed, 402 insertions(+), 60 deletions(-)
> >>  create mode 100644 src/util/iohelper.c
> >>
> >> diff --git a/po/POTFILES.in b/po/POTFILES.in
> >> index 805e5ca..12adb3e 100644
> >> --- a/po/POTFILES.in
> >> +++ b/po/POTFILES.in
> >> @@ -94,6 +94,7 @@ src/util/event_poll.c
> >>  src/util/hash.c
> >>  src/util/hooks.c
> >>  src/util/hostusb.c
> >> +src/util/iohelper.c
> >>  src/util/interface.c
> >>  src/util/iptables.c
> >>  src/util/json.c
> >> diff --git a/src/Makefile.am b/src/Makefile.am
> >> index c3729a6..1d8115b 100644
> >> --- a/src/Makefile.am
> >> +++ b/src/Makefile.am
> >> @@ -380,6 +380,9 @@ STORAGE_DRIVER_DISK_SOURCES =					\
> >>  STORAGE_HELPER_DISK_SOURCES =					\
> >>  		storage/parthelper.c
> >>  
> >> +UTIL_IO_HELPER_SOURCES =					\
> >> +		util/iohelper.c
> >> +
> >>  # Network filters
> >>  NWFILTER_DRIVER_SOURCES =					\
> >>  		nwfilter/nwfilter_driver.h nwfilter/nwfilter_driver.c	\
> >> @@ -1203,6 +1206,15 @@ EXTRA_DIST += $(LIBVIRT_QEMU_SYMBOL_FILE)
> >>  
> >>  libexec_PROGRAMS =
> >>  
> >> +libexec_PROGRAMS += libvirt_iohelper
> >> +libvirt_iohelper_SOURCES = $(UTIL_IO_HELPER_SOURCES)
> >> +libvirt_iohelper_LDFLAGS = $(WARN_LDFLAGS) $(AM_LDFLAGS)
> >> +libvirt_iohelper_LDADD =		\
> >> +		libvirt_util.la		\
> >> +		../gnulib/lib/libgnu.la
> >> +
> >> +libvirt_iohelper_CFLAGS = $(AM_CFLAGS)
> >> +
> >>     
> >
> > Is libvirt_iohelper for libvirtd?
> >
> > libvirt_iohelper is provided by libvirt-<version>.rpm, but we still install it
> > when we build withoud libvirtd. We will meet the following problems:
> >
> > Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/wency/rpmbuild/BUILDROOT/libvirt-0.9.0-1.el6.x86_64
> > error: Installed (but unpackaged) file(s) found:
> >    /usr/libexec/libvirt_iohelper
> >   
> 
> I met the same problem and added libvirt-iohelper to our client
> package.  Is it used in client-only configuration?

It is only currently used in the QEMU or storage drivers, which are
both daemon based.

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list