diff options
author | Pavel Begunkov <asml.silence@gmail.com> | 2020-07-30 18:43:48 +0300 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2020-07-30 11:42:21 -0600 |
commit | dd9dfcdf5a603680458f5e7b0d2273c66e5417db (patch) | |
tree | 90233d3073b14593eff346c527258b2785ddef96 /fs | |
parent | b2bd1cf99f3e7c8fbf12ea07af2c6998e1209e25 (diff) | |
download | lwn-dd9dfcdf5a603680458f5e7b0d2273c66e5417db.tar.gz lwn-dd9dfcdf5a603680458f5e7b0d2273c66e5417db.zip |
io_uring: fix stalled deferred requests
Always do io_commit_cqring() after completing a request, even if it was
accounted as overflowed on the CQ side. Failing to do that may lead to
not to pushing deferred requests when needed, and so stalling the whole
ring.
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/io_uring.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/io_uring.c b/fs/io_uring.c index 6e2322525da6..11c1abe8bd1a 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -7849,6 +7849,7 @@ static void io_uring_cancel_files(struct io_ring_ctx *ctx, } WRITE_ONCE(ctx->rings->cq_overflow, atomic_inc_return(&ctx->cached_cq_overflow)); + io_commit_cqring(ctx); spin_unlock_irq(&ctx->completion_lock); /* |