From: Tejun Heo <tj@kernel.org>
To: NeilBrown <neilb@suse.de>
Cc: Jan Kara <jack@suse.cz>, Lai Jiangshan <laijs@cn.fujitsu.com>,
Dongsu Park <dongsu.park@profitbricks.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH - v3?] workqueue: allow rescuer thread to do more work.
Date: Wed, 3 Dec 2014 12:20:10 -0500 [thread overview]
Message-ID: <20141203172010.GC5013@htj.dyndns.org> (raw)
In-Reply-To: <20141203114011.5d02dc43@notabene.brown>
Hello,
On Wed, Dec 03, 2014 at 11:40:11AM +1100, NeilBrown wrote:
> To execute the work item, we need to drop the locks.
> To perform the "list_move_tail" and the "get_pwq" we need to hold both locks.
>
> It seems easier to do the test while holding the required locks.
Hmmm... is it difficult to regrab the locks tho? If the problem is
wq_mayday_lock nesting outside pool locks, I don't think switching the
order would be too difficult. The only place the two are nested is
pool_mayday_timeout() anyway, right?
> > Isn't that -
> > whether the wq still needs rescuing after rescuer went through it once
> > - what we wanna know anyway? e.g. something like the following.
> >
> > for_each_pwq_on_mayday_list {
> > try to fetch work items from pwq->pool;
> > if (none was fetched)
> > goto remove_pwq;
> >
> > execute the fetched work items;
> >
> > if (need_to_create_worker()) {
> > move the pwq to the tail;
> > continue;
> > }
> >
> > remove_pwq:
> > remove the pwq;
> > }
>
> That looks nice. I have a little difficulty matching the code to that
> outline.
> In particular I need to hold the pool->lock to call put_pwq() and after
> calling put_pwq() it isn't clear that I have a safe reference to pool so that
> it is safe to de-reference it... unless I always
> attach_to_pool/detach_from_pool.
> But to do that I have to drop the locks at awkward times.
Would inverting pool locks and wq_mayday_lock make it less awkward?
> Please correct me if I'm wrong, but it looks like I have to call
> worker_attach_to_pool() or I cannot safely call put_pwq().
> I then have to call worker_detach_from_pool() as the last step.
If I'm not mistaken, the two aren't related. detach is necessary iff
attach has been called. put_pwq() can be called independently.
Thanks.
--
tejun
next prev parent reply other threads:[~2014-12-03 17:20 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-29 6:26 [PATCH/RFC] workqueue: allow rescuer thread to do more work NeilBrown
2014-10-29 14:32 ` Tejun Heo
2014-10-29 23:19 ` NeilBrown
2014-11-04 14:22 ` Tejun Heo
2014-11-06 16:58 ` Dongsu Park
2014-11-07 3:03 ` Lai Jiangshan
2014-11-10 5:28 ` NeilBrown
2014-11-10 8:52 ` Jan Kara
2014-11-10 22:04 ` NeilBrown
2014-11-14 17:21 ` Tejun Heo
2014-11-18 4:27 ` [PATCH - v3?] " NeilBrown
2014-11-18 6:01 ` Lai Jiangshan
2014-11-18 6:11 ` NeilBrown
2014-12-02 20:43 ` Tejun Heo
2014-12-03 0:40 ` NeilBrown
2014-12-03 17:20 ` Tejun Heo [this message]
2014-12-03 18:02 ` Tejun Heo
2014-12-03 22:31 ` Dongsu Park
2014-12-04 1:19 ` NeilBrown
2014-12-04 1:01 ` Lai Jiangshan
2014-12-04 14:57 ` Tejun Heo
2014-12-04 15:11 ` [PATCH workqueue/for-3.18-fixes 1/2] workqueue: invert the order between pool->lock and wq_mayday_lock Tejun Heo
2014-12-04 15:12 ` [PATCH workqueue/for-3.18-fixes 2/2] workqueue: allow rescuer thread to do more work Tejun Heo
2014-12-08 17:40 ` Tejun Heo
2014-12-08 22:47 ` NeilBrown
2014-12-05 2:09 ` [PATCH workqueue/for-3.18-fixes 1/2] workqueue: invert the order between pool->lock and wq_mayday_lock Lai Jiangshan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20141203172010.GC5013@htj.dyndns.org \
--to=tj@kernel.org \
--cc=dongsu.park@profitbricks.com \
--cc=jack@suse.cz \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=neilb@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.