diff options
Diffstat (limited to 'io_uring/io-wq.c')
-rw-r--r-- | io_uring/io-wq.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/io_uring/io-wq.c b/io_uring/io-wq.c index 18a049fc53ef..2da0b1ba6a56 100644 --- a/io_uring/io-wq.c +++ b/io_uring/io-wq.c @@ -276,11 +276,14 @@ static bool io_wq_activate_free_worker(struct io_wq *wq, io_worker_release(worker); continue; } - if (wake_up_process(worker->task)) { - io_worker_release(worker); - return true; - } + /* + * If the worker is already running, it's either already + * starting work or finishing work. In either case, if it does + * to go sleep, we'll kick off a new task for this work anyway. + */ + wake_up_process(worker->task); io_worker_release(worker); + return true; } return false; |