Linux 6.5: Replace generic_file_splice_read

The Linux 6.5 commit:
    'splice: Remove generic_file_splice_read()' (c6585011bc)
replaces the function generic_file_splice_read() with the function
filemap_splice_read().

The Linux function 'filemap_splice_read()' was introduced with the
Linux 6.3 commits:

    'splice: Add a func to do a splice from a buffered file without
     ITER_PIPE' (07073eb01c)
    'splice: Export filemap/direct_splice_read()' (7c8e01ebf2)

With updates in Linux 6.5:
    'splice: Fix filemap_splice_read() to use the correct inode'
    (c37222082f) -- which fixes a problem in the code.
    'splice: Make filemap_splice_read() check s_maxbytes' (83aeff881e)

Due to the fact that there could be problems with splice support prior
to Linux 6.5 (where filemap_splice_read()'s use was expanded to
additional filesystems other than just cifs), we only want to use
'filemap_splice_read()' in Linux 6.5 and later.

The LINUX/osi_vnodeops.c file is updated to use 'filemap_splice_read()',
for Linux 6.5 and later, for the splice_read member of the
file_operations structure.

Change-Id: Ia07c66ddc5d4f836f230b5d03567803e124b93b8
Reviewed-on: https://gerrit.openafs.org/15486
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
This commit is contained in:
Cheyenne Wills 2023-07-09 18:52:23 -06:00 committed by Benjamin Kaduk
parent c412c75def
commit 0e06eb78f2

View File

@ -960,7 +960,11 @@ struct file_operations afs_file_fops = {
# else
.splice_write = generic_file_splice_write,
# endif
# if LINUX_VERSION_CODE >= KERNEL_VERSION(6,5,0)
.splice_read = filemap_splice_read,
# else
.splice_read = generic_file_splice_read,
# endif
#endif
.release = afs_linux_release,
.fsync = afs_linux_fsync,