cluster: RHEL6 - Allow -C to take a 1 or 0 argument to respectively force enable and force disable of CPG locks.

Ryan McCabe rmccabe at fedoraproject.org
Tue May 1 15:01:36 UTC 2012


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=d5dc6b1364b754a695a1eaacaac328b73cc3e151
Commit:        d5dc6b1364b754a695a1eaacaac328b73cc3e151
Parent:        f4bc657f47270e15f2156cc28a32effc3f1c9af3
Author:        Ryan McCabe <rmccabe at redhat.com>
AuthorDate:    Mon Apr 23 14:48:35 2012 -0400
Committer:     Ryan McCabe <rmccabe at redhat.com>
CommitterDate: Tue May 1 10:57:06 2012 -0400

Allow -C to take a 1 or 0 argument to respectively force enable and force disable of CPG locks.

Signed-off-by: Ryan McCabe <rmccabe at redhat.com>
Reviewed-by: Lon Hohberger <lhh at redhat.com>
Reviewed-by: Fabio M. Di Nitto <fdinitto at redhat.com>
---
 rgmanager/src/daemons/main.c |   27 +++++++++++++++++++++++----
 1 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/rgmanager/src/daemons/main.c b/rgmanager/src/daemons/main.c
index 87ea6e7..3dc0e8a 100644
--- a/rgmanager/src/daemons/main.c
+++ b/rgmanager/src/daemons/main.c
@@ -1053,14 +1053,15 @@ int
 main(int argc, char **argv)
 {
 	int rv, do_init = 1;
-	char foreground = 0, wd = 1, cpg_locks = 0;
+	int cpg_locks = 0;
+	char foreground = 0, wd = 1, cpg_lock_opt = 0;
 	cman_node_t me;
 	msgctx_t *cluster_ctx;
 	msgctx_t *local_ctx;
 	pthread_t th;
 	cman_handle_t clu = NULL;
 
-	while ((rv = getopt(argc, argv, "wfdNqC")) != EOF) {
+	while ((rv = getopt(argc, argv, "wfdNqC::")) != EOF) {
 		switch (rv) {
 		case 'w':
 			wd = 0;
@@ -1078,7 +1079,22 @@ main(int argc, char **argv)
 			rgm_dbus_notify = 0;
 			break;
 		case 'C':
-			cpg_locks = 1;
+			if (optarg) {
+				if (!strcmp(optarg, "0")) {
+					/* force disable */
+					cpg_lock_opt = -1;
+				} else if (!strcmp(optarg, "1")) {
+					/* force enable */
+					cpg_lock_opt = 1;
+				} else {
+					fprintf(stderr,
+						"Unknown argument for -C: argument must be 1 or 0\n");
+					return -1;
+				}
+			} else {
+				/* auto handling: enable when RRP mode is enabled */
+				cpg_lock_opt = 0;
+			}
 			break;
 		default:
 			return 1;
@@ -1127,8 +1143,11 @@ main(int argc, char **argv)
 	}
 
 	xmlInitParser();
-	if (cpg_locks || cpglockd_needed() == 1)
+	if (cpg_lock_opt == 1 || (cpg_lock_opt != -1 && cpglockd_needed() == 1)) {
 		cpglockd_start();
+		cpg_locks = 1;
+	} else
+		cpg_locks = 0;
 
 	if (!cpg_locks) {
 		if (clu_lock_init(rgmanager_lsname) != 0) {


More information about the cluster-commits mailing list