]> git.baikalelectronics.ru Git - kernel.git/commit
io_uring: fix bad inflight accounting for SETUP_IOPOLL|SETUP_SQTHREAD
authorJens Axboe <axboe@kernel.dk>
Fri, 25 Oct 2019 16:06:15 +0000 (10:06 -0600)
committerJens Axboe <axboe@kernel.dk>
Fri, 25 Oct 2019 16:58:53 +0000 (10:58 -0600)
commite51fd4b686a37ac3abd35243d58507fe46bb3d63
treee7688dd8e1ca4f2b2beabda1b9cc9d824724aa76
parent41523485e36cf84b6995dad1e0fef05b892adcde
io_uring: fix bad inflight accounting for SETUP_IOPOLL|SETUP_SQTHREAD

We currently assume that submissions from the sqthread are successful,
and if IO polling is enabled, we use that value for knowing how many
completions to look for. But if we overflowed the CQ ring or some
requests simply got errored and already completed, they won't be
available for polling.

For the case of IO polling and SQTHREAD usage, look at the pending
poll list. If it ever hits empty then we know that we don't have
anymore pollable requests inflight. For that case, simply reset
the inflight count to zero.

Reported-by: Pavel Begunkov <asml.silence@gmail.com>
Reviewed-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c