Nir Soffer
2018-Jul-29 11:35 UTC
[Libguestfs] [PATCH 1/2] file: Add missing include for FALLOC_FL_*
On RHEL 7.5 we need to include <linux/falloc.h> for FALLOC_FL_* macros. Without the macros, fallocate is never used and we fall back to manual zeroing. Here are examples runs with this change with a local file on ext4: $ export SOCK=/tmp/nbd.sock $ export FILE=/var/tmp/nbd.img $ export BLOCK=/dev/loop2 $ src/nbdkit -f plugins/file/.libs/nbdkit-file-plugin.so file=$FILE -U $SOCK $ time qemu-img convert -n -f raw -O raw /var/tmp/fedora-27.img nbd:unix:$SOCK real 0m13.361s user 0m0.127s sys 0m0.668s $ src/nbdkit -f plugins/file/.libs/nbdkit-file-plugin.so file=$BLOCK -U $SOCK $ time qemu-img convert -n -f raw -O raw /var/tmp/fedora-27.img nbd:unix:$SOCK real 0m13.491s user 0m0.129s sys 0m0.612s --- plugins/file/file.c | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/file/file.c b/plugins/file/file.c index 4210adb..fb20622 100644 --- a/plugins/file/file.c +++ b/plugins/file/file.c @@ -41,6 +41,7 @@ #include <sys/types.h> #include <sys/stat.h> #include <errno.h> +#include <linux/falloc.h> /* For FALLOC_FL_* on RHEL, glibc < 2.18 */ #include <nbdkit-plugin.h> -- 2.17.1
Eric Blake
2018-Jul-30 14:52 UTC
Re: [Libguestfs] [PATCH 1/2] file: Add missing include for FALLOC_FL_*
On 07/29/2018 06:35 AM, Nir Soffer wrote:> On RHEL 7.5 we need to include <linux/falloc.h> for FALLOC_FL_* macros. > Without the macros, fallocate is never used and we fall back to manual > zeroing. >> @@ -41,6 +41,7 @@ > #include <sys/types.h> > #include <sys/stat.h> > #include <errno.h> > +#include <linux/falloc.h> /* For FALLOC_FL_* on RHEL, glibc < 2.18 */This header is not available on all platforms; does it need a configure check, or do we not care about non-Linux compilation? -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
Nir Soffer
2018-Jul-30 16:03 UTC
Re: [Libguestfs] [PATCH 1/2] file: Add missing include for FALLOC_FL_*
On Mon, Jul 30, 2018 at 6:38 PM Eric Blake <eblake@redhat.com> wrote:> On 07/29/2018 06:35 AM, Nir Soffer wrote: > > On RHEL 7.5 we need to include <linux/falloc.h> for FALLOC_FL_* macros. > > Without the macros, fallocate is never used and we fall back to manual > > zeroing. > > > > > @@ -41,6 +41,7 @@ > > #include <sys/types.h> > > #include <sys/stat.h> > > #include <errno.h> > > +#include <linux/falloc.h> /* For FALLOC_FL_* on RHEL, glibc < 2.18 */ > > This header is not available on all platforms; does it need a configure > check, or do we not care about non-Linux compilation?I'm not sure if nbdkit tries to be portable, but I think we should care. Is #if defined(__linux__) good enough for this? Nir
Richard W.M. Jones
2018-Jul-31 11:38 UTC
Re: [Libguestfs] [PATCH 1/2] file: Add missing include for FALLOC_FL_*
On Mon, Jul 30, 2018 at 09:52:46AM -0500, Eric Blake wrote:> On 07/29/2018 06:35 AM, Nir Soffer wrote: > >On RHEL 7.5 we need to include <linux/falloc.h> for FALLOC_FL_* macros. > >Without the macros, fallocate is never used and we fall back to manual > >zeroing. > > > > >@@ -41,6 +41,7 @@ > > #include <sys/types.h> > > #include <sys/stat.h> > > #include <errno.h> > >+#include <linux/falloc.h> /* For FALLOC_FL_* on RHEL, glibc < 2.18 */ > > This header is not available on all platforms; does it need a > configure check, or do we not care about non-Linux compilation?We should care about at least the *BSDs. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://libguestfs.org
Reasonably Related Threads
- [PATCH v2] file: Add missing include for FALLOC_FL_*
- [PATCH] file: Zero support for block devices and NFS 4.2
- Re: [PATCH 3/3] file: Zero for block devices on old kernels
- [PATCH 0/3] file: Zero for block devices and older file systems
- Re: [PATCH v2] file: Add missing include for FALLOC_FL_*