Hi Al, Here's a patch to provide a function to extract a list of pages from an iterator, getting pins of refs on them as appropriate. I added a macro by which you can query an iterator to find out how the extraction function will treat the pages (it returns 0, FOLL_GET or FOLL_PIN as appropriate). Note that it's a macro to avoid #inclusion of linux/mm.h in linux/uio.h. I've added another crude, incomplete patch to make cifs use it a bit as an example. Note that cifs won't work properly with this under all circumstances, particularly if it decides to split the rdata or wdata record - but it seems to work for small I/Os. David --- David Howells (2): iov_iter: Add a function to extract a page list from an iterator cifs: Test use of iov_iter_extract_pages() and iov_iter_extract_mode() fs/cifs/cifsglob.h | 2 + fs/cifs/file.c | 93 +++++++++---- include/linux/uio.h | 26 ++++ lib/iov_iter.c | 333 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 427 insertions(+), 27 deletions(-)