Messages in this thread | | | Date | Sun, 27 Feb 2022 19:29:39 -0800 | Subject | Re: [PATCH 3/6] block, fs: assert that key paths use iovecs, and nothing else | From | John Hubbard <> |
| |
On 2/27/22 14:15, Al Viro wrote: > On Sun, Feb 27, 2022 at 01:34:31AM -0800, jhubbard.send.patches@gmail.com wrote: >> From: John Hubbard <jhubbard@nvidia.com> >> >> Upcoming changes to Direct IO will change it from acquiring pages via >> get_user_pages_fast(), to calling pin_user_pages_fast() instead. >> >> Place a few assertions at key points, that the pages are IOVEC (user >> pages), to enforce the assumptions that there are no kernel or pipe or >> other odd variations being passed. > > Umm... And what should happen when O_DIRECT file gets passed to splice()?
OK, right, this is not going to work as-is.
Any of the remaining iov_iter_get_pages*() callers that do direct IO (vmsplice, ceph, ...) will end up calling bio_release_pages(), which is now unconditionally calling unpin_user_pages(). So this is just completely broken.
And so, once again, I'm back to, "must convert the whole pile of iov_iter_get_page*() callers at once".
Back to the drawing board.
thanks, -- John Hubbard NVIDIA
| |