[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <166722777223.2555743.162508599131141451.stgit@warthog.procyon.org.uk>
Date: Mon, 31 Oct 2022 14:49:32 +0000
From: David Howells <dhowells@...hat.com>
To: viro@...iv.linux.org.uk
Cc: linux-mm@...r.kernel.org, John Hubbard <jhubbard@...dia.com>,
linux-fsdevel@...r.kernel.org, Christoph Hellwig <hch@....de>,
Matthew Wilcox <willy@...radead.org>, dhowells@...hat.com,
smfrench@...il.com, torvalds@...ux-foundation.org,
linux-cifs@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [RFC PATCH 0/2] iov_iter: Provide a function to extract/pin/get pages
from an iteraor
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(-)
Powered by blists - more mailing lists