diff --git a/kmod/src/Makefile.kernelcompat b/kmod/src/Makefile.kernelcompat index 7aa99c0f..116d0ad9 100644 --- a/kmod/src/Makefile.kernelcompat +++ b/kmod/src/Makefile.kernelcompat @@ -317,6 +317,15 @@ ifneq (,$(shell grep 'int block_write_full_page.struct page' include/linux/buffe 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 + # # v6.15-13744-g41cb08555c41 # diff --git a/kmod/src/data.c b/kmod/src/data.c index 16f66dc6..73c0c44a 100644 --- a/kmod/src/data.c +++ b/kmod/src/data.c @@ -2266,8 +2266,12 @@ const struct address_space_operations scoutfs_file_aops = { const struct file_operations scoutfs_file_fops = { .read_iter = scoutfs_file_read_iter, .write_iter = scoutfs_file_write_iter, - .splice_read = generic_file_splice_read, .splice_write = iter_file_splice_write, +#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, .fsync = scoutfs_file_fsync,