Re: [PATCH 5/6] NFS: direct-io: convert to FOLL_PIN pages

From: Al Viro
Date: Sat Aug 27 2022 - 20:39:22 EST


On Sat, Aug 27, 2022 at 04:55:18PM -0700, John Hubbard wrote:
> On 8/27/22 15:48, Al Viro wrote:
> > On Sat, Aug 27, 2022 at 01:36:06AM -0700, John Hubbard wrote:
> >> Convert the NFS Direct IO layer to use pin_user_pages_fast() and
> >> unpin_user_page(), instead of get_user_pages_fast() and put_page().
> >
> > Again, this stuff can be hit with ITER_BVEC iterators
> >
> >> - result = iov_iter_get_pages_alloc2(iter, &pagevec,
> >> + result = dio_w_iov_iter_pin_pages_alloc(iter, &pagevec,
> >> rsize, &pgbase);
> >
> > and this will break on those.
>
> If anyone has an example handy, of a user space program that leads
> to this situation (O_DIRECT with ITER_BVEC), it would really help
> me reach enlightenment a lot quicker in this area. :)

Er... splice(2) to O_DIRECT-opened file on e.g. ext4? Or
sendfile(2) to the same, for that matter...