Lines Matching defs:req
16 static void io_uring_cmd_work(struct io_kiocb *req, struct io_tw_state *ts)
18 struct io_uring_cmd *ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd);
28 struct io_kiocb *req = cmd_to_io_kiocb(ioucmd);
31 req->io_task_work.func = io_uring_cmd_work;
32 __io_req_task_work_add(req, flags);
43 static inline void io_req_set_cqe32_extra(struct io_kiocb *req,
46 req->big_cqe.extra1 = extra1;
47 req->big_cqe.extra2 = extra2;
57 struct io_kiocb *req = cmd_to_io_kiocb(ioucmd);
60 req_set_fail(req);
62 io_req_set_res(req, ret, 0);
63 if (req->ctx->flags & IORING_SETUP_CQE32)
64 io_req_set_cqe32_extra(req, res2, 0);
65 if (req->ctx->flags & IORING_SETUP_IOPOLL) {
67 smp_store_release(&req->iopoll_completed, 1);
72 io_req_task_complete(req, &ts);
77 int io_uring_cmd_prep_async(struct io_kiocb *req)
79 struct io_uring_cmd *ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd);
81 memcpy(req->async_data, ioucmd->sqe, uring_sqe_size(req->ctx));
82 ioucmd->sqe = req->async_data;
86 int io_uring_cmd_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
88 struct io_uring_cmd *ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd);
98 struct io_ring_ctx *ctx = req->ctx;
101 req->buf_index = READ_ONCE(sqe->buf_index);
102 if (unlikely(req->buf_index >= ctx->nr_user_bufs))
104 index = array_index_nospec(req->buf_index, ctx->nr_user_bufs);
105 req->imu = ctx->user_bufs[index];
106 io_req_set_rsrc_node(req, ctx, 0);
113 int io_uring_cmd(struct io_kiocb *req, unsigned int issue_flags)
115 struct io_uring_cmd *ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd);
116 struct io_ring_ctx *ctx = req->ctx;
117 struct file *file = req->file;
135 req->iopoll_completed = 0;
141 if (!req_has_async_data(req)) {
142 if (io_alloc_async_data(req))
144 io_uring_cmd_prep_async(req);
151 req_set_fail(req);
152 io_req_set_res(req, ret, 0);
162 struct io_kiocb *req = cmd_to_io_kiocb(ioucmd);
164 return io_import_fixed(rw, iter, req->imu, ubuf, len);