Message ID | 20250212005119.3433005-1-csander@purestorage.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | io_uring: use lockless_cq flag in io_req_complete_post() | expand |
Hi, > -----Original Message----- > From: Caleb Sander Mateos <csander@purestorage.com> > Sent: Wednesday, February 12, 2025 8:51 AM > To: Jens Axboe <axboe@kernel.dk>; Pavel Begunkov <asml.silence@gmail.com> > Cc: Caleb Sander Mateos <csander@purestorage.com>; io- > uring@vger.kernel.org; linux-kernel@vger.kernel.org > Subject: [PATCH] io_uring: use lockless_cq flag in io_req_complete_post() > > io_uring_create() computes ctx->lockless_cq as: > ctx->task_complete || (ctx->flags & IORING_SETUP_IOPOLL) > > So use it to simplify that expression in io_req_complete_post(). > > Signed-off-by: Caleb Sander Mateos <csander@purestorage.com> > --- > io_uring/io_uring.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c index > ec98a0ec6f34..0bd94599df81 100644 > --- a/io_uring/io_uring.c > +++ b/io_uring/io_uring.c > @@ -897,11 +897,11 @@ static void io_req_complete_post(struct io_kiocb > *req, unsigned issue_flags) > > /* > * Handle special CQ sync cases via task_work. DEFER_TASKRUN > requires > * the submitter task context, IOPOLL protects with uring_lock. > */ > - if (ctx->task_complete || (ctx->flags & IORING_SETUP_IOPOLL)) { > + if (ctx->lockless_cq) { When the completion_lock is not held, the req completion event needs to be handled through the task_work mechanism, so this modification makes sense to me. > req->io_task_work.func = io_req_task_complete; > io_req_task_work_add(req); > return; > } > > -- > 2.45.2 > Reviewed-by: Li Zetao <lizetao1@huawei.com> --- Li Zetao
Hi Jens, Gentle ping on this patch that Li Zetao reviewed last week. Do you think the comment should be removed/reworded to match the new if condition? Thanks, Caleb On Tue, Feb 11, 2025 at 4:51 PM Caleb Sander Mateos <csander@purestorage.com> wrote: > > io_uring_create() computes ctx->lockless_cq as: > ctx->task_complete || (ctx->flags & IORING_SETUP_IOPOLL) > > So use it to simplify that expression in io_req_complete_post(). > > Signed-off-by: Caleb Sander Mateos <csander@purestorage.com> > --- > io_uring/io_uring.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c > index ec98a0ec6f34..0bd94599df81 100644 > --- a/io_uring/io_uring.c > +++ b/io_uring/io_uring.c > @@ -897,11 +897,11 @@ static void io_req_complete_post(struct io_kiocb *req, unsigned issue_flags) > > /* > * Handle special CQ sync cases via task_work. DEFER_TASKRUN requires > * the submitter task context, IOPOLL protects with uring_lock. > */ > - if (ctx->task_complete || (ctx->flags & IORING_SETUP_IOPOLL)) { > + if (ctx->lockless_cq) { > req->io_task_work.func = io_req_task_complete; > io_req_task_work_add(req); > return; > } > > -- > 2.45.2 >
On Tue, 11 Feb 2025 17:51:18 -0700, Caleb Sander Mateos wrote: > io_uring_create() computes ctx->lockless_cq as: > ctx->task_complete || (ctx->flags & IORING_SETUP_IOPOLL) > > So use it to simplify that expression in io_req_complete_post(). > > Applied, thanks! [1/1] io_uring: use lockless_cq flag in io_req_complete_post() commit: 62aa9805d123165102273eb277f776aaca908e0e Best regards,
diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c index ec98a0ec6f34..0bd94599df81 100644 --- a/io_uring/io_uring.c +++ b/io_uring/io_uring.c @@ -897,11 +897,11 @@ static void io_req_complete_post(struct io_kiocb *req, unsigned issue_flags) /* * Handle special CQ sync cases via task_work. DEFER_TASKRUN requires * the submitter task context, IOPOLL protects with uring_lock. */ - if (ctx->task_complete || (ctx->flags & IORING_SETUP_IOPOLL)) { + if (ctx->lockless_cq) { req->io_task_work.func = io_req_task_complete; io_req_task_work_add(req); return; }
io_uring_create() computes ctx->lockless_cq as: ctx->task_complete || (ctx->flags & IORING_SETUP_IOPOLL) So use it to simplify that expression in io_req_complete_post(). Signed-off-by: Caleb Sander Mateos <csander@purestorage.com> --- io_uring/io_uring.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)