io_uring: optimise non-timeout waiting
[linux-block.git] / io_uring / io_uring.c
index 2ec011f0ba7d11c1c89ecb1860932895f0651322..6229a49c0c33a1051ad5459c7440d969c167cc84 100644 (file)
@@ -2479,7 +2479,9 @@ static inline int io_cqring_wait_schedule(struct io_ring_ctx *ctx,
                return -EINTR;
        if (unlikely(io_should_wake(iowq)))
                return 0;
-       if (!schedule_hrtimeout(timeout, HRTIMER_MODE_ABS))
+       if (*timeout == KTIME_MAX)
+               schedule();
+       else if (!schedule_hrtimeout(timeout, HRTIMER_MODE_ABS))
                return -ETIME;
        return 0;
 }