Lines Matching refs:iowq

2473 static inline bool io_should_wake(struct io_wait_queue *iowq)  in io_should_wake()  argument
2475 struct io_ring_ctx *ctx = iowq->ctx; in io_should_wake()
2476 int dist = READ_ONCE(ctx->rings->cq.tail) - (int) iowq->cq_tail; in io_should_wake()
2483 return dist >= 0 || atomic_read(&ctx->cq_timeouts) != iowq->nr_timeouts; in io_should_wake()
2489 struct io_wait_queue *iowq = container_of(curr, struct io_wait_queue, wq); in io_wake_function() local
2495 if (io_should_wake(iowq) || io_has_work(iowq->ctx)) in io_wake_function()
2525 struct io_wait_queue *iowq) in io_cqring_wait_schedule() argument
2537 if (unlikely(io_should_wake(iowq))) in io_cqring_wait_schedule()
2549 if (iowq->timeout == KTIME_MAX) in io_cqring_wait_schedule()
2551 else if (!schedule_hrtimeout(&iowq->timeout, HRTIMER_MODE_ABS)) in io_cqring_wait_schedule()
2565 struct io_wait_queue iowq; in io_cqring_wait() local
2592 init_waitqueue_func_entry(&iowq.wq, io_wake_function); in io_cqring_wait()
2593 iowq.wq.private = current; in io_cqring_wait()
2594 INIT_LIST_HEAD(&iowq.wq.entry); in io_cqring_wait()
2595 iowq.ctx = ctx; in io_cqring_wait()
2596 iowq.nr_timeouts = atomic_read(&ctx->cq_timeouts); in io_cqring_wait()
2597 iowq.cq_tail = READ_ONCE(ctx->rings->cq.head) + min_events; in io_cqring_wait()
2598 iowq.timeout = KTIME_MAX; in io_cqring_wait()
2605 iowq.timeout = ktime_add_ns(timespec64_to_ktime(ts), ktime_get_ns()); in io_cqring_wait()
2613 int nr_wait = (int) iowq.cq_tail - READ_ONCE(ctx->rings->cq.tail); in io_cqring_wait()
2618 prepare_to_wait_exclusive(&ctx->cq_wait, &iowq.wq, in io_cqring_wait()
2622 ret = io_cqring_wait_schedule(ctx, &iowq); in io_cqring_wait()
2648 if (io_should_wake(&iowq)) { in io_cqring_wait()
2656 finish_wait(&ctx->cq_wait, &iowq.wq); in io_cqring_wait()