cluster: STABLE3 - dlm_controld: check all messages against enable options

David Teigland teigland at fedoraproject.org
Mon Feb 22 17:34:04 UTC 2010


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=5c55d7d3d16caf313091daa1995a988f4c807a05
Commit:        5c55d7d3d16caf313091daa1995a988f4c807a05
Parent:        2f0613c0bab7022236dcbfc3ef4bb124c5f874a1
Author:        David Teigland <teigland at redhat.com>
AuthorDate:    Mon Feb 22 11:31:30 2010 -0600
Committer:     David Teigland <teigland at redhat.com>
CommitterDate: Mon Feb 22 11:31:30 2010 -0600

dlm_controld: check all messages against enable options

Check every plock and deadlk related message against the
enable_plock and enable_deadlk options.  Log error and drop
any message for a feature that's not enabled.

Signed-off-by: David Teigland <teigland at redhat.com>
---
 group/dlm_controld/cpg.c |   57 ++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 48 insertions(+), 9 deletions(-)

diff --git a/group/dlm_controld/cpg.c b/group/dlm_controld/cpg.c
index d5245ce..e01ecc2 100644
--- a/group/dlm_controld/cpg.c
+++ b/group/dlm_controld/cpg.c
@@ -1574,40 +1574,79 @@ static void deliver_cb(cpg_handle_t handle,
 		break;
 
 	case DLM_MSG_PLOCK:
-		receive_plock(ls, hd, len);
+		if (cfgd_enable_plock)
+			receive_plock(ls, hd, len);
+		else
+			log_error("msg %d nodeid %d enable_plock %d",
+				  hd->type, nodeid, cfgd_enable_plock);
 		break;
 
 	case DLM_MSG_PLOCK_OWN:
-		receive_own(ls, hd, len);
+		if (cfgd_enable_plock && cfgd_plock_ownership)
+			receive_own(ls, hd, len);
+		else
+			log_error("msg %d nodeid %d enable_plock %d owner %d",
+				  hd->type, nodeid, cfgd_enable_plock,
+				  cfgd_plock_ownership);
 		break;
 
 	case DLM_MSG_PLOCK_DROP:
-		receive_drop(ls, hd, len);
+		if (cfgd_enable_plock && cfgd_plock_ownership)
+			receive_drop(ls, hd, len);
+		else
+			log_error("msg %d nodeid %d enable_plock %d owner %d",
+				  hd->type, nodeid, cfgd_enable_plock,
+				  cfgd_plock_ownership);
 		break;
 
 	case DLM_MSG_PLOCK_SYNC_LOCK:
 	case DLM_MSG_PLOCK_SYNC_WAITER:
-		receive_sync(ls, hd, len);
+		if (cfgd_enable_plock && cfgd_plock_ownership)
+			receive_sync(ls, hd, len);
+		else
+			log_error("msg %d nodeid %d enable_plock %d owner %d",
+				  hd->type, nodeid, cfgd_enable_plock,
+				  cfgd_plock_ownership);
 		break;
 
 	case DLM_MSG_PLOCKS_STORED:
-		receive_plocks_stored(ls, hd, len);
+		if (cfgd_enable_plock)
+			receive_plocks_stored(ls, hd, len);
+		else
+			log_error("msg %d nodeid %d enable_plock %d",
+				  hd->type, nodeid, cfgd_enable_plock);
 		break;
 
 	case DLM_MSG_DEADLK_CYCLE_START:
-		receive_cycle_start(ls, hd, len);
+		if (cfgd_enable_deadlk)
+			receive_cycle_start(ls, hd, len);
+		else
+			log_error("msg %d nodeid %d enable_deadlk %d",
+				  hd->type, nodeid, cfgd_enable_deadlk);
 		break;
 
 	case DLM_MSG_DEADLK_CYCLE_END:
-		receive_cycle_end(ls, hd, len);
+		if (cfgd_enable_deadlk)
+			receive_cycle_end(ls, hd, len);
+		else
+			log_error("msg %d nodeid %d enable_deadlk %d",
+				  hd->type, nodeid, cfgd_enable_deadlk);
 		break;
 
 	case DLM_MSG_DEADLK_CHECKPOINT_READY:
-		receive_checkpoint_ready(ls, hd, len);
+		if (cfgd_enable_deadlk)
+			receive_checkpoint_ready(ls, hd, len);
+		else
+			log_error("msg %d nodeid %d enable_deadlk %d",
+				  hd->type, nodeid, cfgd_enable_deadlk);
 		break;
 
 	case DLM_MSG_DEADLK_CANCEL_LOCK:
-		receive_cancel_lock(ls, hd, len);
+		if (cfgd_enable_deadlk)
+			receive_cancel_lock(ls, hd, len);
+		else
+			log_error("msg %d nodeid %d enable_deadlk %d",
+				  hd->type, nodeid, cfgd_enable_deadlk);
 		break;
 
 	default:


More information about the cluster-commits mailing list