From: Wengang Wang Date: Mon, 17 May 2010 12:20:44 +0000 (+0800) Subject: ocfs2:dlm: avoid dlm->ast_lock lockres->spinlock dependency break X-Git-Tag: v2.6.35-rc1~469^2~2 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d9ef75221a6247b758e1d7e18edb661996e4b7cf;p=pandora-kernel.git 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 Signed-off-by: Joel Becker --- Reading git-diff-tree failed