2022-03-25 07:17:16

by Constantine Gavrilov

[permalink] [raw]
Subject: io_uring_enter() with opcode IORING_OP_RECV ignores MSG_WAITALL in msg_flags

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.

--
----------------------------------------
Constantine Gavrilov
Storage Architect
Master Inventor
Tel-Aviv IBM Storage Lab
1 Azrieli Center, Tel-Aviv
----------------------------------------


2022-03-25 19:57:22

by Jens Axboe

[permalink] [raw]
Subject: Re: io_uring_enter() with opcode IORING_OP_RECV ignores MSG_WAITALL in msg_flags

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.

--
Jens Axboe