> BTW, something I think you're aware of, but wanted to bring up > explicitly - if IORING_FEAT_FAST_POLL is available in the ring features, > then you generally don't want/need to link potentially blocking requests > on pollable files with a poll in front. io_uring will do this > internally, and save you an sqe and completion event for each of these > types of requests. > > Your test case is a perfect example of that, neither the accept nor the > socket read would need a poll linked in front of them, as they are both > pollable file types and will not trigger use of an async thread to wait > for the event. Instead an internal poll is armed which will trigger the > issue of that request, when the socket is ready I am guessing if the socket(non blocking) is not writable as you said it's a pollable file type, io_uring will first use an internal poll to check if the socket is writable, right? so I don't explicitly need a poll(POLLOUT) https://git.kernel.dk/cgit/linux-block/commit/?h=for-5.7/io_uring&id=d7718a9d25a61442da8ee8aeeff6a0097f0ccfd6 you didn't mentioned writeable non blocking sockets, that's why I'm asking -- Josef Grieb