Re: [CHECKER] potential deadlocks

Nikita Danilov (Nikita@Namesys.COM)
Mon, 3 Mar 2003 12:45:27 +0300


Andrew Morton writes:
> Dawson Engler <engler@csl.stanford.edu> wrote:
> >
> > BTW, are there known deadlocks (harmless or otherwise)? Debugging
> > the checker is a bit hard since false negatives are silent...
>
> Known deadlocks tend to get fixed. But I am surprised that you did not
> encounter more of them.
>
> btw, the filesystem transaction operations can be treated as sleeping locks.
> So for ext3, journal_start()/journal_stop() may, for lock-ranking purposes,
> be treated in the same way as taking and releasing a per-superblock
> semaphore. Other filesystems probably have similar restrictions.
>

So are page-fault and memory allocation events, because thread
blocks on them, and deadlocks involving servicing page fault or memory
laundering have definitely been seen.

We have (incomplete) description of kernel lock ordering, which is
centered around reiser4 locks, but also includes some core kernel stuff.

It is available at

http://www.namesys.com/v4/lock-ordering.dot --- source for Bell-Labs' dot(1)
http://www.namesys.com/v4/lock-ordering.ps --- postscript output, produced from the .dot source

> Other such "hidden" sleeping locks are lock_sock() and wait_on_inode(). The
> latter is rather messy because there is no clear API function which sets
> I_LOCK.

Nikita.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/