Skip to content

Commit

Permalink
Revert "workqueue: Factor out pwq_is_empty()"
Browse files Browse the repository at this point in the history
This reverts commit bad184d which is
commit afa87ce upstream.

The workqueue patches backported to 6.6.y caused some reported
regressions, so revert them for now.

Reported-by: Thorsten Leemhuis <regressions@leemhuis.info>
Cc: Tejun Heo <tj@kernel.org>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Sasha Levin <sashal@kernel.org>
Cc: Audra Mitchell <audra@redhat.com>
Link: https://lore.kernel.org/all/ce4c2f67-c298-48a0-87a3-f933d646c73b@leemhuis.info/
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
gregkh committed Apr 4, 2024
1 parent 957578e commit 35bf38d
Showing 1 changed file with 4 additions and 9 deletions.
13 changes: 4 additions & 9 deletions kernel/workqueue.c
Expand Up @@ -1450,11 +1450,6 @@ static void put_pwq_unlocked(struct pool_workqueue *pwq)
}
}

static bool pwq_is_empty(struct pool_workqueue *pwq)
{
return !pwq->nr_active && list_empty(&pwq->inactive_works);
}

static void pwq_activate_inactive_work(struct work_struct *work)
{
struct pool_workqueue *pwq = get_work_pwq(work);
Expand Down Expand Up @@ -3324,7 +3319,7 @@ void drain_workqueue(struct workqueue_struct *wq)
bool drained;

raw_spin_lock_irq(&pwq->pool->lock);
drained = pwq_is_empty(pwq);
drained = !pwq->nr_active && list_empty(&pwq->inactive_works);
raw_spin_unlock_irq(&pwq->pool->lock);

if (drained)
Expand Down Expand Up @@ -4784,7 +4779,7 @@ static bool pwq_busy(struct pool_workqueue *pwq)

if ((pwq != pwq->wq->dfl_pwq) && (pwq->refcnt > 1))
return true;
if (!pwq_is_empty(pwq))
if (pwq->nr_active || !list_empty(&pwq->inactive_works))
return true;

return false;
Expand Down Expand Up @@ -5222,7 +5217,7 @@ void show_one_workqueue(struct workqueue_struct *wq)
unsigned long flags;

for_each_pwq(pwq, wq) {
if (!pwq_is_empty(pwq)) {
if (pwq->nr_active || !list_empty(&pwq->inactive_works)) {
idle = false;
break;
}
Expand All @@ -5234,7 +5229,7 @@ void show_one_workqueue(struct workqueue_struct *wq)

for_each_pwq(pwq, wq) {
raw_spin_lock_irqsave(&pwq->pool->lock, flags);
if (!pwq_is_empty(pwq)) {
if (pwq->nr_active || !list_empty(&pwq->inactive_works)) {
/*
* Defer printing to avoid deadlocks in console
* drivers that queue work while holding locks
Expand Down

0 comments on commit 35bf38d

Please sign in to comment.