Commit 79dca184 authored by Hao Xu's avatar Hao Xu Committed by Jens Axboe
Browse files

io-wq: move nr_running and worker_refs out of wqe->lock protection



We don't need to protect nr_running and worker_refs by wqe->lock, so
narrow the range of raw_spin_lock_irq - raw_spin_unlock_irq

Signed-off-by: default avatarHao Xu <haoxu@linux.alibaba.com>
Link: https://lore.kernel.org/r/20210810125554.99229-1-haoxu@linux.alibaba.com


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent ec3c3d0f
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -256,18 +256,19 @@ static void io_wqe_wake_worker(struct io_wqe *wqe, struct io_wqe_acct *acct)

		raw_spin_lock_irq(&wqe->lock);
		if (acct->nr_workers < acct->max_workers) {
			atomic_inc(&acct->nr_running);
			atomic_inc(&wqe->wq->worker_refs);
			if (!acct->nr_workers)
				first = true;
			acct->nr_workers++;
			do_create = true;
		}
		raw_spin_unlock_irq(&wqe->lock);
		if (do_create)
		if (do_create) {
			atomic_inc(&acct->nr_running);
			atomic_inc(&wqe->wq->worker_refs);
			create_io_worker(wqe->wq, wqe, acct->index, first);
		}
	}
}

static void io_wqe_inc_running(struct io_worker *worker)
{