diff options
author | 2014-03-15 04:05:57 -0400 | |
---|---|---|
committer | 2014-05-06 17:32:50 -0400 | |
commit | 7b2c99d15559e285384c742db52316802e24b0bd (patch) | |
tree | 0f5260039ca25431decd1affc281aea5a5da27da /include/linux/uio.h | |
parent | dio: take updating ->result into do_direct_IO() (diff) | |
download | linux-7b2c99d15559e285384c742db52316802e24b0bd.tar.gz linux-7b2c99d15559e285384c742db52316802e24b0bd.tar.bz2 linux-7b2c99d15559e285384c742db52316802e24b0bd.zip |
new helper: iov_iter_get_pages()
iov_iter_get_pages(iter, pages, maxsize, &start) grabs references pinning
the pages of up to maxsize of (contiguous) data from iter. Returns the
amount of memory grabbed or -error. In case of success, the requested
area begins at offset start in pages[0] and runs through pages[1], etc.
Less than requested amount might be returned - either because the contiguous
area in the beginning of iterator is smaller than requested, or because
the kernel failed to pin that many pages.
direct-io.c switched to using iov_iter_get_pages()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'include/linux/uio.h')
-rw-r--r-- | include/linux/uio.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/uio.h b/include/linux/uio.h index b80bbe197d13..341986116d83 100644 --- a/include/linux/uio.h +++ b/include/linux/uio.h @@ -71,6 +71,8 @@ size_t copy_page_to_iter(struct page *page, size_t offset, size_t bytes, unsigned long iov_iter_alignment(const struct iov_iter *i); void iov_iter_init(struct iov_iter *i, int direction, const struct iovec *iov, unsigned long nr_segs, size_t count); +ssize_t iov_iter_get_pages(struct iov_iter *i, struct page **pages, + size_t maxsize, size_t *start); static inline size_t iov_iter_count(struct iov_iter *i) { |