cluster: master - dlm_controld/gfs_controld: plock config paths

David Teigland teigland@fedoraproject.org
Wed Dec 10 16:43:00 GMT 2008


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=9e7ba291babc001442443b8f73deb6ece8b394a6
Commit:        9e7ba291babc001442443b8f73deb6ece8b394a6
Parent:        74a81c4818b1c7bf94d0b0f079e9f64bff47b59c
Author:        David Teigland <teigland@redhat.com>
AuthorDate:    Wed Dec 10 10:36:12 2008 -0600
Committer:     David Teigland <teigland@redhat.com>
CommitterDate: Wed Dec 10 10:36:12 2008 -0600

dlm_controld/gfs_controld: plock config paths

In cluster2 where plocks are done by gfs_controld, plock config options
are under <gfs_controld/>.  In cluster3 plocks are done by dlm_controld
(and gfs_controld for back-compat), and plock config options are under
<dlm/> (or <gfs_controld/>).  Make both gfs_controld and dlm_controld
look for plock config options under both <gfs_controld/> and <dlm/>.

Signed-off-by: David Teigland <teigland@redhat.com>
---
 group/dlm_controld/config.c     |   55 ++++++++++++++++++++++++++++----------
 group/dlm_controld/dlm_daemon.h |    2 +-
 group/gfs_controld/config.c     |   54 +++++++++++++++++++++++++++-----------
 group/gfs_controld/gfs_daemon.h |    2 +-
 4 files changed, 80 insertions(+), 33 deletions(-)

diff --git a/group/dlm_controld/config.c b/group/dlm_controld/config.c
index af71f5f..3650b76 100644
--- a/group/dlm_controld/config.c
+++ b/group/dlm_controld/config.c
@@ -162,7 +162,7 @@ void read_ccs_yesno(char *path, int *yes, int *no)
 	free(str);
 }
 
-void read_ccs_int(char *path, int *config_val)
+int read_ccs_int(char *path, int *config_val)
 {
 	char *str;
 	int val;
@@ -170,18 +170,19 @@ void read_ccs_int(char *path, int *config_val)
 
 	error = ccs_get(ccs_handle, path, &str);
 	if (error || !str)
-		return;
+		return -1;
 
 	val = atoi(str);
 
 	if (val < 0) {
 		log_error("ignore invalid value %d for %s", val, path);
-		return;
+		return -1;
 	}
 
 	*config_val = val;
 	log_debug("%s is %u", path, val);
 	free(str);
+	return 0;
 }
 
 static void read_ccs_protocol(char *path, int *config_val)
@@ -223,9 +224,16 @@ static void read_ccs_protocol(char *path, int *config_val)
 #define DROP_RESOURCES_COUNT_PATH "/cluster/dlm/@drop_resources_count"
 #define DROP_RESOURCES_AGE_PATH "/cluster/dlm/@drop_resources_age"
 
+/* for backward-compat */
+#define GFS_PLOCK_RATE_LIMIT_PATH "/cluster/gfs_controld/@plock_rate_limit"
+#define GFS_PLOCK_OWNERSHIP_PATH "/cluster/gfs_controld/@plock_ownership"
+#define GFS_DROP_RESOURCES_TIME_PATH "/cluster/gfs_controld/@drop_resources_time"
+#define GFS_DROP_RESOURCES_COUNT_PATH "/cluster/gfs_controld/@drop_resources_count"
+#define GFS_DROP_RESOURCES_AGE_PATH "/cluster/gfs_controld/@drop_resources_age"
+
 int setup_ccs(void)
 {
-	int cd;
+	int cd, rv;
 
 	if (ccs_handle)
 		goto update;
@@ -256,21 +264,38 @@ int setup_ccs(void)
 		read_ccs_int(ENABLE_DEADLK_PATH, &cfgd_enable_deadlk);
 	if (!optd_enable_plock)
 		read_ccs_int(ENABLE_PLOCK_PATH, &cfgd_enable_plock);
-	if (!optd_plock_ownership)
-		read_ccs_int(PLOCK_OWNERSHIP_PATH, &cfgd_plock_ownership);
+	if (!optd_plock_ownership) {
+		rv = read_ccs_int(PLOCK_OWNERSHIP_PATH, &cfgd_plock_ownership);
+		if (rv < 0)
+			read_ccs_int(GFS_PLOCK_OWNERSHIP_PATH, &cfgd_plock_ownership);
+	}
+
 
 	/* The following can be changed while running */
  update:
-	if (!optd_plock_debug)
+	if (!optd_plock_debug) {
 		read_ccs_int(PLOCK_DEBUG_PATH, &cfgd_plock_debug);
-	if (!optd_plock_rate_limit)
-		read_ccs_int(PLOCK_RATE_LIMIT_PATH, &cfgd_plock_rate_limit);
-	if (!optd_drop_resources_time)
-		read_ccs_int(DROP_RESOURCES_TIME_PATH, &cfgd_drop_resources_time);
-	if (!optd_drop_resources_count)
-		read_ccs_int(DROP_RESOURCES_COUNT_PATH, &cfgd_drop_resources_count);
-	if (!optd_drop_resources_age)
-		read_ccs_int(DROP_RESOURCES_AGE_PATH, &cfgd_drop_resources_age);
+	}
+	if (!optd_plock_rate_limit) {
+		rv = read_ccs_int(PLOCK_RATE_LIMIT_PATH, &cfgd_plock_rate_limit);
+		if (rv < 0)
+			read_ccs_int(GFS_PLOCK_RATE_LIMIT_PATH, &cfgd_plock_rate_limit);
+	}
+	if (!optd_drop_resources_time) {
+		rv = read_ccs_int(DROP_RESOURCES_TIME_PATH, &cfgd_drop_resources_time);
+		if (rv < 0)
+			read_ccs_int(GFS_DROP_RESOURCES_TIME_PATH, &cfgd_drop_resources_time);
+	}
+	if (!optd_drop_resources_count) {
+		rv = read_ccs_int(DROP_RESOURCES_COUNT_PATH, &cfgd_drop_resources_count);
+		if (rv < 0)
+			read_ccs_int(GFS_DROP_RESOURCES_COUNT_PATH, &cfgd_drop_resources_count);
+	}
+	if (!optd_drop_resources_age) {
+		rv = read_ccs_int(DROP_RESOURCES_AGE_PATH, &cfgd_drop_resources_age);
+		if (rv < 0)
+			read_ccs_int(GFS_DROP_RESOURCES_AGE_PATH, &cfgd_drop_resources_age);
+	}
 
 	return 0;
 }
diff --git a/group/dlm_controld/dlm_daemon.h b/group/dlm_controld/dlm_daemon.h
index 02e4ce9..8173192 100644
--- a/group/dlm_controld/dlm_daemon.h
+++ b/group/dlm_controld/dlm_daemon.h
@@ -227,7 +227,7 @@ int setup_ccs(void);
 void close_ccs(void);
 void read_ccs_name(char *path, char *name);
 void read_ccs_yesno(char *path, int *yes, int *no);
-void read_ccs_int(char *path, int *config_val);
+int read_ccs_int(char *path, int *config_val);
 int get_weight(int nodeid, char *lockspace);
 
 /* cpg.c */
diff --git a/group/gfs_controld/config.c b/group/gfs_controld/config.c
index f9b438f..b6e2ebe 100644
--- a/group/gfs_controld/config.c
+++ b/group/gfs_controld/config.c
@@ -88,7 +88,7 @@ void read_ccs_yesno(char *path, int *yes, int *no)
 	free(str);
 }
 
-void read_ccs_int(char *path, int *config_val)
+int read_ccs_int(char *path, int *config_val)
 {
 	char *str;
 	int val;
@@ -96,18 +96,19 @@ void read_ccs_int(char *path, int *config_val)
 
 	error = ccs_get(ccs_handle, path, &str);
 	if (error || !str)
-		return;
+		return -1;
 
 	val = atoi(str);
 
 	if (val < 0) {
 		log_error("ignore invalid value %d for %s", val, path);
-		return;
+		return -1;
 	}
 
 	*config_val = val;
 	log_debug("%s is %u", path, val);
 	free(str);
+	return 0;
 }
 
 #define LOCKSPACE_NODIR "/cluster/dlm/lockspace[@name=\"%s\"]/@nodir"
@@ -149,9 +150,15 @@ void read_ccs_nodir(struct mountgroup *mg, char *buf)
 #define DROP_RESOURCES_COUNT_PATH "/cluster/gfs_controld/@drop_resources_count"
 #define DROP_RESOURCES_AGE_PATH "/cluster/gfs_controld/@drop_resources_age"
 
+#define DLM_PLOCK_RATE_LIMIT_PATH "/cluster/dlm/@plock_rate_limit"
+#define DLM_PLOCK_OWNERSHIP_PATH "/cluster/dlm/@plock_ownership"
+#define DLM_DROP_RESOURCES_TIME_PATH "/cluster/dlm/@drop_resources_time"
+#define DLM_DROP_RESOURCES_COUNT_PATH "/cluster/dlm/@drop_resources_count"
+#define DLM_DROP_RESOURCES_AGE_PATH "/cluster/dlm/@drop_resources_age"
+
 int setup_ccs(void)
 {
-	int cd;
+	int cd, rv;
 
 	if (ccs_handle)
 		goto update;
@@ -172,22 +179,37 @@ int setup_ccs(void)
 		read_ccs_int(ENABLE_WITHDRAW_PATH, &cfgd_enable_withdraw);
 	if (!optd_enable_plock)
 		read_ccs_int(ENABLE_PLOCK_PATH, &cfgd_enable_plock);
-	if (!optd_plock_ownership)
-		read_ccs_int(PLOCK_OWNERSHIP_PATH, &cfgd_plock_ownership);
+	if (!optd_plock_ownership) {
+		rv = read_ccs_int(PLOCK_OWNERSHIP_PATH, &cfgd_plock_ownership);
+		if (rv < 0)
+			read_ccs_int(DLM_PLOCK_OWNERSHIP_PATH, &cfgd_plock_ownership);
+	}
 
 	/* The following can be changed while running */
  update:
-	if (!optd_plock_debug)
+	if (!optd_plock_debug) {
 		read_ccs_int(PLOCK_DEBUG_PATH, &cfgd_plock_debug);
-	if (!optd_plock_rate_limit)
-		read_ccs_int(PLOCK_RATE_LIMIT_PATH, &cfgd_plock_rate_limit);
-	if (!optd_drop_resources_time)
-		read_ccs_int(DROP_RESOURCES_TIME_PATH, &cfgd_drop_resources_time);
-	if (!optd_drop_resources_count)
-		read_ccs_int(DROP_RESOURCES_COUNT_PATH, &cfgd_drop_resources_count);
-	if (!optd_drop_resources_age)
-		read_ccs_int(DROP_RESOURCES_AGE_PATH, &cfgd_drop_resources_age);
-
+	}
+	if (!optd_plock_rate_limit) {
+		rv = read_ccs_int(PLOCK_RATE_LIMIT_PATH, &cfgd_plock_rate_limit);
+		if (rv < 0)
+			read_ccs_int(DLM_PLOCK_RATE_LIMIT_PATH, &cfgd_plock_rate_limit);
+	}
+	if (!optd_drop_resources_time) {
+		rv = read_ccs_int(DROP_RESOURCES_TIME_PATH, &cfgd_drop_resources_time);
+		if (rv < 0)
+			read_ccs_int(DLM_DROP_RESOURCES_TIME_PATH, &cfgd_drop_resources_time);
+	}
+	if (!optd_drop_resources_count) {
+		rv = read_ccs_int(DROP_RESOURCES_COUNT_PATH, &cfgd_drop_resources_count);
+		if (rv < 0)
+			read_ccs_int(DLM_DROP_RESOURCES_COUNT_PATH, &cfgd_drop_resources_count);
+	}
+	if (!optd_drop_resources_age) {
+		rv = read_ccs_int(DROP_RESOURCES_AGE_PATH, &cfgd_drop_resources_age);
+		if (rv < 0)
+			read_ccs_int(DLM_DROP_RESOURCES_AGE_PATH, &cfgd_drop_resources_age);
+	}
 
 	return 0;
 }
diff --git a/group/gfs_controld/gfs_daemon.h b/group/gfs_controld/gfs_daemon.h
index c93d9cc..157865a 100644
--- a/group/gfs_controld/gfs_daemon.h
+++ b/group/gfs_controld/gfs_daemon.h
@@ -215,7 +215,7 @@ int setup_ccs(void);
 void close_ccs(void);
 void read_ccs_name(char *path, char *name);
 void read_ccs_yesno(char *path, int *yes, int *no);
-void read_ccs_int(char *path, int *config_val);
+int read_ccs_int(char *path, int *config_val);
 void read_ccs_nodir(struct mountgroup *mg, char *buf);
 
 /* cpg-new.c */



More information about the Cluster-cvs mailing list