From 853c0135e8f4c188efe4be30e9f8db3c8719ebc9 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Thu, 1 May 2025 17:43:34 -0400 Subject: [PATCH] generic_file_splice_read Is removed. Based on my reading of the gfs2 driver, it appears it's likely the safer approach to take copy_splice_read instead of filemap_splice_read as it may potentially lead to cluster deadlocks. Signed-off-by: Auke Kok --- kmod/src/Makefile.kernelcompat | 9 +++++++++ kmod/src/data.c | 6 +++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/kmod/src/Makefile.kernelcompat b/kmod/src/Makefile.kernelcompat index 7ffb30ce..2ebcf7df 100644 --- a/kmod/src/Makefile.kernelcompat +++ b/kmod/src/Makefile.kernelcompat @@ -537,3 +537,12 @@ endif ifneq (,$(shell grep 'int block_write_full_page.struct page' include/linux/buffer_head.h)) ccflags-y += -DKC_HAVE_BLOCK_WRITE_FULL_PAGE endif + +# +# v6.4-rc2-29-gc6585011bc1d +# +# generic_file_splice_read is removed. It can be replaced with filemap_splice_read +# or copy_splice_read. +ifneq (,$(shell grep 'ssize_t generic_file_splice_read.struct file' include/linux/fs.h)) +ccflags-y += -DKC_HAVE_GENERIC_FILE_SPLICE_READ +endif diff --git a/kmod/src/data.c b/kmod/src/data.c index 5f8ca419..a572edd9 100644 --- a/kmod/src/data.c +++ b/kmod/src/data.c @@ -2232,8 +2232,12 @@ const struct file_operations scoutfs_file_fops = { #else .read_iter = scoutfs_file_read_iter, .write_iter = scoutfs_file_write_iter, - .splice_read = generic_file_splice_read, .splice_write = iter_file_splice_write, +#endif +#ifdef KC_HAVE_GENERIC_FILE_SPLICE_READ + .splice_read = generic_file_splice_read, +#else + .splice_read = copy_splice_read, #endif .mmap = scoutfs_file_mmap, .unlocked_ioctl = scoutfs_ioctl,