Messages in this thread | | | Date | Tue, 7 Feb 2023 21:26:12 -0800 | From | Christoph Hellwig <> | Subject | Re: [PATCH v12 01/10] vfs, iomap: Fix generic_file_splice_read() to avoid reversion of ITER_PIPE |
| |
Subject nitpick: this does not ouch iomap at all.
> Fix this by replacing the use of an ITER_PIPE iterator with an ITER_BVEC > iterator for which reversion won't free the buffers. Bulk allocate all the > buffers we think we're going to use in advance, do the read synchronously > and only then trim the buffer down. The pages we did use get pushed into > the pipe. > > This is more efficient by virtue of doing a bulk page allocation, but > slightly less efficient by ignoring any partial page in the pipe.
For the usual case of a buffered read into the iter, this completely changes the semantics:
- before the pagecache pages just grew a new reference and were added to the pipe buffer, and I/O was done without an extra copy - with this patch you always allocate an extra set of pages for the pipe and copy to it
So I very much doubt this makes anything more efficient, and I don't think we can just do it.
We'll have to fix reverting of pipe buffers, just as I already pointed out in your cifs series that tries to play the same game.
| |