Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
workqueue: Move nr_active handling into helpers
[ Upstream commit 1c270b7 ] __queue_work(), pwq_dec_nr_in_flight() and wq_adjust_max_active() were open-coding nr_active handling, which is fine given that the operations are trivial. However, the planned unbound nr_active update will make them more complicated, so let's move them into helpers. - pwq_tryinc_nr_active() is added. It increments nr_active if under max_active limit and return a boolean indicating whether inc was successful. Note that the function is structured to accommodate future changes. __queue_work() is updated to use the new helper. - pwq_activate_first_inactive() is updated to use pwq_tryinc_nr_active() and thus no longer assumes that nr_active is under max_active and returns a boolean to indicate whether a work item has been activated. - wq_adjust_max_active() no longer tests directly whether a work item can be activated. Instead, it's updated to use the return value of pwq_activate_first_inactive() to tell whether a work item has been activated. - nr_active decrement and activating the first inactive work item is factored into pwq_dec_nr_active(). v3: - WARN_ON_ONCE(!WORK_STRUCT_INACTIVE) added to __pwq_activate_work() as now we're calling the function unconditionally from pwq_activate_first_inactive(). v2: - wq->max_active now uses WRITE/READ_ONCE() as suggested by Lai. Signed-off-by: Tejun Heo <tj@kernel.org> Reviewed-by: Lai Jiangshan <jiangshanlai@gmail.com> Stable-dep-of: 5797b1c ("workqueue: Implement system-wide nr_active enforcement for unbound workqueues") Signed-off-by: Sasha Levin <sashal@kernel.org>
- linux-6.6.100-mpi
- linux-6.6.101-mpi
- linux-6.6.102-mpi
- linux-6.6.23-mpi
- linux-6.6.24-mpi
- linux-6.6.25-mpi
- linux-6.6.26-mpi
- linux-6.6.27-mpi
- linux-6.6.28-mpi
- linux-6.6.29-mpi
- linux-6.6.30-mpi
- linux-6.6.31-mpi
- linux-6.6.32-mpi
- linux-6.6.33-mpi
- linux-6.6.34-mpi
- linux-6.6.35-mpi
- linux-6.6.36-mpi
- linux-6.6.37-mpi
- linux-6.6.38-mpi
- linux-6.6.39-mpi
- linux-6.6.40-mpi
- linux-6.6.41-mpi
- linux-6.6.42-mpi
- linux-6.6.43-mpi
- linux-6.6.44-mpi
- linux-6.6.45-mpi
- linux-6.6.46-mpi
- linux-6.6.47-mpi
- linux-6.6.48-mpi
- linux-6.6.49-mpi
- linux-6.6.50-mpi
- linux-6.6.51-mpi
- linux-6.6.52-mpi
- linux-6.6.53-mpi
- linux-6.6.54-mpi
- linux-6.6.55-mpi
- linux-6.6.56-mpi
- linux-6.6.57-mpi
- linux-6.6.58-mpi
- linux-6.6.59-mpi
- linux-6.6.60-mpi
- linux-6.6.61-mpi
- linux-6.6.62-mpi
- linux-6.6.63-mpi
- linux-6.6.64-mpi
- linux-6.6.65-mpi
- linux-6.6.66-mpi
- linux-6.6.67-mpi
- linux-6.6.68-mpi
- linux-6.6.69-mpi
- linux-6.6.70-mpi
- linux-6.6.71-mpi
- linux-6.6.72-mpi
- linux-6.6.73-mpi
- linux-6.6.74-mpi
- linux-6.6.75-mpi
- linux-6.6.76-mpi
- linux-6.6.77-mpi
- linux-6.6.78-mpi
- linux-6.6.79-mpi
- linux-6.6.80-mpi
- linux-6.6.81-mpi
- linux-6.6.82-mpi
- linux-6.6.83-mpi
- linux-6.6.84-mpi
- linux-6.6.85-mpi
- linux-6.6.86-mpi
- linux-6.6.87-mpi
- linux-6.6.88-mpi
- linux-6.6.89-mpi
- linux-6.6.90-mpi
- linux-6.6.91-mpi
- linux-6.6.92-mpi
- linux-6.6.93-mpi
- linux-6.6.94-mpi
- linux-6.6.95-mpi
- linux-6.6.96-mpi
- linux-6.6.97-mpi
- linux-6.6.98-mpi
- linux-6.6.99-mpi