summaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/dlm/dlmunlock.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-06-26 16:06:08 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-26 16:06:08 -0700
commiteb99adde31b7d85c67a5e1c2fa5e098e1056dd79 (patch)
tree05d61251361c04f3afa64c5b1fe162558724d345 /fs/ocfs2/dlm/dlmunlock.c
parentf6e6e883730aff2718610d3eba7608fcf73328ed (diff)
parent3fb5a9891dbb553dda96783dbc0dc4e77cbb2529 (diff)
downloadop-kernel-dev-eb99adde31b7d85c67a5e1c2fa5e098e1056dd79.zip
op-kernel-dev-eb99adde31b7d85c67a5e1c2fa5e098e1056dd79.tar.gz
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: (56 commits) [PATCH] fs/ocfs2/dlm/: cleanups ocfs2: fix compiler warnings in dlm_convert_lock_handler() ocfs2: dlm_print_one_mle() needs to be defined ocfs2: remove whitespace in dlmunlock.c ocfs2: move dlm work to a private work queue ocfs2: fix incorrect error returns ocfs2: tune down some noisy messages during dlm recovery ocfs2: display message before waiting for recovery to complete ocfs2: mlog in dlm_convert_lock_handler() should be ML_ERROR ocfs2: retry operations when a lock is marked in recovery ocfs2: use cond_resched() in dlm_thread() ocfs2: use GFP_NOFS in some dlm operations ocfs2: wait for recovery when starting lock mastery ocfs2: continue recovery when a dead node is encountered ocfs2: remove unneccesary spin_unlock() in dlm_remaster_locks() ocfs2: dlm_remaster_locks() should never exit without completing ocfs2: special case recovery lock in dlmlock_remote() ocfs2: pending mastery asserts and migrations should block each other ocfs2: temporarily disable automatic lock migration ocfs2: do not unconditionally purge the lockres in dlmlock_remote() ...
Diffstat (limited to 'fs/ocfs2/dlm/dlmunlock.c')
-rw-r--r--fs/ocfs2/dlm/dlmunlock.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/ocfs2/dlm/dlmunlock.c b/fs/ocfs2/dlm/dlmunlock.c
index ac89c50..b0c3134 100644
--- a/fs/ocfs2/dlm/dlmunlock.c
+++ b/fs/ocfs2/dlm/dlmunlock.c
@@ -318,6 +318,16 @@ static enum dlm_status dlm_send_remote_unlock_request(struct dlm_ctxt *dlm,
mlog_entry("%.*s\n", res->lockname.len, res->lockname.name);
+ if (owner == dlm->node_num) {
+ /* ended up trying to contact ourself. this means
+ * that the lockres had been remote but became local
+ * via a migration. just retry it, now as local */
+ mlog(0, "%s:%.*s: this node became the master due to a "
+ "migration, re-evaluate now\n", dlm->name,
+ res->lockname.len, res->lockname.name);
+ return DLM_FORWARD;
+ }
+
memset(&unlock, 0, sizeof(unlock));
unlock.node_idx = dlm->node_num;
unlock.flags = cpu_to_be32(flags);
OpenPOWER on IntegriCloud