cluster: STABLE32 - 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 13:43:36 UTC 2012


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=d14707dd26e1a8031e0afd4bd4214777a6af5814
Commit:        d14707dd26e1a8031e0afd4bd4214777a6af5814
Parent:        096fe8d673933d2830aa0d6f37de9f863200a823
Author:        Ryan McCabe <rmccabe at redhat.com>
AuthorDate:    Mon Apr 23 14:48:35 2012 -0400
Committer:     Fabio M. Di Nitto <fdinitto at redhat.com>
CommitterDate: Tue Apr 24 17:04:09 2012 +0200

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>
---
 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 4b88df2..769b695 100644
--- a/rgmanager/src/daemons/main.c
+++ b/rgmanager/src/daemons/main.c
@@ -1057,14 +1057,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;
@@ -1082,7 +1083,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;
@@ -1131,8 +1147,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