From: Theodore Ts'o <tytso@mit.edu>
To: Matthew Wilcox <willy@infradead.org>
Cc: Byungchul Park <byungchul.park@lge.com>,
Byungchul Park <max.byungchul.park@gmail.com>,
Thomas Gleixner <tglx@linutronix.de>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>,
david@fromorbit.com,
Linus Torvalds <torvalds@linux-foundation.org>,
Amir Goldstein <amir73il@gmail.com>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org,
oleg@redhat.com, kernel-team@lge.com, daniel@ffwll.ch
Subject: Re: About the try to remove cross-release feature entirely by Ingo
Date: Sat, 30 Dec 2017 10:40:41 -0500 [thread overview]
Message-ID: <20171230154041.GB3366@thunk.org> (raw)
In-Reply-To: <20171230061624.GA27959@bombadil.infradead.org>
On Fri, Dec 29, 2017 at 10:16:24PM -0800, Matthew Wilcox wrote:
>
> I think this is a terminology problem. To me (and, I suspect Ted), a
> waiter is a subject of a verb while a lock is an object. So Ted is asking
> whether we have to classify the users, while I think you're saying we
> have extra objects to classify.
Exactly, the classification is applied when the {lock, mutex,
completion} object is initialized. Not currently at the individual
call points to mutex_lock(), wait_for_completion(), down_write(), etc.
> > The problems come from wrong classification. Waiters either classfied
> > well or invalidated properly won't bitrot.
>
> I disagree here. As Ted says, it's the interactions between the
> subsystems that leads to problems. Everything's goig to work great
> until somebody does something in a way that's never been tried before.
The question what is classified *well* mean? At the extreme, we could
put the locks for every single TCP connection into their own lockdep
class. But that would blow the limits in terms of the number of locks
out of the water super-quickly --- and it would destroy the ability
for lockdep to learn what the proper locking order should be. Yet
given Lockdep's current implementation, the only way to guarantee that
there won't be any interactions between subsystems that cause false
positives would be to categorizes locks for each TCP connection into
their own class.
So this is why I get a little annoyed when you say, "it's just a
matter of classification". NO IT IS NOT. We can not possibly
classify things "correctly" to completely limit false positives
without completely destroying lockdep's scalability as it is currently
designed. Byungchul, you don't acknowledge this, and it makes the
"just classify everything" argument completely suspect as a result.
As far as the "just invalidate the waiter", the problem is that it
requires source level changes to invalidate the waiter, and for
different use cases, we will need to validate different waiters. For
example, in the example I gave, we would have to invalidate *all* TCP
waiters/locks in order to prevent false positives. But that makes the
lockdep useless for all TCP locks. What's the solution? I claim that
until lockdep is fundamentally fixed, there is no way to eliminate
*all* false positives without invalidating *all*
cross-release/cross-locks --- in which case you might as well leave
the cross-release patches as an out of tree patch.
So to claim that we can somehow fix the problem by making source-level
changes outside of lockdep, by "properly classifying" or "properly
invalidating" all locks, just doesn't make sense.
The only way it can work is to either dump it on the reposibility of
the people debugging lockdep reports to make source level changes to
other subsystems which they aren't the maintainers of to suppress
false positives that arise due to how the subsystems are being used
together in their particular configuration ---- or you can try to
claim that there is an "acceptable level" of false positives with
which we can live with forever, and which can not be fixed by "proper
classifying" the locks.
Or you can try to make lockdep scalable enough that if we could put
every single lock for every single object into its own lock class
(e.g., each lock for every single TCP connection gets its own lock
class) which is after all the only way we can "properly classify
everything") and still let lockdep be useful.
If you think that is doable, why don't you work on that, and once that
is done, maybe cross-locks lockdep will be considered more acceptable
for mainstream?
- Ted
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2017-12-30 15:45 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-13 6:24 About the try to remove cross-release feature entirely by Ingo Byungchul Park
2017-12-13 7:13 ` Byungchul Park
2017-12-13 15:23 ` Bart Van Assche
2017-12-14 3:07 ` Theodore Ts'o
2017-12-14 5:58 ` Byungchul Park
2017-12-14 11:18 ` Peter Zijlstra
2017-12-14 13:30 ` Byungchul Park
2017-12-13 10:46 ` [PATCH] locking/lockdep: Remove the cross-release locking checks Ingo Molnar
2017-12-14 5:01 ` Byungchul Park
2017-12-15 4:05 ` Byungchul Park
2017-12-15 6:24 ` Theodore Ts'o
2017-12-15 7:38 ` Byungchul Park
2017-12-15 8:39 ` Byungchul Park
2017-12-15 21:15 ` Theodore Ts'o
2017-12-16 2:41 ` Byungchul Park
2017-12-29 1:47 ` About the try to remove cross-release feature entirely by Ingo Byungchul Park
2017-12-29 2:02 ` Byungchul Park
2017-12-29 3:51 ` Theodore Ts'o
2017-12-29 7:28 ` Byungchul Park
2017-12-30 6:16 ` Matthew Wilcox
2017-12-30 15:40 ` Theodore Ts'o [this message]
2017-12-30 20:44 ` Matthew Wilcox
2017-12-30 22:40 ` Theodore Ts'o
2017-12-30 23:00 ` Theodore Ts'o
2018-01-01 10:18 ` Matthew Wilcox
2018-01-01 16:00 ` Theodore Ts'o
2018-01-03 2:38 ` Byungchul Park
2018-01-03 2:28 ` Byungchul Park
2018-01-03 2:58 ` Dave Chinner
2018-01-03 5:48 ` Byungchul Park
2018-01-05 16:49 ` J. Bruce Fields
2018-01-05 17:05 ` J. Bruce Fields
2018-01-03 2:10 ` Byungchul Park
2018-01-03 7:05 ` Theodore Ts'o
2018-01-03 8:10 ` Byungchul Park
2018-01-03 8:23 ` Byungchul Park
2018-01-03 1:57 ` Byungchul Park
2018-01-02 7:57 ` Byungchul Park
2017-12-29 8:09 ` Amir Goldstein
2017-12-29 9:46 ` Byungchul Park
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=20171230154041.GB3366@thunk.org \
--to=tytso@mit.edu \
--cc=amir73il@gmail.com \
--cc=byungchul.park@lge.com \
--cc=daniel@ffwll.ch \
--cc=david@fromorbit.com \
--cc=kernel-team@lge.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=max.byungchul.park@gmail.com \
--cc=mingo@kernel.org \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=willy@infradead.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;
as well as URLs for NNTP newsgroup(s).