projects
/
platform
/
kernel
/
linux-starfive.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
6363785
)
io_uring: prolong tctx_task_work() with flushing
author
Pavel Begunkov
<asml.silence@gmail.com>
Wed, 1 Sep 2021 23:38:23 +0000
(
00:38
+0100)
committer
Jens Axboe
<axboe@kernel.dk>
Fri, 3 Sep 2021 12:16:15 +0000
(06:16 -0600)
io_submit_flush_completions() may enqueue linked requests for task_work
execution, so don't leave tctx_task_work() right after the tw list is
exhausted, but try to flush and then retry.
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link:
https://lore.kernel.org/r/0755d4c2c36301447c63bdd4146c10477cea4249.1630539342.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c
patch
|
blob
|
history
diff --git
a/fs/io_uring.c
b/fs/io_uring.c
index
9f3f8a8
..
3a7145a
100644
(file)
--- a/
fs/io_uring.c
+++ b/
fs/io_uring.c
@@
-2102,6
+2102,9
@@
static void tctx_task_work(struct callback_head *cb)
while (1) {
struct io_wq_work_node *node;
+ if (!tctx->task_list.first && locked && ctx->submit_state.compl_nr)
+ io_submit_flush_completions(ctx);
+
spin_lock_irq(&tctx->task_lock);
node = tctx->task_list.first;
INIT_WQ_LIST(&tctx->task_list);