On 1/14/25 21:40, Bernd Schubert wrote: ...
My personal thinking regarding ZC was to hook into Mings work, I didn't into deep details but from interface point of view it sounded nice, like - Application write - fuse-client/kernel request/CQEs with write attempts - fuse server prepares group SQE, group leader prepares the write buffer, other group members are consumers using their buffer part for the final destination - release of leader buffer when other group members are done Though, Pavel and Jens have concerns and have a different suggestion and at least the example Pavel gave looks like splice
That's the same approach but with adjusted api, i.e. instead of caging into groups it uses an io_uring private table, but in both cases one request provides a buffer, subsequent requests do IO with that buffer. And fwiw, it has nothing to do with pipes. > https://lore.kernel.org/all/f3a83b6a-c4b9-4933-998d-ebd1d09e3405@xxxxxxxxx/ That one is simple and easy to maintain, we can trivially pick it up if needed.
I think David is looking into a different ZC solution, but I don't have details on that. Maybe fuse-io-uring and ublk splice approach should be another LSFMM topic.
Unfortunately, I won't make it, but maybe Jens is planning to go. -- Pavel Begunkov