All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Al Viro <viro@zeniv.linux.org.uk>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Luis Chamberlain <mcgrof@kernel.org>,
	Matthew Wilcox <willy@infradead.org>,
	Kees Cook <keescook@chromium.org>,
	Iurii Zaikin <yzaikin@google.com>,
	linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: [PATCH 22/23] fs: default to generic_file_splice_read for files having ->read_iter
Date: Tue,  7 Jul 2020 19:48:00 +0200	[thread overview]
Message-ID: <20200707174801.4162712-23-hch@lst.de> (raw)
In-Reply-To: <20200707174801.4162712-1-hch@lst.de>

If a file implements the ->read_iter method, the iter based splice read
works and is always preferred over the ->read based one.  Use it by
default in do_splice_to and remove all the direct assignment of
generic_file_splice_read to file_operations.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 fs/adfs/file.c          | 1 -
 fs/affs/file.c          | 1 -
 fs/afs/file.c           | 1 -
 fs/bfs/file.c           | 1 -
 fs/block_dev.c          | 1 -
 fs/btrfs/file.c         | 1 -
 fs/ceph/file.c          | 1 -
 fs/cifs/cifsfs.c        | 6 ------
 fs/coda/file.c          | 1 -
 fs/cramfs/inode.c       | 1 -
 fs/ecryptfs/file.c      | 1 -
 fs/exfat/file.c         | 1 -
 fs/ext2/file.c          | 1 -
 fs/ext4/file.c          | 1 -
 fs/f2fs/file.c          | 1 -
 fs/fat/file.c           | 1 -
 fs/fuse/file.c          | 1 -
 fs/gfs2/file.c          | 2 --
 fs/hfs/inode.c          | 1 -
 fs/hfsplus/inode.c      | 1 -
 fs/hostfs/hostfs_kern.c | 1 -
 fs/hpfs/file.c          | 1 -
 fs/jffs2/file.c         | 1 -
 fs/jfs/file.c           | 1 -
 fs/minix/file.c         | 1 -
 fs/nfs/file.c           | 1 -
 fs/nfs/nfs4file.c       | 1 -
 fs/nilfs2/file.c        | 1 -
 fs/ntfs/file.c          | 1 -
 fs/ocfs2/file.c         | 2 --
 fs/omfs/file.c          | 1 -
 fs/ramfs/file-mmu.c     | 1 -
 fs/ramfs/file-nommu.c   | 1 -
 fs/read_write.c         | 1 -
 fs/reiserfs/file.c      | 1 -
 fs/romfs/mmap-nommu.c   | 1 -
 fs/splice.c             | 2 ++
 fs/sysv/file.c          | 1 -
 fs/ubifs/file.c         | 1 -
 fs/udf/file.c           | 1 -
 fs/ufs/file.c           | 1 -
 fs/vboxsf/file.c        | 1 -
 fs/xfs/xfs_file.c       | 1 -
 fs/zonefs/super.c       | 1 -
 mm/shmem.c              | 1 -
 45 files changed, 2 insertions(+), 51 deletions(-)

diff --git a/fs/adfs/file.c b/fs/adfs/file.c
index 754afb14a6ff74..b089b91c1870ae 100644
--- a/fs/adfs/file.c
+++ b/fs/adfs/file.c
@@ -28,7 +28,6 @@ const struct file_operations adfs_file_operations = {
 	.mmap		= generic_file_mmap,
 	.fsync		= generic_file_fsync,
 	.write_iter	= generic_file_write_iter,
-	.splice_read	= generic_file_splice_read,
 };
 
 const struct inode_operations adfs_file_inode_operations = {
diff --git a/fs/affs/file.c b/fs/affs/file.c
index a85817f54483f7..7d51cc2e3dabfa 100644
--- a/fs/affs/file.c
+++ b/fs/affs/file.c
@@ -975,7 +975,6 @@ const struct file_operations affs_file_operations = {
 	.open		= affs_file_open,
 	.release	= affs_file_release,
 	.fsync		= affs_file_fsync,
-	.splice_read	= generic_file_splice_read,
 };
 
 const struct inode_operations affs_file_inode_operations = {
diff --git a/fs/afs/file.c b/fs/afs/file.c
index 6f6ed1605cfe30..2476f10383fbdd 100644
--- a/fs/afs/file.c
+++ b/fs/afs/file.c
@@ -32,7 +32,6 @@ const struct file_operations afs_file_operations = {
 	.read_iter	= generic_file_read_iter,
 	.write_iter	= afs_file_write,
 	.mmap		= afs_file_mmap,
-	.splice_read	= generic_file_splice_read,
 	.fsync		= afs_fsync,
 	.lock		= afs_lock,
 	.flock		= afs_flock,
diff --git a/fs/bfs/file.c b/fs/bfs/file.c
index 0dceefc54b48ab..39088cc7492308 100644
--- a/fs/bfs/file.c
+++ b/fs/bfs/file.c
@@ -27,7 +27,6 @@ const struct file_operations bfs_file_operations = {
 	.read_iter	= generic_file_read_iter,
 	.write_iter	= generic_file_write_iter,
 	.mmap		= generic_file_mmap,
-	.splice_read	= generic_file_splice_read,
 };
 
 static int bfs_move_block(unsigned long from, unsigned long to,
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 0ae656e022fd57..0aa66a6075eb11 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -2160,7 +2160,6 @@ const struct file_operations def_blk_fops = {
 #ifdef CONFIG_COMPAT
 	.compat_ioctl	= compat_blkdev_ioctl,
 #endif
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= iter_file_splice_write,
 	.fallocate	= blkdev_fallocate,
 };
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 2520605afc256e..322cc65902d107 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -3507,7 +3507,6 @@ static int btrfs_file_open(struct inode *inode, struct file *filp)
 const struct file_operations btrfs_file_operations = {
 	.llseek		= btrfs_file_llseek,
 	.read_iter      = generic_file_read_iter,
-	.splice_read	= generic_file_splice_read,
 	.write_iter	= btrfs_file_write_iter,
 	.mmap		= btrfs_file_mmap,
 	.open		= btrfs_file_open,
diff --git a/fs/ceph/file.c b/fs/ceph/file.c
index 160644ddaeed70..e28c27751e6b3b 100644
--- a/fs/ceph/file.c
+++ b/fs/ceph/file.c
@@ -2507,7 +2507,6 @@ const struct file_operations ceph_file_fops = {
 	.fsync = ceph_fsync,
 	.lock = ceph_lock,
 	.flock = ceph_flock,
-	.splice_read = generic_file_splice_read,
 	.splice_write = iter_file_splice_write,
 	.unlocked_ioctl = ceph_ioctl,
 	.compat_ioctl = compat_ptr_ioctl,
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index 0fb99d25e8a8a0..74da1dfe08c6fa 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -1235,7 +1235,6 @@ const struct file_operations cifs_file_ops = {
 	.fsync = cifs_fsync,
 	.flush = cifs_flush,
 	.mmap  = cifs_file_mmap,
-	.splice_read = generic_file_splice_read,
 	.splice_write = iter_file_splice_write,
 	.llseek = cifs_llseek,
 	.unlocked_ioctl	= cifs_ioctl,
@@ -1255,7 +1254,6 @@ const struct file_operations cifs_file_strict_ops = {
 	.fsync = cifs_strict_fsync,
 	.flush = cifs_flush,
 	.mmap = cifs_file_strict_mmap,
-	.splice_read = generic_file_splice_read,
 	.splice_write = iter_file_splice_write,
 	.llseek = cifs_llseek,
 	.unlocked_ioctl	= cifs_ioctl,
@@ -1275,7 +1273,6 @@ const struct file_operations cifs_file_direct_ops = {
 	.fsync = cifs_fsync,
 	.flush = cifs_flush,
 	.mmap = cifs_file_mmap,
-	.splice_read = generic_file_splice_read,
 	.splice_write = iter_file_splice_write,
 	.unlocked_ioctl  = cifs_ioctl,
 	.copy_file_range = cifs_copy_file_range,
@@ -1293,7 +1290,6 @@ const struct file_operations cifs_file_nobrl_ops = {
 	.fsync = cifs_fsync,
 	.flush = cifs_flush,
 	.mmap  = cifs_file_mmap,
-	.splice_read = generic_file_splice_read,
 	.splice_write = iter_file_splice_write,
 	.llseek = cifs_llseek,
 	.unlocked_ioctl	= cifs_ioctl,
@@ -1311,7 +1307,6 @@ const struct file_operations cifs_file_strict_nobrl_ops = {
 	.fsync = cifs_strict_fsync,
 	.flush = cifs_flush,
 	.mmap = cifs_file_strict_mmap,
-	.splice_read = generic_file_splice_read,
 	.splice_write = iter_file_splice_write,
 	.llseek = cifs_llseek,
 	.unlocked_ioctl	= cifs_ioctl,
@@ -1329,7 +1324,6 @@ const struct file_operations cifs_file_direct_nobrl_ops = {
 	.fsync = cifs_fsync,
 	.flush = cifs_flush,
 	.mmap = cifs_file_mmap,
-	.splice_read = generic_file_splice_read,
 	.splice_write = iter_file_splice_write,
 	.unlocked_ioctl  = cifs_ioctl,
 	.copy_file_range = cifs_copy_file_range,
diff --git a/fs/coda/file.c b/fs/coda/file.c
index 128d63df5bfb62..8dd438f2c09fe2 100644
--- a/fs/coda/file.c
+++ b/fs/coda/file.c
@@ -301,5 +301,4 @@ const struct file_operations coda_file_operations = {
 	.open		= coda_open,
 	.release	= coda_release,
 	.fsync		= coda_fsync,
-	.splice_read	= generic_file_splice_read,
 };
diff --git a/fs/cramfs/inode.c b/fs/cramfs/inode.c
index 912308600d393d..0645c1af27c07d 100644
--- a/fs/cramfs/inode.c
+++ b/fs/cramfs/inode.c
@@ -485,7 +485,6 @@ static unsigned int cramfs_physmem_mmap_capabilities(struct file *file)
 static const struct file_operations cramfs_physmem_fops = {
 	.llseek			= generic_file_llseek,
 	.read_iter		= generic_file_read_iter,
-	.splice_read		= generic_file_splice_read,
 	.mmap			= cramfs_physmem_mmap,
 #ifndef CONFIG_MMU
 	.get_unmapped_area	= cramfs_physmem_get_unmapped_area,
diff --git a/fs/ecryptfs/file.c b/fs/ecryptfs/file.c
index 5fb45d865ce511..03210a02fe6c00 100644
--- a/fs/ecryptfs/file.c
+++ b/fs/ecryptfs/file.c
@@ -420,5 +420,4 @@ const struct file_operations ecryptfs_main_fops = {
 	.release = ecryptfs_release,
 	.fsync = ecryptfs_fsync,
 	.fasync = ecryptfs_fasync,
-	.splice_read = generic_file_splice_read,
 };
diff --git a/fs/exfat/file.c b/fs/exfat/file.c
index 3b7fea465fd41e..8fe5df8a9ccbca 100644
--- a/fs/exfat/file.c
+++ b/fs/exfat/file.c
@@ -369,7 +369,6 @@ const struct file_operations exfat_file_operations = {
 	.write_iter	= generic_file_write_iter,
 	.mmap		= generic_file_mmap,
 	.fsync		= exfat_file_fsync,
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= iter_file_splice_write,
 };
 
diff --git a/fs/ext2/file.c b/fs/ext2/file.c
index 60378ddf1424b0..1c0828e0198440 100644
--- a/fs/ext2/file.c
+++ b/fs/ext2/file.c
@@ -191,7 +191,6 @@ const struct file_operations ext2_file_operations = {
 	.release	= ext2_release_file,
 	.fsync		= ext2_fsync,
 	.get_unmapped_area = thp_get_unmapped_area,
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= iter_file_splice_write,
 };
 
diff --git a/fs/ext4/file.c b/fs/ext4/file.c
index 2a01e31a032c4c..f5dc9a4e0937d1 100644
--- a/fs/ext4/file.c
+++ b/fs/ext4/file.c
@@ -896,7 +896,6 @@ const struct file_operations ext4_file_operations = {
 	.release	= ext4_release_file,
 	.fsync		= ext4_sync_file,
 	.get_unmapped_area = thp_get_unmapped_area,
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= iter_file_splice_write,
 	.fallocate	= ext4_fallocate,
 };
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 3268f8dd59bbaf..6b34caf13b5668 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -4033,6 +4033,5 @@ const struct file_operations f2fs_file_operations = {
 #ifdef CONFIG_COMPAT
 	.compat_ioctl	= f2fs_compat_ioctl,
 #endif
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= iter_file_splice_write,
 };
diff --git a/fs/fat/file.c b/fs/fat/file.c
index 42134c58c87e19..e7a0342ccfe1f0 100644
--- a/fs/fat/file.c
+++ b/fs/fat/file.c
@@ -208,7 +208,6 @@ const struct file_operations fat_file_operations = {
 	.unlocked_ioctl	= fat_generic_ioctl,
 	.compat_ioctl	= compat_ptr_ioctl,
 	.fsync		= fat_file_fsync,
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= iter_file_splice_write,
 	.fallocate	= fat_fallocate,
 };
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index e573b0cd2737dc..a404e147bb2cf7 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -3382,7 +3382,6 @@ static const struct file_operations fuse_file_operations = {
 	.fsync		= fuse_fsync,
 	.lock		= fuse_file_lock,
 	.flock		= fuse_file_flock,
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= iter_file_splice_write,
 	.unlocked_ioctl	= fuse_file_ioctl,
 	.compat_ioctl	= fuse_file_compat_ioctl,
diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c
index fe305e4bfd3734..d23babc0c292b8 100644
--- a/fs/gfs2/file.c
+++ b/fs/gfs2/file.c
@@ -1323,7 +1323,6 @@ const struct file_operations gfs2_file_fops = {
 	.fsync		= gfs2_fsync,
 	.lock		= gfs2_lock,
 	.flock		= gfs2_flock,
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= gfs2_file_splice_write,
 	.setlease	= simple_nosetlease,
 	.fallocate	= gfs2_fallocate,
@@ -1354,7 +1353,6 @@ const struct file_operations gfs2_file_fops_nolock = {
 	.open		= gfs2_open,
 	.release	= gfs2_release,
 	.fsync		= gfs2_fsync,
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= gfs2_file_splice_write,
 	.setlease	= generic_setlease,
 	.fallocate	= gfs2_fallocate,
diff --git a/fs/hfs/inode.c b/fs/hfs/inode.c
index 2f224b98ee94a6..6181d3818e17c0 100644
--- a/fs/hfs/inode.c
+++ b/fs/hfs/inode.c
@@ -682,7 +682,6 @@ static const struct file_operations hfs_file_operations = {
 	.read_iter	= generic_file_read_iter,
 	.write_iter	= generic_file_write_iter,
 	.mmap		= generic_file_mmap,
-	.splice_read	= generic_file_splice_read,
 	.fsync		= hfs_file_fsync,
 	.open		= hfs_file_open,
 	.release	= hfs_file_release,
diff --git a/fs/hfsplus/inode.c b/fs/hfsplus/inode.c
index e3da9e96b83578..7bd61ba08fbc9e 100644
--- a/fs/hfsplus/inode.c
+++ b/fs/hfsplus/inode.c
@@ -358,7 +358,6 @@ static const struct file_operations hfsplus_file_operations = {
 	.read_iter	= generic_file_read_iter,
 	.write_iter	= generic_file_write_iter,
 	.mmap		= generic_file_mmap,
-	.splice_read	= generic_file_splice_read,
 	.fsync		= hfsplus_file_fsync,
 	.open		= hfsplus_file_open,
 	.release	= hfsplus_file_release,
diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
index c070c0d8e3e977..c6453e3768294c 100644
--- a/fs/hostfs/hostfs_kern.c
+++ b/fs/hostfs/hostfs_kern.c
@@ -379,7 +379,6 @@ static int hostfs_fsync(struct file *file, loff_t start, loff_t end,
 
 static const struct file_operations hostfs_file_fops = {
 	.llseek		= generic_file_llseek,
-	.splice_read	= generic_file_splice_read,
 	.read_iter	= generic_file_read_iter,
 	.write_iter	= generic_file_write_iter,
 	.mmap		= generic_file_mmap,
diff --git a/fs/hpfs/file.c b/fs/hpfs/file.c
index 077c25128eb741..53951f29f25e50 100644
--- a/fs/hpfs/file.c
+++ b/fs/hpfs/file.c
@@ -213,7 +213,6 @@ const struct file_operations hpfs_file_ops =
 	.mmap		= generic_file_mmap,
 	.release	= hpfs_file_release,
 	.fsync		= hpfs_file_fsync,
-	.splice_read	= generic_file_splice_read,
 	.unlocked_ioctl	= hpfs_ioctl,
 	.compat_ioctl	= compat_ptr_ioctl,
 };
diff --git a/fs/jffs2/file.c b/fs/jffs2/file.c
index f8fb89b10227ce..6e986a99669779 100644
--- a/fs/jffs2/file.c
+++ b/fs/jffs2/file.c
@@ -56,7 +56,6 @@ const struct file_operations jffs2_file_operations =
 	.unlocked_ioctl=jffs2_ioctl,
 	.mmap =		generic_file_readonly_mmap,
 	.fsync =	jffs2_fsync,
-	.splice_read =	generic_file_splice_read,
 };
 
 /* jffs2_file_inode_operations */
diff --git a/fs/jfs/file.c b/fs/jfs/file.c
index 930d2701f2062b..fb209673943697 100644
--- a/fs/jfs/file.c
+++ b/fs/jfs/file.c
@@ -141,7 +141,6 @@ const struct file_operations jfs_file_operations = {
 	.read_iter	= generic_file_read_iter,
 	.write_iter	= generic_file_write_iter,
 	.mmap		= generic_file_mmap,
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= iter_file_splice_write,
 	.fsync		= jfs_fsync,
 	.release	= jfs_release,
diff --git a/fs/minix/file.c b/fs/minix/file.c
index c50b0a20fcd9c1..e787789b43fa95 100644
--- a/fs/minix/file.c
+++ b/fs/minix/file.c
@@ -19,7 +19,6 @@ const struct file_operations minix_file_operations = {
 	.write_iter	= generic_file_write_iter,
 	.mmap		= generic_file_mmap,
 	.fsync		= generic_file_fsync,
-	.splice_read	= generic_file_splice_read,
 };
 
 static int minix_setattr(struct dentry *dentry, struct iattr *attr)
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index ccd6c1637b270b..8ba06f6c3ec5af 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -851,7 +851,6 @@ const struct file_operations nfs_file_operations = {
 	.fsync		= nfs_file_fsync,
 	.lock		= nfs_lock,
 	.flock		= nfs_flock,
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= iter_file_splice_write,
 	.check_flags	= nfs_check_flags,
 	.setlease	= simple_nosetlease,
diff --git a/fs/nfs/nfs4file.c b/fs/nfs/nfs4file.c
index 8e5d6223ddd359..3e3793cb217ec1 100644
--- a/fs/nfs/nfs4file.c
+++ b/fs/nfs/nfs4file.c
@@ -415,7 +415,6 @@ const struct file_operations nfs4_file_operations = {
 	.fsync		= nfs_file_fsync,
 	.lock		= nfs_lock,
 	.flock		= nfs_flock,
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= iter_file_splice_write,
 	.check_flags	= nfs_check_flags,
 	.setlease	= simple_nosetlease,
diff --git a/fs/nilfs2/file.c b/fs/nilfs2/file.c
index 64bc81363c6cc0..cb3269c52dabc7 100644
--- a/fs/nilfs2/file.c
+++ b/fs/nilfs2/file.c
@@ -140,7 +140,6 @@ const struct file_operations nilfs_file_operations = {
 	.open		= generic_file_open,
 	/* .release	= nilfs_release_file, */
 	.fsync		= nilfs_sync_file,
-	.splice_read	= generic_file_splice_read,
 };
 
 const struct inode_operations nilfs_file_inode_operations = {
diff --git a/fs/ntfs/file.c b/fs/ntfs/file.c
index f42967b738eb67..8c1759e9185dd7 100644
--- a/fs/ntfs/file.c
+++ b/fs/ntfs/file.c
@@ -2012,7 +2012,6 @@ const struct file_operations ntfs_file_ops = {
 #endif /* NTFS_RW */
 	.mmap		= generic_file_mmap,
 	.open		= ntfs_file_open,
-	.splice_read	= generic_file_splice_read,
 };
 
 const struct inode_operations ntfs_file_inode_ops = {
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
index 85979e2214b39d..86069cae29047e 100644
--- a/fs/ocfs2/file.c
+++ b/fs/ocfs2/file.c
@@ -2671,7 +2671,6 @@ const struct file_operations ocfs2_fops = {
 #endif
 	.lock		= ocfs2_lock,
 	.flock		= ocfs2_flock,
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= iter_file_splice_write,
 	.fallocate	= ocfs2_fallocate,
 	.remap_file_range = ocfs2_remap_file_range,
@@ -2717,7 +2716,6 @@ const struct file_operations ocfs2_fops_no_plocks = {
 	.compat_ioctl   = ocfs2_compat_ioctl,
 #endif
 	.flock		= ocfs2_flock,
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= iter_file_splice_write,
 	.fallocate	= ocfs2_fallocate,
 	.remap_file_range = ocfs2_remap_file_range,
diff --git a/fs/omfs/file.c b/fs/omfs/file.c
index d7b5f09d298c9d..0dddc6c644c10c 100644
--- a/fs/omfs/file.c
+++ b/fs/omfs/file.c
@@ -340,7 +340,6 @@ const struct file_operations omfs_file_operations = {
 	.write_iter = generic_file_write_iter,
 	.mmap = generic_file_mmap,
 	.fsync = generic_file_fsync,
-	.splice_read = generic_file_splice_read,
 };
 
 static int omfs_setattr(struct dentry *dentry, struct iattr *attr)
diff --git a/fs/ramfs/file-mmu.c b/fs/ramfs/file-mmu.c
index 12af0490322f9d..d1e76267e9c323 100644
--- a/fs/ramfs/file-mmu.c
+++ b/fs/ramfs/file-mmu.c
@@ -43,7 +43,6 @@ const struct file_operations ramfs_file_operations = {
 	.write_iter	= generic_file_write_iter,
 	.mmap		= generic_file_mmap,
 	.fsync		= noop_fsync,
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= iter_file_splice_write,
 	.llseek		= generic_file_llseek,
 	.get_unmapped_area	= ramfs_mmu_get_unmapped_area,
diff --git a/fs/ramfs/file-nommu.c b/fs/ramfs/file-nommu.c
index 41469545495608..9336086e60fefd 100644
--- a/fs/ramfs/file-nommu.c
+++ b/fs/ramfs/file-nommu.c
@@ -43,7 +43,6 @@ const struct file_operations ramfs_file_operations = {
 	.read_iter		= generic_file_read_iter,
 	.write_iter		= generic_file_write_iter,
 	.fsync			= noop_fsync,
-	.splice_read		= generic_file_splice_read,
 	.splice_write		= iter_file_splice_write,
 	.llseek			= generic_file_llseek,
 };
diff --git a/fs/read_write.c b/fs/read_write.c
index 11c55547cfc9d6..8d8113ae8561e6 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -29,7 +29,6 @@ const struct file_operations generic_ro_fops = {
 	.llseek		= generic_file_llseek,
 	.read_iter	= generic_file_read_iter,
 	.mmap		= generic_file_readonly_mmap,
-	.splice_read	= generic_file_splice_read,
 };
 
 EXPORT_SYMBOL(generic_ro_fops);
diff --git a/fs/reiserfs/file.c b/fs/reiserfs/file.c
index 0b641ae694f123..4f71c3aca2b8c1 100644
--- a/fs/reiserfs/file.c
+++ b/fs/reiserfs/file.c
@@ -247,7 +247,6 @@ const struct file_operations reiserfs_file_operations = {
 	.fsync = reiserfs_sync_file,
 	.read_iter = generic_file_read_iter,
 	.write_iter = generic_file_write_iter,
-	.splice_read = generic_file_splice_read,
 	.splice_write = iter_file_splice_write,
 	.llseek = generic_file_llseek,
 };
diff --git a/fs/romfs/mmap-nommu.c b/fs/romfs/mmap-nommu.c
index 2c4a23113fb5f2..f37e27fa0c1084 100644
--- a/fs/romfs/mmap-nommu.c
+++ b/fs/romfs/mmap-nommu.c
@@ -78,7 +78,6 @@ static unsigned romfs_mmap_capabilities(struct file *file)
 const struct file_operations romfs_ro_fops = {
 	.llseek			= generic_file_llseek,
 	.read_iter		= generic_file_read_iter,
-	.splice_read		= generic_file_splice_read,
 	.mmap			= romfs_mmap,
 	.get_unmapped_area	= romfs_get_unmapped_area,
 	.mmap_capabilities	= romfs_mmap_capabilities,
diff --git a/fs/splice.c b/fs/splice.c
index d7c8a7c4db07ff..52485158023778 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -868,6 +868,8 @@ static long do_splice_to(struct file *in, loff_t *ppos,
 
 	if (in->f_op->splice_read)
 		return in->f_op->splice_read(in, ppos, pipe, len, flags);
+	if (in->f_op->read_iter)
+		return generic_file_splice_read(in, ppos, pipe, len, flags);
 	return default_file_splice_read(in, ppos, pipe, len, flags);
 }
 
diff --git a/fs/sysv/file.c b/fs/sysv/file.c
index 45fc79a18594f1..d023922c0e44c7 100644
--- a/fs/sysv/file.c
+++ b/fs/sysv/file.c
@@ -26,7 +26,6 @@ const struct file_operations sysv_file_operations = {
 	.write_iter	= generic_file_write_iter,
 	.mmap		= generic_file_mmap,
 	.fsync		= generic_file_fsync,
-	.splice_read	= generic_file_splice_read,
 };
 
 static int sysv_setattr(struct dentry *dentry, struct iattr *attr)
diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c
index 49fe062ce45ec2..a3af46b3950811 100644
--- a/fs/ubifs/file.c
+++ b/fs/ubifs/file.c
@@ -1668,7 +1668,6 @@ const struct file_operations ubifs_file_operations = {
 	.mmap           = ubifs_file_mmap,
 	.fsync          = ubifs_fsync,
 	.unlocked_ioctl = ubifs_ioctl,
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= iter_file_splice_write,
 	.open		= fscrypt_file_open,
 #ifdef CONFIG_COMPAT
diff --git a/fs/udf/file.c b/fs/udf/file.c
index 628941a6b79afb..6c796ef2bd8331 100644
--- a/fs/udf/file.c
+++ b/fs/udf/file.c
@@ -250,7 +250,6 @@ const struct file_operations udf_file_operations = {
 	.write_iter		= udf_file_write_iter,
 	.release		= udf_release_file,
 	.fsync			= generic_file_fsync,
-	.splice_read		= generic_file_splice_read,
 	.llseek			= generic_file_llseek,
 };
 
diff --git a/fs/ufs/file.c b/fs/ufs/file.c
index 7e087581be7e0c..7a6dbb32d22cb6 100644
--- a/fs/ufs/file.c
+++ b/fs/ufs/file.c
@@ -41,5 +41,4 @@ const struct file_operations ufs_file_operations = {
 	.mmap		= generic_file_mmap,
 	.open           = generic_file_open,
 	.fsync		= generic_file_fsync,
-	.splice_read	= generic_file_splice_read,
 };
diff --git a/fs/vboxsf/file.c b/fs/vboxsf/file.c
index c4ab5996d97a83..30671e1226dbed 100644
--- a/fs/vboxsf/file.c
+++ b/fs/vboxsf/file.c
@@ -200,7 +200,6 @@ const struct file_operations vboxsf_reg_fops = {
 	.open = vboxsf_file_open,
 	.release = vboxsf_file_release,
 	.fsync = noop_fsync,
-	.splice_read = generic_file_splice_read,
 };
 
 const struct inode_operations vboxsf_reg_iops = {
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
index 00db81eac80d6c..964bc733e765a4 100644
--- a/fs/xfs/xfs_file.c
+++ b/fs/xfs/xfs_file.c
@@ -1297,7 +1297,6 @@ const struct file_operations xfs_file_operations = {
 	.llseek		= xfs_file_llseek,
 	.read_iter	= xfs_file_read_iter,
 	.write_iter	= xfs_file_write_iter,
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= iter_file_splice_write,
 	.iopoll		= iomap_dio_iopoll,
 	.unlocked_ioctl	= xfs_file_ioctl,
diff --git a/fs/zonefs/super.c b/fs/zonefs/super.c
index 07bc42d62673ce..d9f5fbeb55062e 100644
--- a/fs/zonefs/super.c
+++ b/fs/zonefs/super.c
@@ -869,7 +869,6 @@ static const struct file_operations zonefs_file_operations = {
 	.llseek		= zonefs_file_llseek,
 	.read_iter	= zonefs_file_read_iter,
 	.write_iter	= zonefs_file_write_iter,
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= iter_file_splice_write,
 	.iopoll		= iomap_dio_iopoll,
 };
diff --git a/mm/shmem.c b/mm/shmem.c
index a0dbe62f8042e7..f019ff50084403 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -3756,7 +3756,6 @@ static const struct file_operations shmem_file_operations = {
 	.read_iter	= shmem_file_read_iter,
 	.write_iter	= generic_file_write_iter,
 	.fsync		= noop_fsync,
-	.splice_read	= generic_file_splice_read,
 	.splice_write	= iter_file_splice_write,
 	.fallocate	= shmem_fallocate,
 #endif
-- 
2.26.2


  parent reply	other threads:[~2020-07-07 17:55 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-07 17:47 stop using ->read and ->write for kernel access v3 Christoph Hellwig
2020-07-07 17:47 ` [PATCH 01/23] cachefiles: switch to kernel_write Christoph Hellwig
2020-07-07 17:47 ` [PATCH 02/23] autofs: " Christoph Hellwig
2020-07-07 17:47 ` [PATCH 03/23] bpfilter: " Christoph Hellwig
2020-07-07 17:47 ` [PATCH 04/23] fs: unexport __kernel_write Christoph Hellwig
2020-07-07 17:47 ` [PATCH 05/23] fs: check FMODE_WRITE in __kernel_write Christoph Hellwig
2020-07-07 17:47 ` [PATCH 06/23] fs: implement kernel_write using __kernel_write Christoph Hellwig
2020-07-07 17:47 ` [PATCH 07/23] fs: remove __vfs_write Christoph Hellwig
2020-07-07 17:47 ` [PATCH 08/23] fs: don't change the address limit for ->write_iter in __kernel_write Christoph Hellwig
2020-07-29 20:50   ` Al Viro
2020-07-30  7:02     ` Christoph Hellwig
2020-07-07 17:47 ` [PATCH 09/23] fs: add a __kernel_read helper Christoph Hellwig
2020-07-07 17:47 ` [PATCH 10/23] integrity/ima: switch to using __kernel_read Christoph Hellwig
2020-07-07 17:47 ` [PATCH 11/23] fs: implement kernel_read " Christoph Hellwig
2020-07-07 17:47 ` [PATCH 12/23] fs: remove __vfs_read Christoph Hellwig
2020-07-07 17:47 ` [PATCH 13/23] fs: don't change the address limit for ->read_iter in __kernel_read Christoph Hellwig
2020-07-07 17:47 ` [PATCH 14/23] seq_file: add seq_read_iter Christoph Hellwig
2020-07-07 17:47 ` [PATCH 15/23] seq_file: switch over direct seq_read method calls to seq_read_iter Christoph Hellwig
     [not found]   ` <20200707174801.4162712-16-hch-jcswGhMUV9g@public.gmane.org>
2020-07-10 12:55     ` Jon Hunter
2020-07-10 12:55       ` Jon Hunter
     [not found]       ` <5a2a97f1-58b5-8068-3c69-bb06130ffb35-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2020-07-10 12:58         ` Christoph Hellwig
2020-07-10 12:58           ` Christoph Hellwig
2020-07-11  6:48         ` Christoph Hellwig
2020-07-11  6:48           ` Christoph Hellwig
     [not found]           ` <20200711064857.GA29078-jcswGhMUV9g@public.gmane.org>
2020-07-11 11:47             ` Jon Hunter
2020-07-11 11:47               ` Jon Hunter
2020-07-17 21:09   ` Thomas Gleixner
2020-07-20  9:33     ` Christoph Hellwig
2020-07-29 20:59     ` Al Viro
2020-07-30  7:10       ` Thomas Gleixner
2020-07-07 17:47 ` [PATCH 16/23] proc: remove a level of indentation in proc_get_inode Christoph Hellwig
2020-07-07 17:47 ` [PATCH 17/23] proc: cleanup the compat vs no compat file ops Christoph Hellwig
2020-07-07 17:47 ` [PATCH 18/23] proc: add a read_iter method to proc proc_ops Christoph Hellwig
2020-07-07 17:47 ` [PATCH 19/23] proc: switch over direct seq_read method calls to seq_read_iter Christoph Hellwig
2020-07-07 17:47 ` [PATCH 20/23] sysctl: Convert to iter interfaces Christoph Hellwig
2020-07-07 17:47 ` [PATCH 21/23] fs: don't allow kernel reads and writes without iter ops Christoph Hellwig
2020-07-07 17:48 ` Christoph Hellwig [this message]
2020-07-30  0:05   ` [PATCH 22/23] fs: default to generic_file_splice_read for files having ->read_iter Al Viro
2020-07-30  7:03     ` Christoph Hellwig
2020-07-30 15:08       ` Al Viro
2020-07-30 15:20         ` Christoph Hellwig
2020-07-30 16:17           ` Al Viro
2020-07-30 16:22             ` Al Viro
2020-07-30 16:31               ` Christoph Hellwig
2020-07-07 17:48 ` [PATCH 23/23] fs: don't allow splice read/write without explicit ops Christoph Hellwig
2020-07-07 20:24 ` stop using ->read and ->write for kernel access v3 Linus Torvalds
2020-07-08  6:07   ` Christoph Hellwig
2020-07-07 23:03 ` Stephen Rothwell
  -- strict thread matches above, loose matches on Subject: below --
2020-07-01 20:09 [RFC] " Christoph Hellwig
2020-07-01 20:09 ` [PATCH 22/23] fs: default to generic_file_splice_read for files having ->read_iter Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200707174801.4162712-23-hch@lst.de \
    --to=hch@lst.de \
    --cc=keescook@chromium.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mcgrof@kernel.org \
    --cc=sfr@canb.auug.org.au \
    --cc=torvalds@linux-foundation.org \
    --cc=viro@zeniv.linux.org.uk \
    --cc=willy@infradead.org \
    --cc=yzaikin@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.