io_uring: enable EPOLLEXCLUSIVE for accept poll
authorDylan Yudaken <dylany@fb.com>
Fri, 25 Mar 2022 09:37:55 +0000 (02:37 -0700)
committerJens Axboe <axboe@kernel.dk>
Fri, 25 Mar 2022 12:30:23 +0000 (06:30 -0600)
commit52dd86406dfa322c8d42b3a4328858abdc6f1d85
tree401c67c36d89fd07932342b741a74d1c745dc933
parent34d2bfe7d4b65b375d0edf704133a6b6970f9d81
io_uring: enable EPOLLEXCLUSIVE for accept poll

When polling sockets for accept, use EPOLLEXCLUSIVE. This is helpful
when multiple accept SQEs are submitted.

For O_NONBLOCK sockets multiple queued SQEs would previously have all
completed at once, but most with -EAGAIN as the result. Now only one
wakes up and completes.

For sockets without O_NONBLOCK there is no user facing change, but
internally the extra requests would previously be queued onto a worker
thread as they would wake up with no connection waiting, and be
punted. Now they do not wake up unnecessarily.

Co-developed-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Dylan Yudaken <dylany@fb.com>
Link: https://lore.kernel.org/r/20220325093755.4123343-1-dylany@fb.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c