summaryrefslogtreecommitdiff
path: root/fs/ocfs2/dlm/dlmthread.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2008-03-10 18:02:59 -0700
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-03-10 18:02:59 -0700
commit5c0dea0959356d77d985ecfb2911e7a9e23b95e3 (patch)
treeb757aa54b69c37a20bd65ae327a892bfb7aa6904 /fs/ocfs2/dlm/dlmthread.c
parentdae311b42fcad5d236dc6539b02c7560fc6fc721 (diff)
parentcdef59a94c2fc962ada379d4240d556db7b56d55 (diff)
Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2
* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2: ocfs2: Fix NULL pointer dereferences in o2net ocfs2/dlm: dlm_thread should not sleep while holding the dlm_spinlock ocfs2/dlm: Print message showing the recovery master ocfs2/dlm: Add missing dlm_lockres_put()s ocfs2/dlm: Add missing dlm_lockres_put()s in migration path ocfs2/dlm: Add missing dlm_lock_put()s ocfs2: Fix an endian bug in online resize. [PATCH] [OCFS2]: constify function pointer tables ocfs2: Fix endian bug in o2dlm protocol negotiation. ocfs2: Use dlm_print_one_lock_resource for lock resource print [PATCH] fs/ocfs2/dlm/dlmdomain.c: fix printk warning
Diffstat (limited to 'fs/ocfs2/dlm/dlmthread.c')
-rw-r--r--fs/ocfs2/dlm/dlmthread.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/ocfs2/dlm/dlmthread.c b/fs/ocfs2/dlm/dlmthread.c
index cebd089f8955..4060bb328bc8 100644
--- a/fs/ocfs2/dlm/dlmthread.c
+++ b/fs/ocfs2/dlm/dlmthread.c
@@ -176,12 +176,14 @@ static int dlm_purge_lockres(struct dlm_ctxt *dlm,
res->lockname.name, master);
if (!master) {
+ /* drop spinlock... retake below */
+ spin_unlock(&dlm->spinlock);
+
spin_lock(&res->spinlock);
/* This ensures that clear refmap is sent after the set */
__dlm_wait_on_lockres_flags(res, DLM_LOCK_RES_SETREF_INPROG);
spin_unlock(&res->spinlock);
- /* drop spinlock to do messaging, retake below */
- spin_unlock(&dlm->spinlock);
+
/* clear our bit from the master's refmap, ignore errors */
ret = dlm_drop_lockres_ref(dlm, res);
if (ret < 0) {