io-wq: use __set_notify_signal() to wake workers
authorJens Axboe <axboe@kernel.dk>
Tue, 26 Apr 2022 01:49:01 +0000 (19:49 -0600)
committerJens Axboe <axboe@kernel.dk>
Sat, 30 Apr 2022 14:39:54 +0000 (08:39 -0600)
The only difference between set_notify_signal() and __set_notify_signal()
is that the former checks if it needs to deliver an IPI to force a
reschedule. As the io-wq workers never leave the kernel, and IPI is never
needed, they simply need a wakeup.

Reviewed-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/20220426014904.60384-4-axboe@kernel.dk
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io-wq.c

index 32aeb2c581c580fa26cf5264b332beb487b0d47f..824623bcf1a53f78e67370a947e063c4245c8c13 100644 (file)
@@ -871,7 +871,7 @@ static bool io_wq_for_each_worker(struct io_wqe *wqe,
 
 static bool io_wq_worker_wake(struct io_worker *worker, void *data)
 {
-       set_notify_signal(worker->task);
+       __set_notify_signal(worker->task);
        wake_up_process(worker->task);
        return false;
 }
@@ -991,7 +991,7 @@ static bool __io_wq_worker_cancel(struct io_worker *worker,
 {
        if (work && match->fn(work, match->data)) {
                work->flags |= IO_WQ_WORK_CANCEL;
-               set_notify_signal(worker->task);
+               __set_notify_signal(worker->task);
                return true;
        }