diff options
-rw-r--r-- | include/linux/fs.h | 2 | ||||
-rw-r--r-- | mm/filemap.c | 43 |
2 files changed, 8 insertions, 37 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index 99817c9e665e..a6448849dbce 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -2411,10 +2411,8 @@ extern int generic_file_readonly_mmap(struct file *, struct vm_area_struct *); | |||
2411 | extern int generic_file_remap_pages(struct vm_area_struct *, unsigned long addr, | 2411 | extern int generic_file_remap_pages(struct vm_area_struct *, unsigned long addr, |
2412 | unsigned long size, pgoff_t pgoff); | 2412 | unsigned long size, pgoff_t pgoff); |
2413 | int generic_write_checks(struct file *file, loff_t *pos, size_t *count, int isblk); | 2413 | int generic_write_checks(struct file *file, loff_t *pos, size_t *count, int isblk); |
2414 | extern ssize_t generic_file_aio_read(struct kiocb *, const struct iovec *, unsigned long, loff_t); | ||
2415 | extern ssize_t generic_file_read_iter(struct kiocb *, struct iov_iter *); | 2414 | extern ssize_t generic_file_read_iter(struct kiocb *, struct iov_iter *); |
2416 | extern ssize_t __generic_file_write_iter(struct kiocb *, struct iov_iter *); | 2415 | extern ssize_t __generic_file_write_iter(struct kiocb *, struct iov_iter *); |
2417 | extern ssize_t generic_file_aio_write(struct kiocb *, const struct iovec *, unsigned long, loff_t); | ||
2418 | extern ssize_t generic_file_write_iter(struct kiocb *, struct iov_iter *); | 2416 | extern ssize_t generic_file_write_iter(struct kiocb *, struct iov_iter *); |
2419 | extern ssize_t generic_file_direct_write(struct kiocb *, struct iov_iter *, loff_t); | 2417 | extern ssize_t generic_file_direct_write(struct kiocb *, struct iov_iter *, loff_t); |
2420 | extern ssize_t generic_perform_write(struct file *, struct iov_iter *, loff_t); | 2418 | extern ssize_t generic_perform_write(struct file *, struct iov_iter *, loff_t); |
diff --git a/mm/filemap.c b/mm/filemap.c index 7dcdb9db710d..2f724e3cdf24 100644 --- a/mm/filemap.c +++ b/mm/filemap.c | |||
@@ -1663,6 +1663,14 @@ out: | |||
1663 | return written ? written : error; | 1663 | return written ? written : error; |
1664 | } | 1664 | } |
1665 | 1665 | ||
1666 | /** | ||
1667 | * generic_file_read_iter - generic filesystem read routine | ||
1668 | * @iocb: kernel I/O control block | ||
1669 | * @iter: destination for the data read | ||
1670 | * | ||
1671 | * This is the "read_iter()" routine for all filesystems | ||
1672 | * that can use the page cache directly. | ||
1673 | */ | ||
1666 | ssize_t | 1674 | ssize_t |
1667 | generic_file_read_iter(struct kiocb *iocb, struct iov_iter *iter) | 1675 | generic_file_read_iter(struct kiocb *iocb, struct iov_iter *iter) |
1668 | { | 1676 | { |
@@ -1713,28 +1721,6 @@ out: | |||
1713 | } | 1721 | } |
1714 | EXPORT_SYMBOL(generic_file_read_iter); | 1722 | EXPORT_SYMBOL(generic_file_read_iter); |
1715 | 1723 | ||
1716 | /** | ||
1717 | * generic_file_aio_read - generic filesystem read routine | ||
1718 | * @iocb: kernel I/O control block | ||
1719 | * @iov: io vector request | ||
1720 | * @nr_segs: number of segments in the iovec | ||
1721 | * @pos: current file position | ||
1722 | * | ||
1723 | * This is the "read()" routine for all filesystems | ||
1724 | * that can use the page cache directly. | ||
1725 | */ | ||
1726 | ssize_t | ||
1727 | generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov, | ||
1728 | unsigned long nr_segs, loff_t pos) | ||
1729 | { | ||
1730 | size_t count = iov_length(iov, nr_segs); | ||
1731 | struct iov_iter i; | ||
1732 | |||
1733 | iov_iter_init(&i, READ, iov, nr_segs, count); | ||
1734 | return generic_file_read_iter(iocb, &i); | ||
1735 | } | ||
1736 | EXPORT_SYMBOL(generic_file_aio_read); | ||
1737 | |||
1738 | #ifdef CONFIG_MMU | 1724 | #ifdef CONFIG_MMU |
1739 | /** | 1725 | /** |
1740 | * page_cache_read - adds requested page to the page cache if not already there | 1726 | * page_cache_read - adds requested page to the page cache if not already there |
@@ -2675,19 +2661,6 @@ ssize_t generic_file_write_iter(struct kiocb *iocb, struct iov_iter *from) | |||
2675 | } | 2661 | } |
2676 | EXPORT_SYMBOL(generic_file_write_iter); | 2662 | EXPORT_SYMBOL(generic_file_write_iter); |
2677 | 2663 | ||
2678 | ssize_t generic_file_aio_write(struct kiocb *iocb, const struct iovec *iov, | ||
2679 | unsigned long nr_segs, loff_t pos) | ||
2680 | { | ||
2681 | size_t count = iov_length(iov, nr_segs); | ||
2682 | struct iov_iter from; | ||
2683 | |||
2684 | BUG_ON(iocb->ki_pos != pos); | ||
2685 | |||
2686 | iov_iter_init(&from, WRITE, iov, nr_segs, count); | ||
2687 | return generic_file_write_iter(iocb, &from); | ||
2688 | } | ||
2689 | EXPORT_SYMBOL(generic_file_aio_write); | ||
2690 | |||
2691 | /** | 2664 | /** |
2692 | * try_to_release_page() - release old fs-specific metadata on a page | 2665 | * try_to_release_page() - release old fs-specific metadata on a page |
2693 | * | 2666 | * |