From: Tejun Heo <tj@kernel.org>
To: Peter Hurley <peter@hurleysoftware.com>
Cc: laijs@cn.fujitsu.com, linux-kernel@vger.kernel.org,
Stefan Richter <stefanr@s5r6.in-berlin.de>,
linux1394-devel@lists.sourceforge.net,
Chris Boot <bootc@bootc.net>,
linux-scsi@vger.kernel.org, target-devel@vger.kernel.org
Subject: Re: [PATCH 4/9] firewire: don't use PREPARE_DELAYED_WORK
Date: Fri, 21 Feb 2014 08:06:14 -0500 [thread overview]
Message-ID: <20140221130614.GH6897@htj.dyndns.org> (raw)
In-Reply-To: <53074BE4.1020307@hurleysoftware.com>
Hello,
On Fri, Feb 21, 2014 at 07:51:48AM -0500, Peter Hurley wrote:
> I think the vast majority of kernel code which uses the workqueue
> assumes there is a memory ordering guarantee.
Not really. Workqueues haven't even guaranteed non-reentrancy until
recently, forcing everybody to lock explicitly in the work function.
I don't think there'd be many, if any, use cases which depend on
ordering guarantee on duplicate queueing.
> Another way to look at this problem is that process_one_work()
> doesn't become the existing instance _until_ PENDING is cleared.
Sure, having that guarantee definitely is nicer and all we need seems
to be mb_after_unlock in the execution path. Please feel free to
submit a patch.
> >add such guarantee, not sure how much it'd matter but it's not like
> >it's gonna cost a lot either.
> >
> >This doesn't have much to do with the current series tho. In fact,
> >PREPARE_WORK can't ever be made to give such guarantee.
>
> Yes, I agree that PREPARE_DELAYED_WORK was also broken usage with the
> same problem. [And there are other bugs in that firewire device work
> code which I'm working on.]
>
> >The function pointer has to fetched before clearing of PENDING.
>
> Why?
>
> As long as the load takes place within the pool->lock, I don't think
> it matters (especially now PREPARE_WORK is removed).
Hmmm... I was talking about PREPARE_WORK(). Clearing PENDING means
that the work item is released from the worker context and may be
freed or reused at any time (hmm... this may not be true anymore as
non-syncing variants of cancel_work are gone), so clearing PENDING
should be the last access to the work item and thus we can't use that
as the barrier event for fetching its work function.
Thanks.
--
tejun
next prev parent reply other threads:[~2014-02-21 13:06 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1392929071-16555-1-git-send-email-tj@kernel.org>
2014-02-20 20:44 ` [PATCH 4/9] firewire: don't use PREPARE_DELAYED_WORK Tejun Heo
2014-02-21 1:44 ` Peter Hurley
2014-02-21 1:59 ` Tejun Heo
2014-02-21 2:07 ` Peter Hurley
2014-02-21 2:13 ` Tejun Heo
2014-02-21 5:13 ` Peter Hurley
2014-02-21 10:03 ` Tejun Heo
2014-02-21 12:51 ` Peter Hurley
2014-02-21 13:06 ` Tejun Heo [this message]
2014-02-21 16:53 ` Peter Hurley
2014-02-21 16:57 ` Tejun Heo
2014-02-21 23:01 ` Peter Hurley
2014-02-21 23:18 ` Tejun Heo
2014-02-21 23:46 ` Peter Hurley
2014-02-22 14:38 ` Tejun Heo
2014-02-22 14:48 ` Peter Hurley
2014-02-22 18:43 ` James Bottomley
2014-02-22 18:48 ` Peter Hurley
2014-02-22 18:52 ` James Bottomley
2014-02-22 19:03 ` Peter Hurley
2014-02-23 1:23 ` memory-barriers.txt again (was Re: [PATCH 4/9] firewire: don't use PREPARE_DELAYED_WORK) Stefan Richter
2014-02-23 16:37 ` Paul E. McKenney
2014-02-23 20:35 ` Peter Hurley
2014-02-23 23:50 ` Paul E. McKenney
2014-02-24 0:09 ` Peter Hurley
2014-02-24 16:26 ` Paul E. McKenney
2014-02-24 0:32 ` Stefan Richter
2014-02-24 16:27 ` Paul E. McKenney
2014-02-23 20:05 ` [PATCH 4/9] firewire: don't use PREPARE_DELAYED_WORK James Bottomley
2014-02-23 22:32 ` Peter Hurley
2014-02-21 20:45 ` Stefan Richter
2014-03-07 15:26 ` [PATCH UPDATED " Tejun Heo
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=20140221130614.GH6897@htj.dyndns.org \
--to=tj@kernel.org \
--cc=bootc@bootc.net \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linux1394-devel@lists.sourceforge.net \
--cc=peter@hurleysoftware.com \
--cc=stefanr@s5r6.in-berlin.de \
--cc=target-devel@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox