[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