FAILED: patch "[PATCH] io_uring: remove extra sqpoll submission halting" failed to apply to 5.11-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.11-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 3b763ba1c77da5806e4fdc5684285814fe970c98 Mon Sep 17 00:00:00 2001
From: Pavel Begunkov <[email protected]>
Date: Sun, 18 Apr 2021 14:52:08 +0100
Subject: [PATCH] io_uring: remove extra sqpoll submission halting
SQPOLL task won't submit requests for a context that is currently dying, so no need to remove ctx from sqd_list prior the main loop of io_ring_exit_work(). Kill it, will be removed by io_sq_thread_finish() and only brings confusion and lockups.
fs/io_uring.c +4 -8
@@ -6750,6 +6750,10 @@ static int __io_sq_thread(struct io_ring_ctx *ctx, bool cap_entries)if (!list_empty (&ctx->iopoll_list))io_do_iopoll (ctx, &nr_events,0 ); +/* +* Don't submit if refs are dying, good for io_uring_register(), +* but also it is relied upon by io_ring_exit_work() +*/ if (to_submit &&likely (!percpu_ref_is_dying (&ctx->refs)) && !(ctx->flags &IORING_SETUP_R_DISABLED )) ret =io_submit_sqes (ctx, to_submit);
@@ -8540,14 +8544,6 @@ static void io_ring_exit_work(struct work_struct *work)struct io_tctx_node *node;int ret; -/* prevent SQPOLL from submitting new requests */ -if (ctx->sq_data) { -io_sq_thread_park (ctx->sq_data); -list_del_init (&ctx->sqd_list); -io_sqd_update_thread_idle (ctx->sq_data); -io_sq_thread_unpark (ctx->sq_data); - } -/* * If we're doing polled IO and end up having requests being * submitted async (out-of-line), then completions can come in while