io_uring: be smarter about waking multiple CQ ring waiters
authorJens Axboe <axboe@kernel.dk>
Fri, 6 Aug 2021 20:04:31 +0000 (14:04 -0600)
committerJens Axboe <axboe@kernel.dk>
Mon, 23 Aug 2021 19:07:56 +0000 (13:07 -0600)
commit5fd4617840596884334332f36cabfe0deabe85c8
tree81e227aaf7be0e414d36a7e9a5e7a746b37f5288
parentd3e9f732c415cf22faa33d6f195e291ad82dc92e
io_uring: be smarter about waking multiple CQ ring waiters

Currently we only wake the first waiter, even if we have enough entries
posted to satisfy multiple waiters. Improve that situation so that
every waiter knows how much the CQ tail has to advance before they can
be safely woken up.

With this change, if we have N waiters each asking for 1 event and we get
4 completions, then we wake up 4 waiters. If we have N waiters asking
for 2 completions and we get 4 completions, then we wake up the first
two. Previously, only the first waiter would've been woken up.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c