Loading io_uring/io_uring.c +13 −2 Original line number Diff line number Diff line Loading @@ -2489,6 +2489,8 @@ int io_run_task_work_sig(struct io_ring_ctx *ctx) static inline int io_cqring_wait_schedule(struct io_ring_ctx *ctx, struct io_wait_queue *iowq) { int token, ret; if (unlikely(READ_ONCE(ctx->check_cq))) return 1; if (unlikely(!llist_empty(&ctx->work_llist))) Loading @@ -2499,11 +2501,20 @@ static inline int io_cqring_wait_schedule(struct io_ring_ctx *ctx, return -EINTR; if (unlikely(io_should_wake(iowq))) return 0; /* * Use io_schedule_prepare/finish, so cpufreq can take into account * that the task is waiting for IO - turns out to be important for low * QD IO. */ token = io_schedule_prepare(); ret = 0; if (iowq->timeout == KTIME_MAX) schedule(); else if (!schedule_hrtimeout(&iowq->timeout, HRTIMER_MODE_ABS)) return -ETIME; return 0; ret = -ETIME; io_schedule_finish(token); return ret; } /* Loading Loading
io_uring/io_uring.c +13 −2 Original line number Diff line number Diff line Loading @@ -2489,6 +2489,8 @@ int io_run_task_work_sig(struct io_ring_ctx *ctx) static inline int io_cqring_wait_schedule(struct io_ring_ctx *ctx, struct io_wait_queue *iowq) { int token, ret; if (unlikely(READ_ONCE(ctx->check_cq))) return 1; if (unlikely(!llist_empty(&ctx->work_llist))) Loading @@ -2499,11 +2501,20 @@ static inline int io_cqring_wait_schedule(struct io_ring_ctx *ctx, return -EINTR; if (unlikely(io_should_wake(iowq))) return 0; /* * Use io_schedule_prepare/finish, so cpufreq can take into account * that the task is waiting for IO - turns out to be important for low * QD IO. */ token = io_schedule_prepare(); ret = 0; if (iowq->timeout == KTIME_MAX) schedule(); else if (!schedule_hrtimeout(&iowq->timeout, HRTIMER_MODE_ABS)) return -ETIME; return 0; ret = -ETIME; io_schedule_finish(token); return ret; } /* Loading