Bug 16034
Summary: | 2.6.34: dlm: possible circular locking dependency detected | ||
---|---|---|---|
Product: | File System | Reporter: | Maciej Rutecki (maciej.rutecki) |
Component: | ocfs2 | Assignee: | fs_ocfs2 |
Status: | CLOSED CODE_FIX | ||
Severity: | normal | CC: | cat, error27, maciej.rutecki, rjw |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 2.6.34 | Subsystem: | |
Regression: | Yes | Bisected commit-id: | |
Bug Depends on: | |||
Bug Blocks: | 15310 |
Description
Maciej Rutecki
2010-05-23 06:33:26 UTC
This also happens with 2.6.33.4. I don't know the policy in for the stable kernel or for bugzilla, but this was fixed in 2.6.35. The commit is: commit d9ef75221a6247b758e1d7e18edb661996e4b7cf Author: Wengang Wang <wen.gang.wang@oracle.com> Date: Mon May 17 20:20:44 2010 +0800 ocfs2:dlm: avoid dlm->ast_lock lockres->spinlock dependency break Currently we process a dirty lockres with the lockres->spinlock taken. While during the process, we may need to lock on dlm->ast_lock. This breaks the dependency of dlm->ast_lock(lock first) and lockres->spinlock(lock second). This patch fixes the problem. Since we can't release lockres->spinlock, we have to take dlm->ast_lock just before taking the lockres->spinlock and release it after lockres->spinlock is released. And use __dlm_queue_bast()/__dlm_queue_ast(), the nolock version, in dlm_shuffle_lists(). There are no too many locks on a lockres, so there is no performance harm. Signed-off-by: Wengang Wang <wen.gang.wang@oracle.com> Signed-off-by: Joel Becker <joel.becker@oracle.com> The problem has been fixed in mainline, so closing. Please send an inclusion request to stable@kernel.org so that it goes to -stable. |