From: Bart Van Assche <bvanassche@acm.org>
To: Johannes Berg <johannes@sipsolutions.net>, Tejun Heo <tj@kernel.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Christoph Hellwig <hch@lst.de>, Sagi Grimberg <sagi@grimberg.me>,
"tytso@mit.edu" <tytso@mit.edu>
Subject: Re: [PATCH 3/3] kernel/workqueue: Suppress a false positive lockdep complaint
Date: Thu, 25 Oct 2018 08:55:48 -0700 [thread overview]
Message-ID: <1540482948.66186.21.camel@acm.org> (raw)
In-Reply-To: <f7e631f3957f8e4d00b1b2dbf5b660d62d9e45e3.camel@sipsolutions.net>
On Thu, 2018-10-25 at 17:34 +0200, Johannes Berg wrote:
> On Thu, 2018-10-25 at 15:05 +0000, Bart Van Assche wrote:
>
> > @@ -2889,7 +2893,7 @@ static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr,
> > * workqueues the deadlock happens when the rescuer stalls, blocking
> > * forward progress.
> > */
> > - if (!from_cancel &&
> > + if (!from_cancel && (pwq->wq->flags & __WQ_HAS_BEEN_USED) &&
> > (pwq->wq->saved_max_active == 1 || pwq->wq->rescuer)) {
> > lock_acquire_exclusive(&pwq->wq->lockdep_map, 0, 0, NULL,
> > _THIS_IP_);
>
> This also doesn't seem right to me. You shouldn't really care whether or
> not the workqueue has been used at this point, lockdep also doesn't do
> this for locks.
>
> Any dependency you cause at some point can - at a future time - be taken
> into account when checking dependency cycles. Removing one arbitrarily
> just because you haven't actually executed anything *yet* just removes
> knowledge from lockdep. In the general case, this isn't right. Just
> because you haven't executd anything here doesn't mean that it's
> *impossible* to have executed something, right?
Please have a look at the call trace in the description of this patch and also
at the direct I/O code. The lockdep complaint in the description of this patch
really is a false positive. What I think needs further discussion is on how to
address this false positive - track whether or not a work queue has been used
or follow Tejun's proposal that I became aware of after I posted this patch,
namely introduce a new function for destroying a work queue that skips draining,
e.g. destroy_workqueue_skip_drain() (https://lkml.org/lkml/2018/10/24/2).
Thanks,
Bart.
next prev parent reply other threads:[~2018-10-25 15:55 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-25 15:05 [PATCH 0/3] Suppress false positives triggered by workqueue lockdep annotations Bart Van Assche
2018-10-25 15:05 ` [PATCH 1/3] kernel/workqueue: Remove lockdep annotation from __flush_work() Bart Van Assche
2018-10-25 15:31 ` Johannes Berg
2018-10-25 15:57 ` Johannes Berg
2018-10-25 16:01 ` Bart Van Assche
2018-10-25 15:05 ` [PATCH 2/3] kernel/workqueue: Surround work execution with shared lock annotations Bart Van Assche
2018-10-25 16:53 ` Johannes Berg
2018-10-25 17:22 ` Bart Van Assche
2018-10-25 19:17 ` Johannes Berg
2018-10-25 15:05 ` [PATCH 3/3] kernel/workqueue: Suppress a false positive lockdep complaint Bart Van Assche
2018-10-25 15:34 ` Johannes Berg
2018-10-25 15:55 ` Bart Van Assche [this message]
2018-10-25 19:59 ` Johannes Berg
2018-10-25 20:21 ` Theodore Y. Ts'o
2018-10-25 20:26 ` Johannes Berg
2018-10-25 15:36 ` Tejun Heo
2018-10-25 15:37 ` Tejun Heo
2018-10-25 20:13 ` Johannes Berg
2018-10-25 15:40 ` Theodore Y. Ts'o
2018-10-25 17:02 ` Johannes Berg
2018-10-25 17:11 ` Bart Van Assche
2018-10-25 19:51 ` Johannes Berg
2018-10-25 20:39 ` Bart Van Assche
2018-10-25 20:47 ` Johannes Berg
2018-10-25 15:27 ` [PATCH 0/3] Suppress false positives triggered by workqueue lockdep annotations Johannes Berg
2018-10-25 15:47 ` Bart Van Assche
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=1540482948.66186.21.camel@acm.org \
--to=bvanassche@acm.org \
--cc=hch@lst.de \
--cc=johannes@sipsolutions.net \
--cc=linux-kernel@vger.kernel.org \
--cc=sagi@grimberg.me \
--cc=tj@kernel.org \
--cc=tytso@mit.edu \
/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.