* [PATCH] io_uring/rw: handle IORING_OP_URING_CMD128 in iopoll dispatch
[not found] <CGME20260219123601epcas5p3102acea27f92bc92a8e482c18e74103f@epcas5p3.samsung.com>
@ 2026-02-19 12:31 ` Anuj Gupta
2026-02-19 13:32 ` Kanchan Joshi
0 siblings, 1 reply; 2+ messages in thread
From: Anuj Gupta @ 2026-02-19 12:31 UTC (permalink / raw)
To: axboe, kbusch; +Cc: io-uring, joshi.k, Anuj Gupta
io_uring_classic_poll() special-cases only IORING_OP_URING_CMD for
uring-cmd iopoll dispatch. IORING_OP_URING_CMD128 falls into the generic
rw branch, which calls file->f_op->iopoll() after casting to struct io_rw.
That is the wrong callback path for uring_cmd requests, which should go
through ->uring_cmd_iopoll(). Treat IORING_OP_URING_CMD128 the same as
IORING_OP_URING_CMD in io_uring_classic_poll().
Fixes: 1cba30bf9fdd ("io_uring: add support for IORING_SETUP_SQE_MIXED")
Signed-off-by: Anuj Gupta <anuj20.g@samsung.com>
---
io_uring/rw.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/io_uring/rw.c b/io_uring/rw.c
index b3971171c342..0eede0c09eaf 100644
--- a/io_uring/rw.c
+++ b/io_uring/rw.c
@@ -1254,7 +1254,7 @@ static int io_uring_classic_poll(struct io_kiocb *req, struct io_comp_batch *iob
{
struct file *file = req->file;
- if (req->opcode == IORING_OP_URING_CMD) {
+ if (req->opcode == IORING_OP_URING_CMD || req->opcode == IORING_OP_URING_CMD128) {
struct io_uring_cmd *ioucmd;
ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd);
--
2.25.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] io_uring/rw: handle IORING_OP_URING_CMD128 in iopoll dispatch
2026-02-19 12:31 ` [PATCH] io_uring/rw: handle IORING_OP_URING_CMD128 in iopoll dispatch Anuj Gupta
@ 2026-02-19 13:32 ` Kanchan Joshi
0 siblings, 0 replies; 2+ messages in thread
From: Kanchan Joshi @ 2026-02-19 13:32 UTC (permalink / raw)
To: Anuj Gupta, axboe, kbusch; +Cc: io-uring
On 2/19/2026 6:01 PM, Anuj Gupta wrote:
> io_uring_classic_poll() special-cases only IORING_OP_URING_CMD for
> uring-cmd iopoll dispatch. IORING_OP_URING_CMD128 falls into the generic
> rw branch, which calls file->f_op->iopoll() after casting to struct io_rw.
>
> That is the wrong callback path for uring_cmd requests, which should go
> through ->uring_cmd_iopoll(). Treat IORING_OP_URING_CMD128 the same as
> IORING_OP_URING_CMD in io_uring_classic_poll().
>
> Fixes: 1cba30bf9fdd ("io_uring: add support for IORING_SETUP_SQE_MIXED")
Just noticed that Caleb had sent a patch that handles this more completely:
https://lore.kernel.org/io-uring/20260219013534.4140776-1-csander@purestorage.com/
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-02-19 13:33 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <CGME20260219123601epcas5p3102acea27f92bc92a8e482c18e74103f@epcas5p3.samsung.com>
2026-02-19 12:31 ` [PATCH] io_uring/rw: handle IORING_OP_URING_CMD128 in iopoll dispatch Anuj Gupta
2026-02-19 13:32 ` Kanchan Joshi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox