aboutsummaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
authorColeman Kane <ckane@colemankane.org>2023-08-08 22:42:32 +0000
committerGitHub <noreply@github.com>2023-08-08 22:42:32 +0000
commit8ce2eba9e6a384feef93d77c397f37d17dc588ce (patch)
tree2c344c5dd257e92a7ae6c1b86447051859f1c26d /config
parent81500902578da8da7c59347742e9e7aea31fe060 (diff)
downloadsrc-8ce2eba9e6a384feef93d77c397f37d17dc588ce.tar.gz
src-8ce2eba9e6a384feef93d77c397f37d17dc588ce.zip
Linux 6.5 compat: Use copy_splice_read instead of filemap_splice_read
Using the filemap_splice_read function for the splice_read handler was leading to occasional data corruption under certain circumstances. Favor using copy_splice_read instead, which does not demonstrate the same erroneous behavior under the tested failure cases. Reviewed-by: Brian Atkinson <batkinson@lanl.gov> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Coleman Kane <ckane@colemankane.org> Closes #15164
Diffstat (limited to 'config')
-rw-r--r--config/kernel-filemap-splice-read.m418
-rw-r--r--config/kernel.m44
2 files changed, 11 insertions, 11 deletions
diff --git a/config/kernel-filemap-splice-read.m4 b/config/kernel-filemap-splice-read.m4
index 5199b7373e4d..4c83b31d738a 100644
--- a/config/kernel-filemap-splice-read.m4
+++ b/config/kernel-filemap-splice-read.m4
@@ -1,24 +1,24 @@
-AC_DEFUN([ZFS_AC_KERNEL_SRC_FILEMAP_SPLICE_READ], [
+AC_DEFUN([ZFS_AC_KERNEL_SRC_COPY_SPLICE_READ], [
dnl #
dnl # Kernel 6.5 - generic_file_splice_read was removed in favor
- dnl # of filemap_splice_read for the .splice_read member of the
+ dnl # of copy_splice_read for the .splice_read member of the
dnl # file_operations struct.
dnl #
- ZFS_LINUX_TEST_SRC([has_filemap_splice_read], [
+ ZFS_LINUX_TEST_SRC([has_copy_splice_read], [
#include <linux/fs.h>
struct file_operations fops __attribute__((unused)) = {
- .splice_read = filemap_splice_read,
+ .splice_read = copy_splice_read,
};
],[])
])
-AC_DEFUN([ZFS_AC_KERNEL_FILEMAP_SPLICE_READ], [
- AC_MSG_CHECKING([whether filemap_splice_read() exists])
- ZFS_LINUX_TEST_RESULT([has_filemap_splice_read], [
+AC_DEFUN([ZFS_AC_KERNEL_COPY_SPLICE_READ], [
+ AC_MSG_CHECKING([whether copy_splice_read() exists])
+ ZFS_LINUX_TEST_RESULT([has_copy_splice_read], [
AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_FILEMAP_SPLICE_READ, 1,
- [filemap_splice_read exists])
+ AC_DEFINE(HAVE_COPY_SPLICE_READ, 1,
+ [copy_splice_read exists])
],[
AC_MSG_RESULT(no)
])
diff --git a/config/kernel.m4 b/config/kernel.m4
index 309f1819be48..df194ec72207 100644
--- a/config/kernel.m4
+++ b/config/kernel.m4
@@ -161,7 +161,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
ZFS_AC_KERNEL_SRC_WRITEPAGE_T
ZFS_AC_KERNEL_SRC_RECLAIMED
ZFS_AC_KERNEL_SRC_REGISTER_SYSCTL_TABLE
- ZFS_AC_KERNEL_SRC_FILEMAP_SPLICE_READ
+ ZFS_AC_KERNEL_SRC_COPY_SPLICE_READ
case "$host_cpu" in
powerpc*)
ZFS_AC_KERNEL_SRC_CPU_HAS_FEATURE
@@ -302,7 +302,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
ZFS_AC_KERNEL_WRITEPAGE_T
ZFS_AC_KERNEL_RECLAIMED
ZFS_AC_KERNEL_REGISTER_SYSCTL_TABLE
- ZFS_AC_KERNEL_FILEMAP_SPLICE_READ
+ ZFS_AC_KERNEL_COPY_SPLICE_READ
case "$host_cpu" in
powerpc*)
ZFS_AC_KERNEL_CPU_HAS_FEATURE