]> git.proxmox.com Git - mirror_ubuntu-eoan-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)
committerStefan Bader <stefan.bader@canonical.com>
Tue, 12 Nov 2019 17:46:46 +0000 (18:46 +0100)
commitec128791d29f206c4507a194cdbe620440f38823
treec4e673f804b0f11219b83bfe70ea442c71f53d26
parent1f523ddf3b1258705c18d7afbe5a0f9f4715f3ef
io_uring: fix bad inflight accounting for SETUP_IOPOLL|SETUP_SQTHREAD

BugLink: https://bugs.launchpad.net/bugs/1850456
commit 2b2ed9750fc9d040b9f6d076afcef6f00b6f1f7c upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Connor Kuehl <connor.kuehl@canonical.com>
Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
fs/io_uring.c