]> git.proxmox.com Git - mirror_zfs.git/blobdiff - config/kernel-vfs-file_range.m4
Linux 6.8 compat: use splice_copy_file_range() for fallback
[mirror_zfs.git] / config / kernel-vfs-file_range.m4
index cc96404d8bbe65b6f3087c0d8b2dea3e7c9c74e2..8a5cbe2eeeedc524cafbeb4996024dc2b66bba71 100644 (file)
@@ -16,6 +16,9 @@ dnl #
 dnl # 5.3: VFS copy_file_range() expected to do its own fallback,
 dnl #      generic_copy_file_range() added to support it
 dnl #
+dnl # 6.8: generic_copy_file_range() removed, replaced by
+dnl #      splice_copy_file_range()
+dnl #
 AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_COPY_FILE_RANGE], [
        ZFS_LINUX_TEST_SRC([vfs_copy_file_range], [
                #include <linux/fs.h>
@@ -72,6 +75,30 @@ AC_DEFUN([ZFS_AC_KERNEL_VFS_GENERIC_COPY_FILE_RANGE], [
        ])
 ])
 
+AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_SPLICE_COPY_FILE_RANGE], [
+       ZFS_LINUX_TEST_SRC([splice_copy_file_range], [
+               #include <linux/splice.h>
+       ], [
+               struct file *src_file __attribute__ ((unused)) = NULL;
+               loff_t src_off __attribute__ ((unused)) = 0;
+               struct file *dst_file __attribute__ ((unused)) = NULL;
+               loff_t dst_off __attribute__ ((unused)) = 0;
+               size_t len __attribute__ ((unused)) = 0;
+               splice_copy_file_range(src_file, src_off, dst_file, dst_off,
+                   len);
+       ])
+])
+AC_DEFUN([ZFS_AC_KERNEL_VFS_SPLICE_COPY_FILE_RANGE], [
+       AC_MSG_CHECKING([whether splice_copy_file_range() is available])
+       ZFS_LINUX_TEST_RESULT([splice_copy_file_range], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_VFS_SPLICE_COPY_FILE_RANGE, 1,
+                   [splice_copy_file_range() is available])
+       ],[
+               AC_MSG_RESULT(no)
+       ])
+])
+
 AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_CLONE_FILE_RANGE], [
        ZFS_LINUX_TEST_SRC([vfs_clone_file_range], [
                #include <linux/fs.h>