Thread (9 messages) 9 messages, 3 authors, 2017-01-26

Re: [btrfs/rt] lockdep false positive

From: Peter Zijlstra <peterz@infradead.org>
Date: 2017-01-23 09:08:09
Also in: lkml

On Sun, Jan 22, 2017 at 06:45:14PM +0100, Mike Galbraith wrote:
On Sun, 2017-01-22 at 09:46 +0100, Mike Galbraith wrote:
quoted
Greetings btrfs/lockdep wizards,

RT trees have trouble with the BTRFS lockdep positive avoidance lock
class dance (see disk-io.c).  Seems the trouble is due to RT not having
a means of telling lockdep that its rwlocks are recursive for read by
the lock owner only, combined with the BTRFS lock class dance assuming
that read_lock() is annotated rwlock_acquire_read(), which RT cannot
do, as that would be a big fat lie.

Creating a rt_read_lock_shared() for btrfs_clear_lock_blocking_rw() did
indeed make lockdep happy as a clam for test purposes.  (hm, submitting
that would be excellent way to replenish frozen shark supply:)

Ideas?
Not having looked at anything much, currently lockdep does not in fact
model rwlock properly as is.

Note that rwlock is _not_ in fact reader biased like it used to be, that
is, read_lock() will block if there is a pending writer (just like
rwsem), with the exception when read_lock() happend in_interrupt()
(because tasklist_lock).
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help