diff mbox series

[1/1] io_uring/rw: reissue only from the same task

Message ID e769b0d12b3c70861c2144b3ea58d3f08d542bbc.1736259071.git.asml.silence@gmail.com (mailing list archive)
State New
Headers show
Series [1/1] io_uring/rw: reissue only from the same task | expand

Commit Message

Pavel Begunkov Jan. 7, 2025, 2:11 p.m. UTC
io_rw_should_reissue() tries to propagate EAGAIN back to io_uring when
happens off the submission path, which is when it's staying within the
same task, and so thread group checks don't make much sense.

Cc: stable@vger.kernel.org
Fixes: ef04688871f33 ("io_uring: don't block level reissue off completion path")
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
---
 io_uring/rw.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jens Axboe Jan. 7, 2025, 2:31 p.m. UTC | #1
On 1/7/25 7:11 AM, Pavel Begunkov wrote:
> io_rw_should_reissue() tries to propagate EAGAIN back to io_uring when
> happens off the submission path, which is when it's staying within the
> same task, and so thread group checks don't make much sense.

Since there's the nvme multipath retry issue, let's skip this for now
and focus on sanitizing the retry stuff for 6.14 with an eye towards
just backporting that to 6.10+ where we have some sanity on the
import side with persistent data across issues.
Pavel Begunkov Jan. 7, 2025, 6:01 p.m. UTC | #2
On 1/7/25 14:31, Jens Axboe wrote:
> On 1/7/25 7:11 AM, Pavel Begunkov wrote:
>> io_rw_should_reissue() tries to propagate EAGAIN back to io_uring when
>> happens off the submission path, which is when it's staying within the
>> same task, and so thread group checks don't make much sense.
> 
> Since there's the nvme multipath retry issue, let's skip this for now
> and focus on sanitizing the retry stuff for 6.14 with an eye towards
> just backporting that to 6.10+ where we have some sanity on the
> import side with persistent data across issues.

Agree, and as mentioned the patch is troubled anyway. And something
tells me it'll turn into more of a rw request "lifetime" change rather
than iovec / buffer persistency thing.
diff mbox series

Patch

diff --git a/io_uring/rw.c b/io_uring/rw.c
index ca1b19d3d142..4d5aeff79130 100644
--- a/io_uring/rw.c
+++ b/io_uring/rw.c
@@ -485,7 +485,7 @@  static bool io_rw_should_reissue(struct io_kiocb *req)
 	 * Play it safe and assume not safe to re-import and reissue if we're
 	 * not in the original thread group (or in task context).
 	 */
-	if (!same_thread_group(req->tctx->task, current) || !in_task())
+	if (req->tctx->task != current || !in_task())
 		return false;
 	return true;
 }