From: Pavel Begunkov Date: Fri, 13 Mar 2020 21:31:03 +0000 (+0300) Subject: io-wq: don't resched if there is no work X-Git-Tag: v5.15~4255^2~11 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d78298e73a3443a3c1766fa89f5370f52a4efd94;p=platform%2Fkernel%2Flinux-starfive.git io-wq: don't resched if there is no work This little tweak restores the behaviour that was before the recent io_worker_handle_work() optimisation patches. It makes the function do cond_resched() and flush_signals() only if there is an actual work to execute. Signed-off-by: Pavel Begunkov Signed-off-by: Jens Axboe --- diff --git a/fs/io-wq.c b/fs/io-wq.c index 0e7c627..8afe556 100644 --- a/fs/io-wq.c +++ b/fs/io-wq.c @@ -458,10 +458,12 @@ static void io_impersonate_work(struct io_worker *worker, static void io_assign_current_work(struct io_worker *worker, struct io_wq_work *work) { - /* flush pending signals before assigning new work */ - if (signal_pending(current)) - flush_signals(current); - cond_resched(); + if (work) { + /* flush pending signals before assigning new work */ + if (signal_pending(current)) + flush_signals(current); + cond_resched(); + } spin_lock_irq(&worker->lock); worker->cur_work = work;