[Cluster-devel] [PATCH] cman: default to 2 differnet mcast address in RRP mode and set rrp_problem_count_threshold

Fabio M. Di Nitto fdinitto at redhat.com
Thu Sep 8 08:26:24 UTC 2011


Resolves: rhbz#735912

Signed-off-by: Fabio M. Di Nitto <fdinitto at redhat.com>
---
 cman/daemon/cman-preconfig.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/cman/daemon/cman-preconfig.c b/cman/daemon/cman-preconfig.c
index 64f505f..a700ff7 100644
--- a/cman/daemon/cman-preconfig.c
+++ b/cman/daemon/cman-preconfig.c
@@ -393,13 +393,14 @@ static uint16_t generate_cluster_id(char *name)
 	return value & 0xFFFF;
 }
 
-static char *default_mcast(char *node, uint16_t clusterid)
+static char *default_mcast(char *node, int altiface)
 {
         struct addrinfo *ainfo;
         struct addrinfo ahints;
 	int ret;
 	int family;
 	static char addr[132];
+	uint16_t clusterid = cluster_id + altiface;
 
         memset(&ahints, 0, sizeof(ahints));
 
@@ -691,7 +692,7 @@ static int get_nodename(struct objdb_iface_ver0 *objdb)
 		}
 
 		if (!mcast_name) {
-			mcast_name = default_mcast(nodename, cluster_id);
+			mcast_name = default_mcast(nodename, PRIMARY_IFACE);
 
 		}
 		if (!mcast_name)
@@ -778,7 +779,7 @@ static int get_nodename(struct objdb_iface_ver0 *objdb)
 		objdb_get_int(objdb, alt_object, "ttl", &altttl, ttl);
 
 		if (objdb_get_string(objdb, alt_object, "mcast", &mcast)) {
-			mcast = mcast_name;
+			mcast = default_mcast(nodename, ALT_IFACE);
 		}
 
 		if (add_ifaddr(objdb, mcast, node, portnum, altttl,
@@ -985,6 +986,8 @@ static void add_cman_overrides(struct objdb_iface_ver0 *objdb)
 			if (num_interfaces > 1) {
 				objdb->object_key_create_typed(object_handle, "rrp_mode",
 							       "passive", strlen("passive")+1, OBJDB_VALUETYPE_STRING);
+				objdb->object_key_create_typed(object_handle, "rrp_problem_count_threshold",
+							       "3", 2, OBJDB_VALUETYPE_STRING);
 			}
 			else {
 				objdb->object_key_create_typed(object_handle, "rrp_mode",
@@ -1136,7 +1139,7 @@ static int set_noccs_defaults(struct objdb_iface_ver0 *objdb)
 	num_nodenames = 1;
 
 	if (!mcast_name) {
-		mcast_name = default_mcast(nodename, cluster_id);
+		mcast_name = default_mcast(nodename, PRIMARY_IFACE);
 	}
 
 	/* This will increase as nodes join the cluster */
-- 
1.7.4.4




More information about the Cluster-devel mailing list