Lines Matching refs:req

15 static void io_uring_cmd_work(struct io_kiocb *req, bool *locked)  in io_uring_cmd_work()  argument
17 struct io_uring_cmd *ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd); in io_uring_cmd_work()
25 struct io_kiocb *req = cmd_to_io_kiocb(ioucmd); in io_uring_cmd_complete_in_task() local
28 req->io_task_work.func = io_uring_cmd_work; in io_uring_cmd_complete_in_task()
29 io_req_task_work_add(req); in io_uring_cmd_complete_in_task()
33 static inline void io_req_set_cqe32_extra(struct io_kiocb *req, in io_req_set_cqe32_extra() argument
36 req->extra1 = extra1; in io_req_set_cqe32_extra()
37 req->extra2 = extra2; in io_req_set_cqe32_extra()
38 req->flags |= REQ_F_CQE32_INIT; in io_req_set_cqe32_extra()
47 struct io_kiocb *req = cmd_to_io_kiocb(ioucmd); in io_uring_cmd_done() local
50 req_set_fail(req); in io_uring_cmd_done()
52 io_req_set_res(req, ret, 0); in io_uring_cmd_done()
53 if (req->ctx->flags & IORING_SETUP_CQE32) in io_uring_cmd_done()
54 io_req_set_cqe32_extra(req, res2, 0); in io_uring_cmd_done()
55 if (req->ctx->flags & IORING_SETUP_IOPOLL) in io_uring_cmd_done()
57 smp_store_release(&req->iopoll_completed, 1); in io_uring_cmd_done()
59 __io_req_complete(req, 0); in io_uring_cmd_done()
63 int io_uring_cmd_prep_async(struct io_kiocb *req) in io_uring_cmd_prep_async() argument
65 struct io_uring_cmd *ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd); in io_uring_cmd_prep_async()
71 cmd_size = uring_cmd_pdu_size(req->ctx->flags & IORING_SETUP_SQE128); in io_uring_cmd_prep_async()
73 memcpy(req->async_data, ioucmd->cmd, cmd_size); in io_uring_cmd_prep_async()
77 int io_uring_cmd_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe) in io_uring_cmd_prep() argument
79 struct io_uring_cmd *ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd); in io_uring_cmd_prep()
89 struct io_ring_ctx *ctx = req->ctx; in io_uring_cmd_prep()
92 req->buf_index = READ_ONCE(sqe->buf_index); in io_uring_cmd_prep()
93 if (unlikely(req->buf_index >= ctx->nr_user_bufs)) in io_uring_cmd_prep()
95 index = array_index_nospec(req->buf_index, ctx->nr_user_bufs); in io_uring_cmd_prep()
96 req->imu = ctx->user_bufs[index]; in io_uring_cmd_prep()
97 io_req_set_rsrc_node(req, ctx, 0); in io_uring_cmd_prep()
104 int io_uring_cmd(struct io_kiocb *req, unsigned int issue_flags) in io_uring_cmd() argument
106 struct io_uring_cmd *ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd); in io_uring_cmd()
107 struct io_ring_ctx *ctx = req->ctx; in io_uring_cmd()
108 struct file *file = req->file; in io_uring_cmd()
111 if (!req->file->f_op->uring_cmd) in io_uring_cmd()
124 req->iopoll_completed = 0; in io_uring_cmd()
128 if (req_has_async_data(req)) in io_uring_cmd()
129 ioucmd->cmd = req->async_data; in io_uring_cmd()
133 if (!req_has_async_data(req)) { in io_uring_cmd()
134 if (io_alloc_async_data(req)) in io_uring_cmd()
136 io_uring_cmd_prep_async(req); in io_uring_cmd()
143 req_set_fail(req); in io_uring_cmd()
144 io_req_set_res(req, ret, 0); in io_uring_cmd()
154 struct io_kiocb *req = cmd_to_io_kiocb(ioucmd); in io_uring_cmd_import_fixed() local
156 return io_import_fixed(rw, iter, req->imu, ubuf, len); in io_uring_cmd_import_fixed()