On 2/26/24 3:47 AM, Dylan Yudaken wrote: > On Sun, Feb 25, 2024 at 12:46?AM Jens Axboe <axboe@xxxxxxxxx> wrote: >> >> This works very much like the receive side, except for sends. The idea >> is that an application can fill outgoing buffers in a provided buffer >> group, and then arm a single send that will service them all. For now >> this variant just terminates when we are out of buffers to send, and >> hence the application needs to re-arm it if IORING_CQE_F_MORE isn't >> set, as per usual for multishot requests. >> > > This feels to me a lot like just using OP_SEND with MSG_WAITALL as > described, unless I'm missing something? How so? MSG_WAITALL is "send X amount of data, and if it's a short send, try again" where multishot is "send data from this buffer group, and keep sending data until it's empty". Hence it's the mirror of multishot on the receive side. Unless I'm misunderstanding you somehow, not sure it'd be smart to add special meaning to MSG_WAITALL with provided buffers. > I actually could imagine it being useful for the previous patches' use > case of queuing up sends and keeping ordering, > and I think the API is more obvious (rather than the second CQE > sending the first CQE's data). So maybe it's worth only > keeping one approach? And here you totally lost me :-) -- Jens Axboe