Export generic_file_buffered_read() to be used to supplement incomplete direct reads.
Unified · Split
| @@ -3124,6 +3124,8 @@ extern int generic_file_rw_checks(struct file *file_in, struct file *file_out); · 3123 unmodified lines | ||
| 3124 | 3124 | extern int generic_copy_file_checks(struct file *file_in, loff_t pos_in, |
| 3125 | 3125 | struct file *file_out, loff_t pos_out, |
| 3126 | 3126 | size_t *count, unsigned int flags); |
| 3127 | +extern ssize_t generic_file_buffered_read(struct kiocb *iocb, | |
| 3128 | + struct iov_iter *to, ssize_t already_read); | |
| 3127 | 3129 | extern ssize_t generic_file_read_iter(struct kiocb *, struct iov_iter *); |
| 3128 | 3130 | extern ssize_t __generic_file_write_iter(struct kiocb *, struct iov_iter *); |
| 3129 | 3131 | extern ssize_t generic_file_write_iter(struct kiocb *, struct iov_iter *); |
| @@ -1991,7 +1991,7 @@ static void shrink_readahead_size_eio(struct file_ra_state *ra) · 1990 unmodified lines | ||
| 1991 | 1991 | * * total number of bytes copied, including those the were already @written |
| 1992 | 1992 | * * negative error code if nothing was copied |
| 1993 | 1993 | */ |
| 1994 | −static ssize_t generic_file_buffered_read(struct kiocb *iocb, | |
| 1994 | +ssize_t generic_file_buffered_read(struct kiocb *iocb, | |
| 1995 | 1995 | struct iov_iter *iter, ssize_t written) |
| 1996 | 1996 | { |
| 1997 | 1997 | struct file *filp = iocb->ki_filp; |
| @@ -2243,6 +2243,7 @@ out: · 245 unmodified lines | ||
| 2243 | 2243 | file_accessed(filp); |
| 2244 | 2244 | return written ? written : error; |
| 2245 | 2245 | } |
| 2246 | +EXPORT_SYMBOL_GPL(generic_file_buffered_read); | |
| 2246 | 2247 | |
| 2247 | 2248 | /** |
| 2248 | 2249 | * generic_file_read_iter - generic filesystem read routine |