aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/dlm/dlmlock.c
diff options
context:
space:
mode:
authorKurt Hackel <kurt.hackel@oracle.com>2006-01-18 20:05:38 -0500
committerMark Fasheh <mark.fasheh@oracle.com>2006-02-16 15:01:38 -0500
commit44465a7daf7c4e34199b2b0ebb3c5101619dcb9d (patch)
treeec10b2c1a93a41b16abeb1535c25944c628b447c /fs/ocfs2/dlm/dlmlock.c
parente2b5e4506f5c5187b91d7a79fbad28fe3ebd2fc5 (diff)
[PATCH] ocfs2: add dlm_wait_for_node_death
* add dlm_wait_for_node_death function to be used after receiving a network error. this will wait for the given timeout to allow the heartbeat callbacks to update the domain map. without this, some paths may spin and consume enough cpu that the heartbeat gets starved and never updates. Signed-off-by: Kurt Hackel <kurt.hackel@oracle.com> Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
Diffstat (limited to 'fs/ocfs2/dlm/dlmlock.c')
-rw-r--r--fs/ocfs2/dlm/dlmlock.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/fs/ocfs2/dlm/dlmlock.c b/fs/ocfs2/dlm/dlmlock.c
index d1a0038557a3..e709412e6e32 100644
--- a/fs/ocfs2/dlm/dlmlock.c
+++ b/fs/ocfs2/dlm/dlmlock.c
@@ -646,7 +646,19 @@ retry_lock:
646 mlog(0, "retrying lock with migration/" 646 mlog(0, "retrying lock with migration/"
647 "recovery/in progress\n"); 647 "recovery/in progress\n");
648 msleep(100); 648 msleep(100);
649 dlm_wait_for_recovery(dlm); 649 /* no waiting for dlm_reco_thread */
650 if (recovery) {
651 if (status == DLM_RECOVERING) {
652 mlog(0, "%s: got RECOVERING "
653 "for $REOCVERY lock, master "
654 "was %u\n", dlm->name,
655 res->owner);
656 dlm_wait_for_node_death(dlm, res->owner,
657 DLM_NODE_DEATH_WAIT_MAX);
658 }
659 } else {
660 dlm_wait_for_recovery(dlm);
661 }
650 goto retry_lock; 662 goto retry_lock;
651 } 663 }
652 664