Re: [PATCH 6/6] fuse: convert direct IO paths to use FOLL_PIN

From: Miklos Szeredi
Date: Mon Feb 28 2022 - 10:59:50 EST


On Sun, 27 Feb 2022 at 10:34, <jhubbard.send.patches@xxxxxxxxx> wrote:
>
> From: John Hubbard <jhubbard@xxxxxxxxxx>
>
> Convert the fuse filesystem to support the new iov_iter_get_pages()
> behavior. That routine now invokes pin_user_pages_fast(), which means
> that such pages must be released via unpin_user_page(), rather than via
> put_page().
>
> This commit also removes any possibility of kernel pages being handled,
> in the fuse_get_user_pages() call. Although this may seem like a steep
> price to pay, Christoph Hellwig actually recommended it a few years ago
> for nearly the same situation [1].

This might work for O_DIRECT, but fuse has this mode of operation
which turns normal "buffered" I/O into direct I/O. And that in turn
will break execve of such files.

So AFAICS we need to keep kvec handing in some way.

Thanks,
Miklos