On Thu, Jul 14, 2011 at 08:24:34AM -0600, Eric Blake wrote: > O_DIRECT has stringent requirements - I/O must occur with buffers > that have both alignment and size as multiples of the file system > block size (used to be 512 bytes, but these days, 4k is safer, and > 64k allows for better throughput). Rather than make lots of changes > at each site that wants to use O_DIRECT, it is easier to offload > the work through a helper process that mirrors the I/O between a > pipe and the actual direct fd, so that the other end of the pipe > no longer has to worry about constraints. > > * src/util/virdirect.h: New file. > * src/util/virdirect.c: Likewise. > * src/Makefile.am (UTIL_SOURCES): Build them. > * src/libvirt_private.syms: Export new symbols. > * cfg.mk (useless_free_options): Add to list. > * po/POTFILES.in: Translate new file. > --- > cfg.mk | 1 + > po/POTFILES.in | 1 + > src/Makefile.am | 1 + > src/libvirt_private.syms | 6 ++ > src/util/virdirect.c | 149 ++++++++++++++++++++++++++++++++++++++++++++++ > src/util/virdirect.h | 37 +++++++++++ > 6 files changed, 195 insertions(+), 0 deletions(-) > create mode 100644 src/util/virdirect.c > create mode 100644 src/util/virdirect.h > > diff --git a/cfg.mk b/cfg.mk > index 2873177..69d2b6a 100644 > --- a/cfg.mk > +++ b/cfg.mk > @@ -97,6 +97,7 @@ useless_free_options = \ > --name=virCommandFree \ > --name=virConfFreeList \ > --name=virConfFreeValue \ > + --name=virDirectFdFree \ > --name=virDomainChrDefFree \ > --name=virDomainChrSourceDefFree \ > --name=virDomainControllerDefFree \ > diff --git a/po/POTFILES.in b/po/POTFILES.in > index 5782cbf..ad031f3 100644 > --- a/po/POTFILES.in > +++ b/po/POTFILES.in > @@ -122,6 +122,7 @@ src/util/storage_file.c > src/util/sysinfo.c > src/util/util.c > src/util/viraudit.c > +src/util/virdirect.c > src/util/virterror.c > src/util/xml.c > src/vbox/vbox_MSCOMGlue.c > diff --git a/src/Makefile.am b/src/Makefile.am > index d19d1ca..ce041b4 100644 > --- a/src/Makefile.am > +++ b/src/Makefile.am > @@ -80,6 +80,7 @@ UTIL_SOURCES = \ > util/uuid.c util/uuid.h \ > util/util.c util/util.h \ > util/viraudit.c util/viraudit.h \ > + util/virdirect.c util/virdirect.h \ > util/xml.c util/xml.h \ > util/virterror.c util/virterror_internal.h > > diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms > index f95d341..c78485d 100644 > --- a/src/libvirt_private.syms > +++ b/src/libvirt_private.syms > @@ -1085,6 +1085,12 @@ virAuditOpen; > virAuditSend; > > > +# virdirect.h > +virDirectFdClose; > +virDirectFdFree; > +virDirectFdNew; The principle all seems fine, but I'm wondering about the naming of this. Also perhaps we could put this in the files.h module ? It would be nice to eventually move all virFile named APIs into there and perhaps even rename it to virfile.{c,h} Regards, 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 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list