Re: [PATCH v20 03/32] splice: Make direct_read_splice() limit to eof where appropriate

From: Christoph Hellwig
Date: Fri May 19 2023 - 04:48:16 EST


On Fri, May 19, 2023 at 09:43:34AM +0100, David Howells wrote:
> > direct_read_splice (which also appears a little misnamed) really is
> > a splice by calling ->read_iter helper.
>
> It can be renamed if you want a different name. copy_splice_read() or
> copy_splice_read_iter()?

Maybe something like that, yes.

>
> > I we don't do any of this validtion we can just call it directly from
> > splice.c instead of calling into ->splice_read for direct I/O and DAX and
> > remove a ton of boilerplate code.
>
> There's a couple of places where we might not want to do that - at least for
> non-DAX. shmem and f2fs for example. f2fs calls back to buffered reading
> under some circumstances. shmem ignores O_DIRECT and always splices from the
> pagecache.

So? even if ->read_iter does buffered I/O for O_DIRECT it will still
work. This can in fact happen for many other file systems due when
they fall back to buffeed I/O due to various reasons.