diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c index 7bfbc7c22367..0ae830faf0d9 100644 --- a/io_uring/io_uring.c +++ b/io_uring/io_uring.c @@ -1723,6 +1723,8 @@ static int io_issue_sqe(struct io_kiocb *req, unsigned int issue_flags) const struct cred *creds = NULL; int ret; + pr_warn("%s\n", __func__); + if (unlikely(!io_assign_file(req, def, issue_flags))) return -EBADF; @@ -1942,6 +1944,8 @@ static inline void io_queue_sqe(struct io_kiocb *req) { int ret; + pr_warn("%s\n", __func__); + ret = io_issue_sqe(req, IO_URING_F_NONBLOCK|IO_URING_F_COMPLETE_DEFER); /* @@ -2159,6 +2163,8 @@ static inline int io_submit_sqe(struct io_ring_ctx *ctx, struct io_kiocb *req, struct io_submit_link *link = &ctx->submit_state.link; int ret; + pr_warn("%s: SQE = %px\n", __func__, sqe); + ret = io_init_req(ctx, req, sqe); if (unlikely(ret)) return io_submit_fail_init(sqe, req, ret); @@ -2187,6 +2193,7 @@ static inline int io_submit_sqe(struct io_ring_ctx *ctx, struct io_kiocb *req, } else if (unlikely(req->flags & (IO_REQ_LINK_FLAGS | REQ_F_FORCE_ASYNC | REQ_F_FAIL))) { + pr_warn("%s: not queuing SQE %px, flags=0x%llx\n", __func__, sqe, req->flags); if (req->flags & IO_REQ_LINK_FLAGS) { link->head = req; link->last = req; @@ -2309,6 +2316,7 @@ int io_submit_sqes(struct io_ring_ctx *ctx, unsigned int nr) io_req_add_to_cache(req, ctx); break; } + pr_warn("%s: SQE = %px\n", __func__, sqe); /* * Continue submitting even for sqe failure if the diff --git a/io_uring/uring_cmd.c b/io_uring/uring_cmd.c index fc94c465a985..5d88c72d6a89 100644 --- a/io_uring/uring_cmd.c +++ b/io_uring/uring_cmd.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -235,6 +236,8 @@ int io_uring_cmd(struct io_kiocb *req, unsigned int issue_flags) struct file *file = req->file; int ret; + pr_warn("%s: SQE = %px\n", __func__, ioucmd->sqe); + if (!file->f_op->uring_cmd) return -EOPNOTSUPP; @@ -347,9 +350,15 @@ int io_uring_cmd_sock(struct io_uring_cmd *cmd, unsigned int issue_flags) struct proto *prot = READ_ONCE(sk->sk_prot); int ret, arg = 0; + pr_warn("%s: cmd->sqe = %px\n", __func__, cmd->sqe); + if (!prot || !prot->ioctl) return -EOPNOTSUPP; + pr_warn("%s: [first read] cmd->sqe->cmd_op = 0x%x\n", __func__, READ_ONCE(cmd->sqe->cmd_op)); + mdelay(2000); + pr_warn("%s: [second read] cmd->sqe->cmd_op = 0x%x\n", __func__, READ_ONCE(cmd->sqe->cmd_op)); + switch (cmd->sqe->cmd_op) { case SOCKET_URING_OP_SIOCINQ: ret = prot->ioctl(sk, SIOCINQ, &arg);