Re: [RFC -next 00/10] Add ZC notifications to splice and sendfile

Joe Damato
2025-03-21T21:28:19Z

On Fri, Mar 21, 2025 at 02:33:16PM -0600, Jens Axboe wrote:
> On 3/21/25 2:30 PM, Joe Damato wrote:
> > On Fri, Mar 21, 2025 at 09:36:34AM -0700, Joe Damato wrote:
> >> On Fri, Mar 21, 2025 at 05:14:59AM -0600, Jens Axboe wrote:
> >>> On 3/20/25 11:56 PM, Christoph Hellwig wrote:
> >>>>> I don't know the entire historical context, but I presume sendmsg
> >>>>> did that because there was no other mechanism at the time.
> >>>>
> >>>> At least aio had been around for about 15 years at the point, but
> >>>> networking folks tend to be pretty insular and reinvent things.
> >>>
> >>> Yep...
> >>>
> >>>>> It seems like Jens suggested that plumbing this through for splice
> >>>>> was a possibility, but sounds like you disagree.
> >>>>
> >>>> Yes, very strongly.
> >>>
> >>> And that is very much not what I suggested, fwiw.
> >>
> >> Your earlier message said:
> >>
> >> If the answer is "because splice", then it would seem saner to
> >> plumb up those bits only. Would be much simpler too...
> >>
> >> wherein I interpreted "plumb those bits" to mean plumbing the error
> >> queue notifications on TX completions.
> >>
> >> My sincere apologies that I misunderstood your prior message and/or
> >> misconstrued what you said -- it was not clear to me what you meant.
> >
> > I think what added to my confusion here was this bit, Jens:
> >
> > > > As far as the bit about plumbing only the splice bits, sorry if I'm
> > > > being dense here, do you mean plumbing the error queue through to
> > > > splice only and dropping sendfile2?
> > > >
> > > > That is an option. Then the apps currently using sendfile could use
> > > > splice instead and get completion notifications on the error queue.
> > > > That would probably work and be less work than rewriting to use
> > > > iouring, but probably a bit more work than using a new syscall.
> > >
> > > Yep
> >
> > I thought I was explicitly asking if adding SPLICE_F_ZC and plumbing
> > through the error queue notifications was OK and your response here
> > ("Yep") suggested to me that it would be a suitable path to
> > consider.
> >
> > I take it from your other responses, though, that I was mistaken.
>
> I guess I missed your error queue thing here, I was definitely pretty
> clear in other ones that I consider that part a hack and something that
> only exists because networking never looked into doing a proper async
> API for anything.

OK, so then I have no idea what you meant in your earlier response
with "Yep" :)

Combing everything said amongst a set of emails it sounds like the
summary is something like:

A safe, synchronous sendfile can be implemented in userland
using iouring, so there is no need to do anything in the kernel
at all. At most, some documentation or examples are needed
somewhere so people who want a safe version of sendfile know
what to do instead.

Is that right?

If so, then great, I guess there is nothing for me to do except
figure out what documentation or man pages to update.