Lines Matching defs:req
35 bool io_cancel_req_match(struct io_kiocb *req, struct io_cancel_data *cd)
39 if (req->ctx != cd->ctx)
48 if (req->file != cd->file)
52 if (req->opcode != cd->opcode)
55 if (match_user_data && req->cqe.user_data != cd->data)
59 if (cd->seq == req->work.cancel_seq)
61 req->work.cancel_seq = cd->seq;
69 struct io_kiocb *req = container_of(work, struct io_kiocb, work);
72 return io_cancel_req_match(req, cd);
129 int io_async_cancel_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
131 struct io_cancel *cancel = io_kiocb_to_cmd(req, struct io_cancel);
133 if (unlikely(req->flags & REQ_F_BUFFER_SELECT))
191 int io_async_cancel(struct io_kiocb *req, unsigned int issue_flags)
193 struct io_cancel *cancel = io_kiocb_to_cmd(req, struct io_cancel);
195 .ctx = req->ctx,
199 .seq = atomic_inc_return(&req->ctx->cancel_seq),
201 struct io_uring_task *tctx = req->task->io_uring;
205 if (req->flags & REQ_F_FIXED_FILE ||
207 req->flags |= REQ_F_FIXED_FILE;
208 req->file = io_file_get_fixed(req, cancel->fd,
211 req->file = io_file_get_normal(req, cancel->fd);
213 if (!req->file) {
217 cd.file = req->file;
223 req_set_fail(req);
224 io_req_set_res(req, ret, 0);