diff options
author | Kurt Hackel <kurt.hackel@oracle.com> | 2006-04-27 20:59:46 -0400 |
---|---|---|
committer | Mark Fasheh <mark.fasheh@oracle.com> | 2006-06-26 17:42:45 -0400 |
commit | 2580a580e029f9a59a66cd230b1fd7e2d9ee339d (patch) | |
tree | 320baf22e8a0ee1d03d256edadd37a49aef39ae1 /fs/ocfs2/dlm/dlmunlock.c | |
parent | 8d79d088e88198d5456861ee9e6a8226dcd08799 (diff) |
ocfs2: recheck lockres master before sending an unlock request.
Recovery may have happened and it may now be mastered locally.
Signed-off-by: Kurt Hackel <kurt.hackel@oracle.com>
Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
Diffstat (limited to 'fs/ocfs2/dlm/dlmunlock.c')
-rw-r--r-- | fs/ocfs2/dlm/dlmunlock.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/ocfs2/dlm/dlmunlock.c b/fs/ocfs2/dlm/dlmunlock.c index ac89c509daf9..9b40d60e3b49 100644 --- a/fs/ocfs2/dlm/dlmunlock.c +++ b/fs/ocfs2/dlm/dlmunlock.c | |||
@@ -317,6 +317,16 @@ static enum dlm_status dlm_send_remote_unlock_request(struct dlm_ctxt *dlm, | |||
317 | size_t veclen = 1; | 317 | size_t veclen = 1; |
318 | 318 | ||
319 | mlog_entry("%.*s\n", res->lockname.len, res->lockname.name); | 319 | mlog_entry("%.*s\n", res->lockname.len, res->lockname.name); |
320 | |||
321 | if (owner == dlm->node_num) { | ||
322 | /* ended up trying to contact ourself. this means | ||
323 | * that the lockres had been remote but became local | ||
324 | * via a migration. just retry it, now as local */ | ||
325 | mlog(0, "%s:%.*s: this node became the master due to a " | ||
326 | "migration, re-evaluate now\n", dlm->name, | ||
327 | res->lockname.len, res->lockname.name); | ||
328 | return DLM_FORWARD; | ||
329 | } | ||
320 | 330 | ||
321 | memset(&unlock, 0, sizeof(unlock)); | 331 | memset(&unlock, 0, sizeof(unlock)); |
322 | unlock.node_idx = dlm->node_num; | 332 | unlock.node_idx = dlm->node_num; |