On 8/30/20 1:17 PM, Al Viro wrote:
...
Why: In order to incrementally change Direct IO callers from calling
get_user_pages_fast() and put_page(), over to calling
pin_user_pages_fast() and unpin_user_page(), there need to be mid-level
routines that specifically call one or the other systems, for both page
acquisition and page release.
Hmm... Do you plan to kill iov_iter_get_pages* off, eventually getting
rid of that use_pup argument?
Yes. That is definitely something I'm interested in doing, and in fact,
I started to write words to that effect into the v1 cover letter. I lost
confidence at the last minute, after poking around the remaining call
sites (which are mostly network file systems, plus notably io_uring),
and wondering if I really understood what the hell I was doing. :)
So I decided to reduce the scope of the proposal, until I got some
feedback. Which I now have!
Looking at this again, I see that there are actually *very* few
ITER_KVEC and ITER_BVEC callers, so...yes, maybe this can all be
collapsed down to calling the new functions, which would always use pup,
and lead to the simplification you asked about.
Any advance warnings, advice, design thoughts are definitely welcome
here.
thanks,
--
John Hubbard
NVIDIA