splice: Remove generic_file_splice_read()
authorDavid Howells <dhowells@redhat.com>
Mon, 22 May 2023 13:50:16 +0000 (14:50 +0100)
committerJens Axboe <axboe@kernel.dk>
Wed, 24 May 2023 14:42:17 +0000 (08:42 -0600)
Remove generic_file_splice_read() as it has been replaced with calls to
filemap_splice_read() and copy_splice_read().

With this, ITER_PIPE is no longer used.

Signed-off-by: David Howells <dhowells@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Christian Brauner <brauner@kernel.org>
cc: Jens Axboe <axboe@kernel.dk>
cc: Steve French <smfrench@gmail.com>
cc: Al Viro <viro@zeniv.linux.org.uk>
cc: David Hildenbrand <david@redhat.com>
cc: John Hubbard <jhubbard@nvidia.com>
cc: linux-mm@kvack.org
cc: linux-block@vger.kernel.org
cc: linux-cifs@vger.kernel.org
cc: linux-fsdevel@vger.kernel.org
Link: https://lore.kernel.org/r/20230522135018.2742245-30-dhowells@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/splice.c
include/linux/fs.h

index 8268248..9be4cb3 100644 (file)
@@ -386,49 +386,6 @@ ssize_t copy_splice_read(struct file *in, loff_t *ppos,
 }
 EXPORT_SYMBOL(copy_splice_read);
 
-/**
- * generic_file_splice_read - splice data from file to a pipe
- * @in:                file to splice from
- * @ppos:      position in @in
- * @pipe:      pipe to splice to
- * @len:       number of bytes to splice
- * @flags:     splice modifier flags
- *
- * Description:
- *    Will read pages from given file and fill them into a pipe. Can be
- *    used as long as it has more or less sane ->read_iter().
- *
- */
-ssize_t generic_file_splice_read(struct file *in, loff_t *ppos,
-                                struct pipe_inode_info *pipe, size_t len,
-                                unsigned int flags)
-{
-       struct iov_iter to;
-       struct kiocb kiocb;
-       int ret;
-
-       iov_iter_pipe(&to, ITER_DEST, pipe, len);
-       init_sync_kiocb(&kiocb, in);
-       kiocb.ki_pos = *ppos;
-       ret = call_read_iter(in, &kiocb, &to);
-       if (ret > 0) {
-               *ppos = kiocb.ki_pos;
-               file_accessed(in);
-       } else if (ret < 0) {
-               /* free what was emitted */
-               pipe_discard_from(pipe, to.start_head);
-               /*
-                * callers of ->splice_read() expect -EAGAIN on
-                * "can't put anything in there", rather than -EFAULT.
-                */
-               if (ret == -EFAULT)
-                       ret = -EAGAIN;
-       }
-
-       return ret;
-}
-EXPORT_SYMBOL(generic_file_splice_read);
-
 const struct pipe_buf_operations default_pipe_buf_ops = {
        .release        = generic_pipe_buf_release,
        .try_steal      = generic_pipe_buf_try_steal,
index e3c22ef..08ba2ae 100644 (file)
@@ -2755,8 +2755,6 @@ ssize_t filemap_splice_read(struct file *in, loff_t *ppos,
 ssize_t copy_splice_read(struct file *in, loff_t *ppos,
                         struct pipe_inode_info *pipe,
                         size_t len, unsigned int flags);
-extern ssize_t generic_file_splice_read(struct file *, loff_t *,
-               struct pipe_inode_info *, size_t, unsigned int);
 extern ssize_t iter_file_splice_write(struct pipe_inode_info *,
                struct file *, loff_t *, size_t, unsigned int);
 extern ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe,