io-wq: worker idling always returns false
authorJens Axboe <axboe@kernel.dk>
Mon, 15 Feb 2021 20:26:34 +0000 (13:26 -0700)
committerJens Axboe <axboe@kernel.dk>
Mon, 22 Feb 2021 00:25:22 +0000 (17:25 -0700)
Remove the bool return, and the checking for it in the caller.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io-wq.c

index b53f569b5b4ebf6c28881cd35b7c7ef0e487ca8f..41042119bf0f4c69759f3a624cbff82134d9e31a 100644 (file)
@@ -305,15 +305,13 @@ static void __io_worker_busy(struct io_wqe *wqe, struct io_worker *worker,
  * retry the loop in that case (we changed task state), we don't regrab
  * the lock if we return success.
  */
-static bool __io_worker_idle(struct io_wqe *wqe, struct io_worker *worker)
+static void __io_worker_idle(struct io_wqe *wqe, struct io_worker *worker)
        __must_hold(wqe->lock)
 {
        if (!(worker->flags & IO_WORKER_F_FREE)) {
                worker->flags |= IO_WORKER_F_FREE;
                hlist_nulls_add_head_rcu(&worker->nulls_node, &wqe->free_list);
        }
-
-       return false;
 }
 
 static inline unsigned int io_get_work_hash(struct io_wq_work *work)
@@ -454,11 +452,7 @@ loop:
                        io_worker_handle_work(worker);
                        goto loop;
                }
-               /* drops the lock on success, retry */
-               if (__io_worker_idle(wqe, worker)) {
-                       __release(&wqe->lock);
-                       goto loop;
-               }
+               __io_worker_idle(wqe, worker);
                raw_spin_unlock_irq(&wqe->lock);
                io_flush_signals();
                if (schedule_timeout(WORKER_IDLE_TIMEOUT))