Messages in this thread | | | Date | Wed, 26 Sep 2012 11:34:29 -0700 | From | Tejun Heo <> | Subject | Re: [PATCH 05/12] workqueue: don't wake up other workers in rescuer |
| |
(cc'ing Ray Jui)
On Thu, Sep 27, 2012 at 01:20:36AM +0800, Lai Jiangshan wrote: > rescuer is NOT_RUNNING, so there is no sense when it wakes up other workers, > if there are available normal workers, they are already woken up when needed. > > Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com> > --- > kernel/workqueue.c | 8 -------- > 1 files changed, 0 insertions(+), 8 deletions(-) > > diff --git a/kernel/workqueue.c b/kernel/workqueue.c > index c718b94..6c339bf 100644 > --- a/kernel/workqueue.c > +++ b/kernel/workqueue.c > @@ -2438,14 +2438,6 @@ repeat: > > process_scheduled_works(rescuer); > > - /* > - * Leave this gcwq. If keep_working() is %true, notify a > - * regular worker; otherwise, we end up with 0 concurrency > - * and stalling the execution. > - */ > - if (keep_working(pool)) > - wake_up_worker(pool); > -
This was added by 7576958a9d5a4a6 ("workqueue: wake up a worker when a rescuer is leaving a gcwq") to fix a bug reported by Ray Jui.
http://thread.gmane.org/gmane.linux.kernel/1098131
I'm fairly sure it was a valid bug report. I don't think the depletion comes from concurrency management. It's just the lack of chaining which could lead to stall. What am I missing here?
Thanks.
-- tejun
| |