Messages in this thread | | | Date | Wed, 23 Mar 2022 19:40:18 +0000 | Subject | Re: io_uring_enter() with opcode IORING_OP_RECV ignores MSG_WAITALL in msg_flags | From | Pavel Begunkov <> |
| |
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
| |