IOSQE_IO_LINK vs. short send of SOCK_STREAM

Ming Lei
2023-01-11T15:27:33Z

Hello Guy,

Per my understanding, a short send on SOCK_STREAM should terminate the
remainder of the SQE chain built by IOSQE_IO_LINK.

But from my observation, this point isn't true when using io_sendmsg or
io_sendmsg_zc on TCP socket, and the other remainder of the chain still
can be completed after one short send is found. MSG_WAITALL is off.

For SOCK_STREAM, IOSQE_IO_LINK probably is the only way of io_uring for
sending data correctly in batch. However, it depends on the assumption
of chain termination by short send.

Appreciate any comment.

Thanks,
Ming