ocfs2: Prevent a livelock in dlmglue
authorSunil Mushran <sunil.mushran@oracle.com>
Thu, 21 Jan 2010 18:50:03 +0000 (10:50 -0800)
committerJoel Becker <joel.becker@oracle.com>
Wed, 3 Feb 2010 07:51:13 +0000 (23:51 -0800)
commita19128260107f951d1b4c421cf98b92f8092b069
tree0e98386142589c986fe433e1dd390f4a21db7bc9
parent0b94a909eb2e2f6990d05fd486a0cb4902ef1ae7
ocfs2: Prevent a livelock in dlmglue

There is possibility of a livelock in __ocfs2_cluster_lock(). If a node were
to get an ast for an upconvert request, followed immediately by a bast,
there is a small window where the fs may downconvert the lock before the
process requesting the upconvert is able to take the lock.

This patch adds a new flag to indicate that the upconvert is still in
progress and that the dc thread should not downconvert it right now.

Wengang Wang <wen.gang.wang@oracle.com> and Joel Becker
<joel.becker@oracle.com> contributed heavily to this patch.

Reported-by: David Teigland <teigland@redhat.com>
Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com>
Signed-off-by: Joel Becker <joel.becker@oracle.com>
fs/ocfs2/dlmglue.c
fs/ocfs2/ocfs2.h