Thread (64 messages) 64 messages, 10 authors, 2023-02-20

Re: copy on write for splice() from file to pipe?

flat view

From: Andy Lutomirski <luto@kernel.org>
Date: 2023-02-10 21:15:08
Also in: io-uring, linux-fsdevel, lkml

On Fri, Feb 10, 2023 at 12:50 PM Jens Axboe [off-list ref] wrote:
On 2/10/23 1:44 PM, Linus Torvalds wrote:
quoted
On Fri, Feb 10, 2023 at 12:39 PM Jens Axboe [off-list ref] wrote:
quoted
Right, I'm referencing doing zerocopy data sends with io_uring, using
IORING_OP_SEND_ZC. This isn't from a file, it's from a memory location,
but the important bit here is the split notifications and how you
could wire up a OP_SENDFILE similarly to what Andy described.
Sure, I think it's much more reasonable with io_uring than with splice itself.

So I was mainly just reacting to the "strict-splice" thing where Andy
was talking about tracking the page refcounts. I don't think anything
like that can be done at a splice() level, but higher levels that
actually know about the whole IO might be able to do something like
that.

Maybe we're just talking past each other.
Maybe slightly, as I was not really intending to comment on the strict
splice thing. But yeah I agree on splice, it would not be trivial to do
there. At least with io_uring we have the communication channel we need.
And tracking page refcounts seems iffy and fraught with potential
issues.
Hmm.

Are there any real-world use cases for zero-copy splice() that
actually depend on splicing from a file to a pipe and then later from
the pipe to a socket (or file or whatever)?  Or would everything
important be covered by a potential new io_uring operation that copies
from one fd directly to another fd?

Maybe I'm getting far ahead of myself.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help