David Chinner wrote:
FWIW, we call mrfree() on both the ilock and the iolock, but these are
#defined to null statements. If there is a destructor for the underlying
lock type, we probably should call that in mrfree() so the debugging code
can catch these probelms that only trigger in debug code.
From a quick look I don't see those destructors, might be good to write some
though.
It'd also be good to turn our spinlock_destroy(lock) into a
WARN_ON(spin_is_locked(lock)) or something...
it'd be extra nice if lockdep could grok that the lock it's looking at is full
of free poison, print a warning, take it off the list and move on... this was a
bear to figure out which one was causing the problem.
I have a few changes to get more desructors called for some of the newer locks
that are missing them (think agirotor_lock...) that I'll send when I get a moment.
-Eric
Cheers,
Dave.
|