Lines Matching defs:link
22 /* head of the link, used by linked timeouts only */
144 static void io_req_tw_fail_links(struct io_kiocb *link, struct io_tw_state *ts)
146 io_tw_lock(link->ctx, ts);
147 while (link) {
148 struct io_kiocb *nxt = link->link;
151 if (link->flags & REQ_F_FAIL)
152 res = link->cqe.res;
153 link->link = NULL;
154 io_req_set_res(link, res, 0);
155 io_req_task_complete(link, ts);
156 link = nxt;
163 struct io_kiocb *link = req->link;
166 if (!link)
169 while (link) {
171 link->flags |= REQ_F_CQE_SKIP;
173 link->flags &= ~REQ_F_CQE_SKIP;
174 trace_io_uring_fail_link(req, link);
175 link = link->link;
178 link = req->link;
179 link->io_task_work.func = io_req_tw_fail_links;
180 io_req_task_work_add(link);
181 req->link = NULL;
186 struct io_kiocb *nxt = req->link;
188 req->link = nxt->link;
189 nxt->link = NULL;
195 struct io_kiocb *link = NULL;
198 link = req->link;
200 if (link && link->opcode == IORING_OP_LINK_TIMEOUT) {
202 io_req_queue_tw_complete(link, -ECANCELED);
208 link = io_disarm_linked_timeout(req);
210 if (link)
211 io_req_queue_tw_complete(link, -ECANCELED);
219 struct io_kiocb *link)
223 struct io_timeout_data *io = link->async_data;
224 struct io_timeout *timeout = io_kiocb_to_cmd(link, struct io_timeout);
230 return link;
549 struct io_submit_link *link = &req->ctx->submit_state.link;
551 if (!link->head)
553 if (link->last->opcode == IORING_OP_LINK_TIMEOUT)
555 timeout->head = link->last;
556 link->last->flags |= REQ_F_ARM_LTIMEOUT;