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, 9 Aug 2021 15:04:17 +0000 (09:04 -0600)
commitb26d1744f1efd78d137e732bbe4eef4ebb098071
treec0b13f9926991f46824f0656e162f0b0c74cb70d
parent5ac78a0ed900418cc8ca27ced66742199566f997
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