On 3/23/22 12:19, Jens Axboe wrote:
On 3/23/22 4:31 AM, Constantine Gavrilov wrote:
I get partial receives on TCP socket, even though I specify
MSG_WAITALL with IORING_OP_RECV opcode. Looking at tcpdump in
wireshark, I see entire reassambled packet (+4k), so it is not a
disconnect. The MTU is smaller than 4k.
From the mailing list history, looks like this was discussed before
and it seems the fix was supposed to be in. Can someone clarify the
expected behavior?
I do not think rsvmsg() has this issue.
Do you have a test case? I added the io-uring list, that's the
appropriate forum for this kind of discussion.
MSG_WAITALL (since Linux 2.2)
This flag requests that the operation block until the full
request is satisfied. However, the call may still return
less data than requested if a signal is caught
My guess would be that it's either due to signals (including
task_works actively used by io_uring) or because of some
interoperability problem with NOWAIT.
--
Pavel Begunkov