[Openais] Support for ring_id in config_change PATCH I Rev1.

Muni Bajpai muniba at nortel.com
Wed Feb 16 15:08:26 PST 2005


Skipped content of type multipart/alternative-------------- next part --------------
--- ../latest_openais/exec/amf.c	2005-02-16 16:11:28.000000000 -0600
+++ ../bk_openais/exec/amf.c	2005-02-16 16:01:26.000000000 -0600
@@ -244,7 +244,8 @@
     struct in_addr *left_list, void *left_list_private,
 		int left_list_entries,
     struct in_addr *joined_list, void *joined_list_private,
-		int joined_list_entries);
+		int joined_list_entries,
+	struct memb_ring_id *ring_id);
 
 /***
 static void amf_dump (void);
@@ -1903,7 +1904,8 @@
     struct in_addr *left_list, void *left_list_private,
 		int left_list_entries,
     struct in_addr *joined_list, void *joined_list_private,
-		int joined_list_entries)
+		int joined_list_entries,
+	struct memb_ring_id *ring_id)
 {
 	int i;
 
--- ../latest_openais/exec/ckpt.c	2005-02-16 16:11:28.000000000 -0600
+++ ../bk_openais/exec/ckpt.c	2005-02-16 16:01:53.000000000 -0600
@@ -140,7 +140,8 @@
 	struct in_addr *left_list, void *left_list_private,
 		int left_list_entries,
 	struct in_addr *joined_list, void *joined_list_private,
-		int joined_list_entries) {
+		int joined_list_entries,
+	struct memb_ring_id *ring_id) {
 
 #ifdef TODO
 	if (configuration_type == TOTEMPG_CONFIGURATION_REGULAR) {
@@ -272,6 +273,8 @@
 	.exec_dump_fn				= 0
 };
 
+static struct memb_ring_id saved_ring_id;
+
 static struct saCkptCheckpoint *ckpt_checkpoint_find_global (SaNameT *name)
 {
 	struct list_head *checkpointList;
@@ -401,9 +404,11 @@
 
 static int ckpt_exec_init_fn (void)
 {
+	// Initialize the saved ring ID.
+	saved_ring_id.seq = 0;
+	saved_ring_id.rep.s_addr = this_ip.sin_addr.s_addr;	
 #ifdef TODO
 	int res;
-
 	res = totempg_recovery_plug_create (&ckpt_checkpoint_recovery_plug_handle);
 	if (res != 0) {
 		log_printf(LOG_LEVEL_ERROR,
--- ../latest_openais/exec/ckpt.h	2005-02-16 16:11:28.000000000 -0600
+++ ../bk_openais/exec/ckpt.h	2005-02-16 15:57:52.000000000 -0600
@@ -35,10 +35,16 @@
 #include "../include/saCkpt.h"
 #include "aispoll.h"
 #include "parse.h"
+#include "totemsrp.h"
 
 #ifndef CKPT_H_DEFINED
 #define CKPT_H_DEFINED
 
+struct ckpt_refcnt {
+	int count;
+	struct in_addr addr;
+};
+
 struct saCkptCheckpointSection {
 	struct list_head list;
 	SaCkptSectionDescriptorT sectionDescriptor;
@@ -55,6 +61,7 @@
 	int unlinked;
 	poll_timer_handle retention_timer;
 	int expired;
+	struct ckpt_refcnt ckpt_refcount[PROCESSOR_COUNT_MAX];	
 };
 
 struct saCkptSectionIteratorEntry {
--- ../latest_openais/exec/clm.c	2005-02-16 16:11:28.000000000 -0600
+++ ../bk_openais/exec/clm.c	2005-02-16 16:02:47.000000000 -0600
@@ -107,7 +107,8 @@
     struct in_addr *left_list, void *left_list_private,
 		int left_list_entries,
     struct in_addr *joined_list, void *joined_list_private,
-		int joined_list_entries);
+		int joined_list_entries,
+	struct memb_ring_id *ring_id);
 
 static int message_handler_req_exec_clm_nodejoin (void *message, struct in_addr source_addr, int endian_conversion_required);
 
@@ -393,7 +394,8 @@
     struct in_addr *left_list, void *left_list_private,
 		int left_list_entries,
     struct in_addr *joined_list, void *joined_list_private,
-		int joined_list_entries)
+		int joined_list_entries,
+	struct memb_ring_id *ring_id)
 {
 
 	int i;
--- ../latest_openais/exec/evs.c	2005-02-16 16:11:28.000000000 -0600
+++ ../bk_openais/exec/evs.c	2005-02-16 16:03:31.000000000 -0600
@@ -76,7 +76,8 @@
     struct in_addr *left_list, void *left_list_private,
 		int left_list_entries,
     struct in_addr *joined_list, void *joined_list_private,
-		int joined_list_entries);
+		int joined_list_entries,
+	struct memb_ring_id *ring_id);
 
 static int message_handler_req_exec_mcast (void *message, struct in_addr source_addr, int endian_conversion_required);
 
@@ -156,7 +157,8 @@
     struct in_addr *left_list, void *left_list_private,
 		int left_list_entries,
     struct in_addr *joined_list, void *joined_list_private,
-		int joined_list_entries)
+		int joined_list_entries,
+	struct memb_ring_id *ring_id)
 {
 
 	int i;
--- ../latest_openais/exec/evt.c	2005-02-16 16:11:28.000000000 -0600
+++ ../bk_openais/exec/evt.c	2005-02-16 16:05:20.000000000 -0600
@@ -87,7 +87,8 @@
 		struct in_addr *left_list, void *left_list_private,
 			int left_list_entries,
 		struct in_addr *joined_list, void *joined_list_private,
-			int joined_list_entries);
+			int joined_list_entries,
+		struct memb_ring_id *ring_id);
 
 static int evt_initialize(struct conn_info *conn_info, void *msg);
 static int evt_finalize(struct conn_info *conn_info);
@@ -2798,7 +2799,8 @@
 		struct in_addr *left_list, void *left_list_private,
 			int left_list_entries,
 		struct in_addr *joined_list, void *joined_list_private,
-			int joined_list_entries)
+			int joined_list_entries,
+		struct memb_ring_id *ring_id)
 {
 	struct in_addr my_node = {SA_CLM_LOCAL_NODE_ID};
 	SaClmClusterNodeT *cn;
--- ../latest_openais/exec/handlers.h	2005-02-16 16:11:28.000000000 -0600
+++ ../bk_openais/exec/handlers.h	2005-02-16 15:58:25.000000000 -0600
@@ -37,6 +37,7 @@
 #include <netinet/in.h>
 #include "main.h"
 #include "totempg.h"
+#include "totemsrp.h"
 
 struct libais_handler {
 	int (*libais_handler_fn) (struct conn_info *conn_info, void *msg);
@@ -56,7 +57,8 @@
 		struct in_addr *left_list, void *left_list_private,
 			int left_list_entries,
 		struct in_addr *joined_list, void *joined_list_private,
-			int joined_list_entries);
+			int joined_list_entries,
+		struct memb_ring_id *ring_id);
 	int (*libais_init_fn) (struct conn_info *conn_info, void *msg);
 	int (*libais_exit_fn) (struct conn_info *conn_info);
 	int (*exec_init_fn) (void);
--- ../latest_openais/exec/main.c	2005-02-16 16:11:28.000000000 -0600
+++ ../bk_openais/exec/main.c	2005-02-16 16:06:07.000000000 -0600
@@ -60,6 +60,7 @@
 #include "../include/queue.h"
 #include "poll.h"
 #include "totempg.h"
+#include "totemsrp.h"
 #include "mempool.h"
 #include "parse.h"
 #include "main.h"
@@ -707,7 +708,8 @@
 	struct in_addr *left_list, void *left_list_private,
 		int left_list_entries,
 	struct in_addr *joined_list, void *joined_list_private,
-		int joined_list_entries)
+		int joined_list_entries,
+	struct memb_ring_id *ring_id)
 {
 	int i;
 
@@ -719,7 +721,7 @@
 			ais_service_handlers[i]->confchg_fn (configuration_type,
 				member_list, member_list_private, member_list_entries,
 				left_list, left_list_private, left_list_entries,
-				joined_list, joined_list_private, joined_list_entries);
+				joined_list, joined_list_private, joined_list_entries, ring_id);
 		}
 	}
 }
--- ../latest_openais/exec/totempg.c	2005-02-16 16:11:28.000000000 -0600
+++ ../bk_openais/exec/totempg.c	2005-02-16 16:07:24.000000000 -0600
@@ -149,7 +149,8 @@
 		struct in_addr *left_list, void *left_list_private,
 			int left_list_entries,
 		struct in_addr *joined_list, void *joined_list_private,
-			int joined_list_entries) = 0;
+			int joined_list_entries,
+		struct memb_ring_id *ring_id) = 0;
 
 struct assembly {
 	struct in_addr addr;
@@ -195,7 +196,8 @@
 	struct in_addr *left_list, void *left_list_private,
 		int left_list_entries,
 	struct in_addr *joined_list, void *joined_list_private,
-		int joined_list_entries)
+		int joined_list_entries,
+	struct memb_ring_id *ring_id)
 {
 	int i;
 	int j;
@@ -239,7 +241,7 @@
 	app_confchg_fn (configuration_type,
 		member_list, member_list_private, member_list_entries,
 		left_list, left_list_private, left_list_entries,
-		joined_list, joined_list_private, joined_list_entries);
+		joined_list, joined_list_private, joined_list_entries, ring_id);
 }
 
 static void totempg_deliver_fn (
@@ -457,7 +459,8 @@
 		struct in_addr *left_list, void *left_list_private,
 			int left_list_entries,
 		struct in_addr *joined_list, void *joined_list_private,
-			int joined_list_entries))
+			int joined_list_entries,
+		struct memb_ring_id *ring_id))
 {
 	int res;
 
--- ../latest_openais/exec/totempg.h	2005-02-16 16:11:28.000000000 -0600
+++ ../bk_openais/exec/totempg.h	2005-02-16 16:07:22.000000000 -0600
@@ -98,7 +98,8 @@
 		struct in_addr *left_list, void *left_list_private,
 			int left_list_entries,
 		struct in_addr *joined_list, void *joined_list_private,
-			int joined_list_entries));
+			int joined_list_entries,
+		struct memb_ring_id *ring_id));
 
 /*
  * Multicast a message
--- ../latest_openais/exec/totemsrp.c	2005-02-16 16:11:28.000000000 -0600
+++ ../bk_openais/exec/totemsrp.c	2005-02-16 16:00:28.000000000 -0600
@@ -102,7 +102,7 @@
 #define TIMEOUT_STATE_GATHER_CONSENSUS	200
 #define TIMEOUT_TOKEN					1000
 #define TIMEOUT_TOKEN_RETRANSMIT		200
-#define MAX_MEMBERS						16
+//#define PROCESSOR_COUNT_MAX						16
 #define PACKET_SIZE_MAX					2000
 #define FAIL_TO_RECV_CONST				250
 #define SEQNO_UNCHANGED_CONST			20
@@ -156,21 +156,21 @@
 	int set;
 };
 
-static struct consensus_list_item consensus_list[MAX_MEMBERS];
+static struct consensus_list_item consensus_list[PROCESSOR_COUNT_MAX];
 
 static int consensus_list_entries;
 
-static struct in_addr my_proc_list[MAX_MEMBERS];
+static struct in_addr my_proc_list[PROCESSOR_COUNT_MAX];
 
-static struct in_addr my_failed_list[MAX_MEMBERS];
+static struct in_addr my_failed_list[PROCESSOR_COUNT_MAX];
 
-static struct in_addr my_new_memb_list[MAX_MEMBERS];
+static struct in_addr my_new_memb_list[PROCESSOR_COUNT_MAX];
 
-static struct in_addr my_trans_memb_list[MAX_MEMBERS];
+static struct in_addr my_trans_memb_list[PROCESSOR_COUNT_MAX];
 
-static struct in_addr my_memb_list[MAX_MEMBERS];
+static struct in_addr my_memb_list[PROCESSOR_COUNT_MAX];
 
-static struct in_addr my_deliver_memb_list[MAX_MEMBERS];
+static struct in_addr my_deliver_memb_list[PROCESSOR_COUNT_MAX];
 
 static int my_proc_list_entries = 0;
 
@@ -301,11 +301,6 @@
 	unsigned short endian_detector;
 } __attribute__((packed));
 
-struct memb_ring_id {
-	struct in_addr rep;
-	unsigned long long seq;
-} __attribute__((packed));
-
 struct mcast {
 	struct message_header header;
 	int seq;
@@ -344,9 +339,9 @@
 
 struct memb_join {
 	struct message_header header;
-	struct in_addr proc_list[MAX_MEMBERS];
+	struct in_addr proc_list[PROCESSOR_COUNT_MAX];
 	int proc_list_entries;
-	struct in_addr failed_list[MAX_MEMBERS];
+	struct in_addr failed_list[PROCESSOR_COUNT_MAX];
 	int failed_list_entries;
 	unsigned long long ring_seq;
 } __attribute__((packed));
@@ -365,8 +360,8 @@
 	unsigned int retrans_flg;
 	int memb_index;
 	int addr_entries;
-	struct in_addr addr[MAX_MEMBERS];
-	struct memb_commit_token_memb_entry memb_list[MAX_MEMBERS];
+	struct in_addr addr[PROCESSOR_COUNT_MAX];
+	struct memb_commit_token_memb_entry memb_list[PROCESSOR_COUNT_MAX];
 }__attribute__((packed));
 
 struct message_item {
@@ -429,7 +424,8 @@
 	struct in_addr *left_list, void *left_list_private,
 		int left_list_entries,
 	struct in_addr *joined_list, void *joined_list_private,
-		int joined_list_entries) = 0;
+		int joined_list_entries,
+	struct memb_ring_id *ring_id) = 0;
 
 /*
  * forward decls
@@ -542,7 +538,8 @@
 		struct in_addr *left_list, void *left_list_private,
 			int left_list_entries,
 		struct in_addr *joined_list, void *joined_list_private,
-			int joined_list_entries))
+			int joined_list_entries,
+		struct memb_ring_id *ring_id))
 {
 
 	int res;
@@ -696,7 +693,7 @@
  */
 static int memb_consensus_agreed (void)
 {
-	struct in_addr token_memb[MAX_MEMBERS];
+	struct in_addr token_memb[PROCESSOR_COUNT_MAX];
 	int token_memb_entries = 0;
 	int agreed = 1;
 	int i;
@@ -880,7 +877,7 @@
 
 static void memb_state_consensus_timeout_expired (void)
 {
-	struct in_addr no_consensus_list[MAX_MEMBERS];
+	struct in_addr no_consensus_list[PROCESSOR_COUNT_MAX];
 	int no_consensus_list_entries;
 
 	if (memb_consensus_agreed ()) {
@@ -1015,9 +1012,9 @@
  */
 static void memb_state_operational_enter (void)
 {
-	struct in_addr joined_list[MAX_MEMBERS];
+	struct in_addr joined_list[PROCESSOR_COUNT_MAX];
 	int joined_list_entries = 0;
-	struct in_addr left_list[MAX_MEMBERS];
+	struct in_addr left_list[PROCESSOR_COUNT_MAX];
 	int left_list_entries = 0;
 
 	deliver_messages_from_recovery_to_regular ();
@@ -1043,7 +1040,7 @@
 	totemsrp_confchg_fn (TOTEMSRP_CONFIGURATION_TRANSITIONAL,
 		my_trans_memb_list, 0, my_trans_memb_entries,
 		left_list, 0, left_list_entries,
-		0, 0, 0);
+		0, 0, 0, &my_ring_id);
 		
 // TODO we need to filter to ensure we only deliver those
 // messages which are part of my_deliver_memb
@@ -1055,7 +1052,7 @@
 	totemsrp_confchg_fn (TOTEMSRP_CONFIGURATION_REGULAR,
 		my_new_memb_list, 0, my_new_memb_entries,
 		0, 0, 0,
-		joined_list, 0, joined_list_entries);
+		joined_list, 0, joined_list_entries, &my_ring_id);
 
 	/*
 	 * Install new membership
@@ -2302,7 +2299,7 @@
 
 int memb_lowest_in_config (void)
 {
-	struct in_addr token_memb[MAX_MEMBERS];
+	struct in_addr token_memb[PROCESSOR_COUNT_MAX];
 	int token_memb_entries = 0;
 	struct in_addr lowest_addr;
 	int i;
@@ -2326,7 +2323,7 @@
 
 static void memb_state_commit_token_create (struct memb_commit_token *commit_token)
 {
-	struct in_addr token_memb[MAX_MEMBERS];
+	struct in_addr token_memb[PROCESSOR_COUNT_MAX];
 	int token_memb_entries = 0;
 
 	totemsrp_log_printf (totemsrp_log_level_notice,
@@ -2349,7 +2346,7 @@
 	memcpy (commit_token->addr, token_memb,
 		token_memb_entries * sizeof (struct in_addr));
 	memset (commit_token->memb_list, 0,
-		sizeof (struct memb_commit_token_memb_entry) * MAX_MEMBERS);
+		sizeof (struct memb_commit_token_memb_entry) * PROCESSOR_COUNT_MAX);
 	commit_token->memb_index = token_memb_entries - 1;
 	commit_token->addr_entries = token_memb_entries;
 }
@@ -3223,7 +3220,7 @@
 {
 	struct memb_commit_token memb_commit_token_convert;
 	struct memb_commit_token *memb_commit_token;
-	struct in_addr sub[MAX_MEMBERS];
+	struct in_addr sub[PROCESSOR_COUNT_MAX];
 	int sub_entries;
 
 	
--- ../latest_openais/exec/totemsrp.h	2005-02-16 16:11:28.000000000 -0600
+++ ../bk_openais/exec/totemsrp.h	2005-02-16 15:59:01.000000000 -0600
@@ -37,12 +37,18 @@
 #include "aispoll.h"
 
 #define TOTEMSRP_PACKET_SIZE_MAX	1408
+#define PROCESSOR_COUNT_MAX			16
 
 enum totemsrp_configuration_type {
 	TOTEMSRP_CONFIGURATION_REGULAR,
 	TOTEMSRP_CONFIGURATION_TRANSITIONAL	
 };
 
+struct memb_ring_id {
+	struct in_addr rep;
+	unsigned long long seq;
+} __attribute__((packed));
+
 /*
  * This represents an interface that TOTEMSRP binds to
  */
@@ -93,7 +99,8 @@
 		struct in_addr *left_list, void *left_list_private,
 			int left_list_entries,
 		struct in_addr *joined_list, void *joined_list_private,
-			int joined_list_entries));
+			int joined_list_entries,
+		struct memb_ring_id *ring_id));
 
 /*
  * Multicast a message


More information about the Openais mailing list