mirror of
				https://git.proxmox.com/git/mirror_zfs
				synced 2025-11-04 10:56:58 +00:00 
			
		
		
		
	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
		
			
				
	
	
		
			26 lines
		
	
	
		
			675 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			675 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
AC_DEFUN([ZFS_AC_KERNEL_SRC_COPY_SPLICE_READ], [
 | 
						|
	dnl #
 | 
						|
	dnl # Kernel 6.5 - generic_file_splice_read was removed in favor
 | 
						|
	dnl # of copy_splice_read for the .splice_read member of the
 | 
						|
	dnl # file_operations struct.
 | 
						|
	dnl #
 | 
						|
	ZFS_LINUX_TEST_SRC([has_copy_splice_read], [
 | 
						|
		#include <linux/fs.h>
 | 
						|
 | 
						|
		struct file_operations fops __attribute__((unused)) = {
 | 
						|
			.splice_read = copy_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_COPY_SPLICE_READ, 1,
 | 
						|
		    [copy_splice_read exists])
 | 
						|
	],[
 | 
						|
		AC_MSG_RESULT(no)
 | 
						|
	])
 | 
						|
])
 |