From: Pavel Begunkov Date: Sun, 28 Jun 2020 09:52:37 +0000 (+0300) Subject: io_uring: do task_work_run() during iopoll X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=3adfecaa647ff8afa4b6f5907193cf751a0f8351;p=linux.git io_uring: do task_work_run() during iopoll There are a lot of new users of task_work, and some of task_work_add() may happen while we do io polling, thus make iopoll from time to time to do task_work_run(), so it doesn't poll for sitting there reqs. Signed-off-by: Pavel Begunkov Signed-off-by: Jens Axboe --- diff --git a/fs/io_uring.c b/fs/io_uring.c index f283d111666b7..c514a52097031 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -2052,6 +2052,8 @@ static int io_iopoll_check(struct io_ring_ctx *ctx, unsigned *nr_events, */ if (!(++iters & 7)) { mutex_unlock(&ctx->uring_lock); + if (current->task_works) + task_work_run(); mutex_lock(&ctx->uring_lock); }