io_uring/cmd: Pass compat mode in issue_flags

Create a new flag to track if the operation is running compat mode.
This basically check the context->compat and pass it to the issue_flags,
so, it could be queried later in the callbacks.

Signed-off-by: Breno Leitao <leitao@debian.org>
Reviewed-by: Gabriel Krisman Bertazi <krisman@suse.de>
Link: https://lore.kernel.org/r/20231016134750.1381153-6-leitao@debian.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Breno Leitao 2023-10-16 06:47:43 -07:00 committed by Jens Axboe
parent 0b05b0cd78
commit 5fea44a6e0
2 changed files with 3 additions and 0 deletions

View File

@ -23,6 +23,7 @@ enum io_uring_cmd_flags {
/* set when uring wants to cancel a previously issued command */ /* set when uring wants to cancel a previously issued command */
IO_URING_F_CANCEL = (1 << 11), IO_URING_F_CANCEL = (1 << 11),
IO_URING_F_COMPAT = (1 << 12),
}; };
/* only top 8 bits of sqe->uring_cmd_flags for kernel internal use */ /* only top 8 bits of sqe->uring_cmd_flags for kernel internal use */

View File

@ -175,6 +175,8 @@ int io_uring_cmd(struct io_kiocb *req, unsigned int issue_flags)
issue_flags |= IO_URING_F_SQE128; issue_flags |= IO_URING_F_SQE128;
if (ctx->flags & IORING_SETUP_CQE32) if (ctx->flags & IORING_SETUP_CQE32)
issue_flags |= IO_URING_F_CQE32; issue_flags |= IO_URING_F_CQE32;
if (ctx->compat)
issue_flags |= IO_URING_F_COMPAT;
if (ctx->flags & IORING_SETUP_IOPOLL) { if (ctx->flags & IORING_SETUP_IOPOLL) {
if (!file->f_op->uring_cmd_iopoll) if (!file->f_op->uring_cmd_iopoll)
return -EOPNOTSUPP; return -EOPNOTSUPP;