]> git.proxmox.com Git - mirror_zfs.git/blobdiff - config/kernel-fallocate.m4
Linux 5.20 compat: blk_cleanup_disk()
[mirror_zfs.git] / config / kernel-fallocate.m4
index 302957a6c4bac6deb54c32c4379d86e757252faa..815602d3e2c6b85592f9e81ef2628287cd1a0b4c 100644 (file)
@@ -1,10 +1,13 @@
 dnl #
+dnl # Linux 2.6.38 - 3.x API
 dnl # The fallocate callback was moved from the inode_operations
 dnl # structure to the file_operations structure.
 dnl #
+dnl #
+dnl # Linux 3.15+
+dnl # fallocate learned a new flag, FALLOC_FL_ZERO_RANGE
+dnl #
 AC_DEFUN([ZFS_AC_KERNEL_SRC_FALLOCATE], [
-
-       dnl # Linux 2.6.38 - 3.x API
        ZFS_LINUX_TEST_SRC([file_fallocate], [
                #include <linux/fs.h>
 
@@ -16,35 +19,26 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_FALLOCATE], [
                        .fallocate = test_fallocate,
                };
        ], [])
-
-       dnl # Linux 2.6.x - 2.6.37 API
-       ZFS_LINUX_TEST_SRC([inode_fallocate], [
-               #include <linux/fs.h>
-
-               long test_fallocate(struct inode *inode, int mode,
-                   loff_t offset, loff_t len) { return 0; }
-
-               static const struct inode_operations
-                   fops __attribute__ ((unused)) = {
-                       .fallocate = test_fallocate,
-               };
-       ], [])
+       ZFS_LINUX_TEST_SRC([falloc_fl_zero_range], [
+               #include <linux/falloc.h>
+       ],[
+               int flags __attribute__ ((unused));
+               flags = FALLOC_FL_ZERO_RANGE;
+       ])
 ])
 
 AC_DEFUN([ZFS_AC_KERNEL_FALLOCATE], [
        AC_MSG_CHECKING([whether fops->fallocate() exists])
        ZFS_LINUX_TEST_RESULT([file_fallocate], [
                AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_FILE_FALLOCATE, 1, [fops->fallocate() exists])
-       ],[
-               AC_MSG_RESULT(no)
-       ])
-
-       AC_MSG_CHECKING([whether iops->fallocate() exists])
-       ZFS_LINUX_TEST_RESULT([inode_fallocate], [
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_INODE_FALLOCATE, 1, [fops->fallocate() exists])
+               AC_MSG_CHECKING([whether FALLOC_FL_ZERO_RANGE exists])
+               ZFS_LINUX_TEST_RESULT([falloc_fl_zero_range], [
+                       AC_MSG_RESULT(yes)
+                       AC_DEFINE(HAVE_FALLOC_FL_ZERO_RANGE, 1, [FALLOC_FL_ZERO_RANGE is defined])
+               ],[
+                       AC_MSG_RESULT(no)
+               ])
        ],[
-               AC_MSG_RESULT(no)
+               ZFS_LINUX_TEST_ERROR([file_fallocate])
        ])
 ])