linux/fs/ocfs2/dlm
Wengang Wang d9ef75221a 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>
2010-05-18 16:41:34 -07:00
..
dlmapi.h ocfs2/trivial: Remove trailing whitespaces 2010-01-25 19:20:51 -08:00
dlmast.c ocfs2:dlm: avoid dlm->ast_lock lockres->spinlock dependency break 2010-05-18 16:41:34 -07:00
dlmcommon.h ocfs2:dlm: avoid dlm->ast_lock lockres->spinlock dependency break 2010-05-18 16:41:34 -07:00
dlmconvert.c ocfs2: print node # when tcp fails 2010-05-05 18:18:08 -07:00
dlmconvert.h
dlmdebug.c ocfs2/dlm: Fix printing of lockname 2010-02-08 13:01:31 -08:00
dlmdebug.h
dlmdomain.c fs/ocfs2/dlm: Use kstrdup 2010-05-18 12:31:11 -07:00
dlmdomain.h
dlmlock.c fs/ocfs2/dlm: Drop memory allocation cast 2010-05-18 12:31:10 -07:00
dlmmaster.c fs/ocfs2/dlm: Drop memory allocation cast 2010-05-18 12:31:10 -07:00
dlmrecovery.c ocfs2: print node # when tcp fails 2010-05-05 18:18:08 -07:00
dlmthread.c ocfs2:dlm: avoid dlm->ast_lock lockres->spinlock dependency break 2010-05-18 16:41:34 -07:00
dlmunlock.c ocfs2: print node # when tcp fails 2010-05-05 18:18:08 -07:00
dlmver.c
dlmver.h
Makefile ocfs2_dlmfs: Move to its own directory 2010-02-26 15:41:14 -08:00