summaryrefslogtreecommitdiffstats
path: root/configure
diff options
context:
space:
mode:
authorKusanagi Kouichi2013-01-14 16:26:52 +0100
committerStefan Hajnoczi2013-01-15 10:03:47 +0100
commit3d4fa43e648f3b169e7ab5dd4e21312e510805d7 (patch)
treeec75aff5ec9aeea3c1e27b7b97cd57eb854383d4 /configure
parentblock: fix initialization in bdrv_io_limits_enable() (diff)
downloadqemu-3d4fa43e648f3b169e7ab5dd4e21312e510805d7.tar.gz
qemu-3d4fa43e648f3b169e7ab5dd4e21312e510805d7.tar.xz
qemu-3d4fa43e648f3b169e7ab5dd4e21312e510805d7.zip
raw-posix: support discard on more filesystems
Linux 2.6.38 introduced the filesystem independent interface to deallocate part of a file. As of Linux 3.7, btrfs, ext4, ocfs2, tmpfs and xfs support it. Even though the system calls here are in practice issued on Linux, the code is structured to allow plugging in alternatives for other Unix variants. EOPNOTSUPP is used unconditionally in this patch, but it is supported in both OpenBSD and Mac OS X since forever (see for example http://lists.debian.org/debian-glibc/2006/02/msg00337.html). Signed-off-by: Kusanagi Kouichi <slash@ac.auone-net.jp> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure19
1 files changed, 19 insertions, 0 deletions
diff --git a/configure b/configure
index c908f66583..40d250ccac 100755
--- a/configure
+++ b/configure
@@ -2581,6 +2581,22 @@ if compile_prog "" "" ; then
fallocate=yes
fi
+# check for fallocate hole punching
+fallocate_punch_hole=no
+cat > $TMPC << EOF
+#include <fcntl.h>
+#include <linux/falloc.h>
+
+int main(void)
+{
+ fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
+ return 0;
+}
+EOF
+if compile_prog "" "" ; then
+ fallocate_punch_hole=yes
+fi
+
# check for sync_file_range
sync_file_range=no
cat > $TMPC << EOF
@@ -3490,6 +3506,9 @@ fi
if test "$fallocate" = "yes" ; then
echo "CONFIG_FALLOCATE=y" >> $config_host_mak
fi
+if test "$fallocate_punch_hole" = "yes" ; then
+ echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
+fi
if test "$sync_file_range" = "yes" ; then
echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
fi