rpms/openais/F-7 revision-1406.patch, NONE, 1.1 revision-1407.patch, NONE, 1.1 revision-1408.patch, NONE, 1.1 revision-1409.patch, NONE, 1.1 revision-1423.patch, NONE, 1.1 revision-1426.patch, NONE, 1.1 revision-1446.patch, NONE, 1.1 revision-1449.patch, NONE, 1.1 revision-1450.patch, NONE, 1.1 revision-1453.patch, NONE, 1.1 revision-1455.patch, NONE, 1.1 revision-1464.patch, NONE, 1.1 .cvsignore, 1.7, 1.8 openais.spec, 1.19, 1.20 sources, 1.7, 1.8 revision-1223.patch, 1.1, NONE revision-1230.patch, 1.1, NONE revision-1245.patch, 1.1, NONE revision-1246.patch, 1.1, NONE revision-1248.patch, 1.1, NONE revision-1252.patch, 1.1, NONE revision-1256.patch, 1.1, NONE revision-1257.patch, 1.1, NONE revision-1258.patch, 1.1, NONE revision-1260.patch, 1.1, NONE revision-1261.patch, 1.1, NONE revision-1262.patch, 1.1, NONE revision-1263.patch, 1.1, NONE revision-1264.patch, 1.1, NONE revision-1265.patch, 1.1, NONE

Steven Dake (sdake) fedora-extras-commits at redhat.com
Tue Oct 2 18:35:05 UTC 2007


Author: sdake

Update of /cvs/pkgs/rpms/openais/F-7
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv8203/F-7

Modified Files:
	.cvsignore openais.spec sources 
Added Files:
	revision-1406.patch revision-1407.patch revision-1408.patch 
	revision-1409.patch revision-1423.patch revision-1426.patch 
	revision-1446.patch revision-1449.patch revision-1450.patch 
	revision-1453.patch revision-1455.patch revision-1464.patch 
Removed Files:
	revision-1223.patch revision-1230.patch revision-1245.patch 
	revision-1246.patch revision-1248.patch revision-1252.patch 
	revision-1256.patch revision-1257.patch revision-1258.patch 
	revision-1260.patch revision-1261.patch revision-1262.patch 
	revision-1263.patch revision-1264.patch revision-1265.patch 
Log Message:
Update to latest openais 0.80.3 + all applied patches in openais repository for whitetank branch.


revision-1406.patch:

--- NEW FILE revision-1406.patch ---
Index: exec/totemsrp.c
===================================================================
--- exec/totemsrp.c	(revision 1405)
+++ exec/totemsrp.c	(revision 1406)
@@ -393,8 +393,6 @@
 
 	unsigned int my_token_seq;
 
-	unsigned int my_commit_token_seq;
-
 	/*
 	 * Timers
 	 */
@@ -619,8 +617,6 @@
 
 	instance->my_token_seq = SEQNO_START_TOKEN - 1;
 
-	instance->my_commit_token_seq = SEQNO_START_TOKEN - 1;
-
 	instance->memb_state = MEMB_STATE_OPERATIONAL;
 
 	instance->set_aru = -1;
@@ -1646,8 +1642,6 @@
 	struct totemsrp_instance *instance,
 	int gather_from)
 {
-	instance->my_commit_token_seq = SEQNO_START_TOKEN - 1;
-
 	memb_set_merge (
 		&instance->my_id, 1,
 		instance->my_proc_list, &instance->my_proc_list_entries);
@@ -1733,8 +1727,6 @@
 
 	instance->memb_state = MEMB_STATE_COMMIT;
 
-	instance->my_commit_token_seq = SEQNO_START_TOKEN - 1;
-
 	/*
 	 * reset all flow control variables since we are starting a new ring
 	 */
@@ -3961,16 +3953,6 @@
 	addr = (struct srp_addr *)memb_commit_token->end_of_commit_token;
 	memb_list = (struct memb_commit_token_memb_entry *)(addr + memb_commit_token->addr_entries);
 
-	if (sq_lte_compare (memb_commit_token->token_seq,
-		instance->my_commit_token_seq)) {
-		/*
-		 * discard token
-		 */
-		return (0);
-	}
-	instance->my_commit_token_seq = memb_commit_token->token_seq;
-
-
 #ifdef TEST_DROP_COMMIT_TOKEN_PERCENTAGE
 	if (random()%100 < TEST_DROP_COMMIT_TOKEN_PERCENTAGE) {
 		return (0);
@@ -3998,9 +3980,15 @@
 			break;
 
 		case MEMB_STATE_COMMIT:
-//			if (memcmp (&memb_commit_token->ring_id, &instance->my_ring_id,
-//				sizeof (struct memb_ring_id)) == 0) {
-			 if (memb_commit_token->ring_id.seq == instance->my_ring_id.seq) {
+			/*
+			 * If retransmitted commit tokens are sent on this ring
+			 * filter them out and only enter recovery once the
+			 * commit token has traversed the array.  This is
+			 * determined by :
+		 	 * memb_commit_token->memb_index == memb_commit_token->addr_entries) {
+			 */
+			 if (memb_commit_token->ring_id.seq == instance->my_ring_id.seq &&
+				memb_commit_token->memb_index == memb_commit_token->addr_entries) {
 				memb_state_recovery_enter (instance, memb_commit_token);
 			}
 			break;

revision-1407.patch:

--- NEW FILE revision-1407.patch ---
Index: exec/totemsrp.c
===================================================================
--- exec/totemsrp.c	(revision 1406)
+++ exec/totemsrp.c	(revision 1407)
@@ -1548,6 +1548,8 @@
 	unsigned int new_memb_list_totemip[PROCESSOR_COUNT_MAX];
 	unsigned int left_list[PROCESSOR_COUNT_MAX];
 
+	memb_consensus_reset (instance);
+
 	old_ring_state_reset (instance);
 	ring_reset (instance);
 	deliver_messages_from_recovery_to_regular (instance);

revision-1408.patch:

--- NEW FILE revision-1408.patch ---
Index: exec/totemsrp.c
===================================================================
--- exec/totemsrp.c	(revision 1407)
+++ exec/totemsrp.c	(revision 1408)
@@ -549,7 +549,8 @@
 	int fcc_mcasts_allowed);
 static void messages_free (struct totemsrp_instance *instance, unsigned int token_aru);
 
-static void memb_ring_id_store (struct totemsrp_instance *instance);
+static void memb_ring_id_set_and_store (struct totemsrp_instance *instance,
+	struct memb_ring_id *ring_id);
 static void memb_state_commit_token_update (struct totemsrp_instance *instance, struct memb_commit_token *commit_token);
 static void memb_state_commit_token_target_set (struct totemsrp_instance *instance, struct memb_commit_token *commit_token);
 static int memb_state_commit_token_send (struct totemsrp_instance *instance, struct memb_commit_token *memb_commit_token);
@@ -1707,10 +1708,10 @@
 
 	memb_state_commit_token_target_set (instance, commit_token);
 
+	memb_ring_id_set_and_store (instance, &commit_token->ring_id);
+
 	memb_state_commit_token_send (instance, commit_token);
 
-	memcpy (&instance->my_ring_id, &commit_token->ring_id,
-		sizeof (struct memb_ring_id));
 	instance->token_ring_id_seq = instance->my_ring_id.seq;
 
 	poll_timer_delete (instance->totemsrp_poll_handle, instance->memb_timer_state_gather_join_timeout);
@@ -1920,7 +1921,6 @@
 
 	reset_token_timeout (instance); // REVIEWED
 	reset_token_retransmit_timeout (instance); // REVIEWED
-	memb_ring_id_store (instance);
 
 	instance->memb_state = MEMB_STATE_RECOVERY;
 	return;
@@ -2829,6 +2829,7 @@
 		}
 		res = write (fd, &memb_ring_id->seq, sizeof (unsigned long long));
 		assert (res == sizeof (unsigned long long));
+		fsync (fd);
 		close (fd);
 	} else {
 		log_printf (instance->totemsrp_log_level_warning,
@@ -2840,13 +2841,16 @@
 	instance->token_ring_id_seq = memb_ring_id->seq;
 }
 
-static void memb_ring_id_store (
-	struct totemsrp_instance *instance)
+static void memb_ring_id_set_and_store (
+	struct totemsrp_instance *instance,
+	struct memb_ring_id *ring_id)
 {
 	char filename[256];
 	int fd;
 	int res;
 
+	memcpy (&instance->my_ring_id, ring_id, sizeof (struct memb_ring_id));
+
 	sprintf (filename, "%s/ringid_%s",
 		rundir, totemip_print (&instance->my_id.addr[0]));
 
@@ -2866,6 +2870,7 @@
 	//assert (fd > 0);
 	res = write (fd, &instance->my_ring_id.seq, sizeof (unsigned long long));
 	assert (res == sizeof (unsigned long long));
+	fsync (fd);
 	close (fd);
 }
 

revision-1409.patch:

--- NEW FILE revision-1409.patch ---
Index: exec/totempg.c
===================================================================
--- exec/totempg.c	(revision 1408)
+++ exec/totempg.c	(revision 1409)
@@ -870,13 +870,14 @@
 /*
  * Determine if a message of msg_size could be queued
  */
+#define FUZZY_AVAIL_SUBTRACT 5
 static int send_ok (
 	int msg_size)
 {
 	int avail = 0;
 	int total;
 
-	avail = totemmrp_avail ();
+	avail = totemmrp_avail () - FUZZY_AVAIL_SUBTRACT;
 	
 	/*
 	 * msg size less then totempg_totem_config->net_mtu - 25 will take up

revision-1423.patch:

--- NEW FILE revision-1423.patch ---
Index: exec/ckpt.c
===================================================================
--- exec/ckpt.c	(revision 1422)
+++ exec/ckpt.c	(revision 1423)
@@ -825,14 +825,7 @@
 	}
 	
 	my_lowest_nodeid = 0xffffffff;
-	for (i = 0; i < my_member_list_entries; i++) {
-		if ((my_member_list[i] != 0) &&
-			(my_member_list[i] < my_lowest_nodeid)) {
 
-			my_lowest_nodeid = my_member_list[i];
-		}
-	}
-
 	/*
 	 * Handle regular configuration
 	 */
@@ -842,6 +835,13 @@
 		my_member_list_entries = member_list_entries;
 		memcpy (&my_saved_ring_id, ring_id,
 			sizeof (struct memb_ring_id));
+		for (i = 0; i < my_member_list_entries; i++) {
+			if ((my_member_list[i] != 0) &&
+				(my_member_list[i] < my_lowest_nodeid)) {
+
+				my_lowest_nodeid = my_member_list[i];
+			}
+		}
 	}
 }
 
Index: exec/sync.c
===================================================================
--- exec/sync.c	(revision 1422)
+++ exec/sync.c	(revision 1423)
@@ -452,6 +452,9 @@
 {
 	sync_ring_id = ring_id;
 
+	if (configuration_type != TOTEM_CONFIGURATION_REGULAR) {
+		return;
+	}
 	if (sync_processing && sync_callbacks.sync_abort != NULL) {
 		sync_callbacks.sync_abort ();
 	}

revision-1426.patch:

--- NEW FILE revision-1426.patch ---
Index: exec/totemsrp.c
===================================================================
--- exec/totemsrp.c	(revision 1423)
+++ exec/totemsrp.c	(revision 1426)
@@ -138,6 +138,11 @@
 	MESSAGE_TYPE_TOKEN_HOLD_CANCEL = 5,	/* cancel the holding of the token */
 };
 
+enum encapsulation_type {
+	MESSAGE_ENCAPSULATED = 1,
+	MESSAGE_NOT_ENCAPSULATED = 2
+};
+
 /* 
  * New membership algorithm local variables
  */
@@ -673,7 +678,10 @@
 {
 	struct totemsrp_instance *instance;
 	unsigned int res;
+struct orf_token suck;
 
+printf ("%p %p size is %d %d\n", &suck, &suck.rtr_list[0], sizeof (struct orf_token), (sizeof (struct rtr_item) * RETRANSMIT_ENTRIES_MAX));
+exit (1);
 	res = hdb_handle_create (&totemsrp_instance_database,
 		sizeof (struct totemsrp_instance), handle);
 	if (res != 0) {
@@ -1891,8 +1899,9 @@
 		sizeof (struct mcast));
 	memcpy (&message_item.mcast->ring_id, &instance->my_ring_id,
 		sizeof (struct memb_ring_id));
-	message_item.mcast->header.encapsulated = 1;
+	message_item.mcast->header.encapsulated = MESSAGE_ENCAPSULATED;
 	message_item.mcast->header.nodeid = instance->my_id.addr[0].nodeid;
+	message_item.mcast->header.endian_detector = ENDIAN_LOCAL;
 	assert (message_item.mcast->header.nodeid);
 	message_item.iov_len = sort_queue_item->iov_len;
 	memcpy (&message_item.iovec, &sort_queue_item->iovec,
@@ -1987,7 +1996,7 @@
 	 */
 	message_item.mcast->header.type = MESSAGE_TYPE_MCAST;
 	message_item.mcast->header.endian_detector = ENDIAN_LOCAL;
-	message_item.mcast->header.encapsulated = 2;
+	message_item.mcast->header.encapsulated = MESSAGE_NOT_ENCAPSULATED;
 	message_item.mcast->header.nodeid = instance->my_id.addr[0].nodeid;
 	assert (message_item.mcast->header.nodeid);
 
@@ -2558,14 +2567,14 @@
 	orf_token.token_seq = SEQNO_START_TOKEN;
 	orf_token.retrans_flg = 1;
 	instance->my_set_retrans_flg = 1;
-/*
+
 	if (queue_is_empty (&instance->retrans_message_queue) == 1) {
 		orf_token.retrans_flg = 0;
+		instance->my_set_retrans_flg = 0;
 	} else {
 		orf_token.retrans_flg = 1;
 		instance->my_set_retrans_flg = 1;
 	}
-*/
 		
 	orf_token.aru = 0;
 	orf_token.aru = SEQNO_START_MSG - 1;
@@ -2601,6 +2610,9 @@
 	 *  TODO high delivered is really instance->my_aru, but with safe this
 	 * could change?
 	 */
+	instance->my_received_flg =
+		(instance->my_aru == instance->my_high_seq_received);
+
 	memb_list[commit_token->memb_index].high_delivered = instance->my_high_delivered;
 	memb_list[commit_token->memb_index].received_flg = instance->my_received_flg;
 
@@ -3084,7 +3096,6 @@
 	unsigned int mcasted_retransmit;
 	unsigned int mcasted_regular;
 	unsigned int last_aru;
-	unsigned int low_water;
 
 #ifdef GIVEINFO
 	struct timeval tv_current;
@@ -3278,13 +3289,7 @@
 				 * has recovered all messages it can recover
 				 * (ie: its retrans queue is empty)
 				 */
-				low_water = instance->my_aru;
-				if (sq_lt_compare (last_aru, low_water)) {
-					low_water = last_aru;
-				}
-// TODO is this code right
-				if (queue_is_empty (&instance->retrans_message_queue) == 0 ||
-					low_water != instance->my_high_seq_received) {
+				if (queue_is_empty (&instance->retrans_message_queue) == 0) {
 
 					if (token->retrans_flg == 0) {
 						token->retrans_flg = 1;
@@ -3295,10 +3300,10 @@
 					token->retrans_flg = 0;
 				}
 				log_printf (instance->totemsrp_log_level_debug,
-					"token retrans flag is %d my set retrans flag%d retrans queue empty %d count %d, low_water %x aru %x\n", 
+					"token retrans flag is %d my set retrans flag%d retrans queue empty %d count %d, aru %x\n", 
 					token->retrans_flg, instance->my_set_retrans_flg,
 					queue_is_empty (&instance->retrans_message_queue),
-					instance->my_retrans_flg_count, low_water, token->aru);
+					instance->my_retrans_flg_count, token->aru);
 				if (token->retrans_flg == 0) { 
 					instance->my_retrans_flg_count += 1;
 				} else {
@@ -3310,13 +3315,16 @@
 				log_printf (instance->totemsrp_log_level_debug,
 					"install seq %x aru %x high seq received %x\n",
 					instance->my_install_seq, instance->my_aru, instance->my_high_seq_received);
-				if (instance->my_retrans_flg_count >= 2 && instance->my_aru >= instance->my_install_seq && instance->my_received_flg == 0) {
+				if (instance->my_retrans_flg_count >= 2 &&
+					instance->my_received_flg == 0 &&
+					sq_lte_compare (instance->my_install_seq, instance->my_aru)) {
 					instance->my_received_flg = 1;
 					instance->my_deliver_memb_entries = instance->my_trans_memb_entries;
 					memcpy (instance->my_deliver_memb_list, instance->my_trans_memb_list,
 						sizeof (struct totem_ip_address) * instance->my_trans_memb_entries);
 				}
-				if (instance->my_retrans_flg_count >= 3 && token->aru >= instance->my_install_seq) {
+				if (instance->my_retrans_flg_count >= 3 &&
+					sq_lte_compare (instance->my_install_seq, token->aru)) {
 					instance->my_rotation_counter += 1;
 				} else {
 					instance->my_rotation_counter = 0;
@@ -3515,18 +3523,12 @@
 		memcpy (&mcast_header, msg, sizeof (struct mcast));
 	}
 
-/*
-	if (mcast_header.header.encapsulated == 1) {
+	if (mcast_header.header.encapsulated == MESSAGE_ENCAPSULATED) {
 		sort_queue = &instance->recovery_sort_queue;
 	} else {
 		sort_queue = &instance->regular_sort_queue;
 	}
-*/
-	if (instance->memb_state == MEMB_STATE_RECOVERY) {
-		sort_queue = &instance->recovery_sort_queue;
-	} else {
-		sort_queue = &instance->regular_sort_queue;
-	}
+
 	assert (msg_len < FRAME_SIZE_MAX);
 
 #ifdef TEST_DROP_MCAST_PERCENTAGE
@@ -3853,6 +3855,8 @@
 	out->header.type = in->header.type;
 	out->header.endian_detector = ENDIAN_LOCAL;
 	out->header.nodeid = swab32 (in->header.nodeid);
+	out->header.encapsulated = in->header.encapsulated;
+
 	out->seq = swab32 (in->seq);
 	out->this_seqno = swab32 (in->this_seqno);
 	totemip_copy_endian_convert(&out->ring_id.rep, &in->ring_id.rep);
@@ -4051,7 +4055,12 @@
 		log_printf (instance->totemsrp_log_level_security, "Received message is too short...  ignoring %d.\n", msg_len);
 		return;
 	}
-
+	
+	if ((int)message_header->type >= totemsrp_message_handlers.count) {
+		log_printf (instance->totemsrp_log_level_security, "Type of received message is wrong...  ignoring %d.\n", (int)message_header->type);
+		return;
+	}
+	
 	/*
 	 * Handle incoming message
 	 */

revision-1446.patch:

--- NEW FILE revision-1446.patch ---
Index: exec/totemsrp.c
===================================================================
--- exec/totemsrp.c	(revision 1426)
+++ exec/totemsrp.c	(revision 1446)
@@ -678,10 +678,7 @@
 {
 	struct totemsrp_instance *instance;
 	unsigned int res;
-struct orf_token suck;
 
-printf ("%p %p size is %d %d\n", &suck, &suck.rtr_list[0], sizeof (struct orf_token), (sizeof (struct rtr_item) * RETRANSMIT_ENTRIES_MAX));
-exit (1);
 	res = hdb_handle_create (&totemsrp_instance_database,
 		sizeof (struct totemsrp_instance), handle);
 	if (res != 0) {

revision-1449.patch:

--- NEW FILE revision-1449.patch ---
Index: exec/service.c
===================================================================
--- exec/service.c	(revision 1446)
+++ exec/service.c	(revision 1449)
@@ -87,7 +87,7 @@
 	}
 };
 
-struct openais_service_handler *ais_service[128];
+struct openais_service_handler *ais_service[SERVICE_HANDLER_MAXIMUM_COUNT];
 
 /*
  * Adds a service handler to the object database
Index: exec/service.h
===================================================================
--- exec/service.h	(revision 1446)
+++ exec/service.h	(revision 1449)
@@ -44,6 +44,7 @@
 #endif
 
 #define SERVICE_ID_MAKE(a,b) ( ((a)<<16) | (b) )
+#define SERVICE_HANDLER_MAXIMUM_COUNT 64
 
 enum openais_flow_control {
 	OPENAIS_FLOW_CONTROL_REQUIRED = 1,
Index: exec/sync.c
===================================================================
--- exec/sync.c	(revision 1446)
+++ exec/sync.c	(revision 1449)
@@ -198,9 +198,10 @@
 {
 	int res;
 
-// TODO rewrite this to get rid of the for (;;)
 	for (;;) {
-		res = sync_callbacks_retrieve (sync_recovery_index, &sync_callbacks);
+		res = sync_callbacks_retrieve (sync_recovery_index,
+			&sync_callbacks);
+
 		/*
 		 * No more service handlers have sync callbacks at this time
 	`	 */
@@ -418,7 +419,6 @@
 		log_printf (LOG_LEVEL_DEBUG,
 			"Committing synchronization for (%s)\n",
 			sync_callbacks.name);
-	
 	}
 
 	/*
Index: exec/main.c
===================================================================
--- exec/main.c	(revision 1446)
+++ exec/main.c	(revision 1449)
@@ -175,15 +175,29 @@
 static int openais_sync_callbacks_retrieve (int sync_id,
 	struct sync_callbacks *callbacks)
 {
-	if (ais_service[sync_id] == NULL) {
+	unsigned int ais_service_index;
+	unsigned int ais_services_found = 0;
+	
+	for (ais_service_index = 0;
+		ais_service_index < SERVICE_HANDLER_MAXIMUM_COUNT;
+		ais_service_index++) {
+
+		if (ais_service[ais_service_index] != NULL) {
+			if (ais_services_found == sync_id) {
+				break;
+			}
+			ais_services_found += 1;
+		}
+	}
+	if (ais_service_index == SERVICE_HANDLER_MAXIMUM_COUNT) {
 		memset (callbacks, 0, sizeof (struct sync_callbacks));
 		return (-1);
 	}
-	callbacks->name = ais_service[sync_id]->name;
-	callbacks->sync_init = ais_service[sync_id]->sync_init;
-	callbacks->sync_process = ais_service[sync_id]->sync_process;
-	callbacks->sync_activate = ais_service[sync_id]->sync_activate;
-	callbacks->sync_abort = ais_service[sync_id]->sync_abort;
+	callbacks->name = ais_service[ais_service_index]->name;
+	callbacks->sync_init = ais_service[ais_service_index]->sync_init;
+	callbacks->sync_process = ais_service[ais_service_index]->sync_process;
+	callbacks->sync_activate = ais_service[ais_service_index]->sync_activate;
+	callbacks->sync_abort = ais_service[ais_service_index]->sync_abort;
 	return (0);
 }
 

revision-1450.patch:

--- NEW FILE revision-1450.patch ---
Index: lcr/test.c
===================================================================
--- lcr/test.c	(revision 1449)
+++ lcr/test.c	(revision 1450)
@@ -87,7 +87,7 @@
 		(void *)0xaaaa1111);
 	assert (res == 0);
 
-	a_iface_ver1 = (struct iface *)a_iface_ver0_p;
+	a_iface_ver1 = (struct iface *)a_iface_ver1_p;
 
 	res = lcr_ifact_reference (
 		&b_ifact_handle_ver1,
@@ -97,7 +97,7 @@
 		(void *)0xbbbb1111);
 	assert (res == 0);
 
-	b_iface_ver1 = (struct iface *)b_iface_ver0_p;
+	b_iface_ver1 = (struct iface *)b_iface_ver1_p;
 
 	a_iface_ver0->func1();
 	a_iface_ver0->func2();
Index: lcr/lcr_ifact.c
===================================================================
--- lcr/lcr_ifact.c	(revision 1449)
+++ lcr/lcr_ifact.c	(revision 1450)
@@ -45,6 +45,7 @@
 struct lcr_component_instance {
 	struct lcr_iface *ifaces;
 	int iface_count;
+	unsigned int comp_handle;
 	void *dl_handle;
 	int refcount;
 	char library_name[256];
@@ -68,7 +69,7 @@
 	.iterator	= 0
 };
 
-static unsigned int g_component_handle;
+static unsigned int g_component_handle = 0xFFFFFFFF;
 
 #ifdef OPENAIS_LINUX
 static int lcr_select_so (const struct dirent *dirent)
@@ -170,7 +171,6 @@
 
 	res = getcwd (cwd, sizeof (cwd));
 	if (res != NULL) {
-		strcat (cwd, "/");
 		path_list[0] = strdup (cwd);
 		path_list_entries++;
 	}
@@ -291,6 +291,8 @@
 		}
 		dl_handle = dlopen (dl_name, RTLD_LAZY);
 		if (dl_handle == NULL) {
+			fprintf (stderr, "LCR error loading plugin: %s\n",
+				dlerror());
 			continue;
 		}
 		instance = lcr_comp_find (iface_name, version, iface_number);
@@ -301,8 +303,8 @@
 		}
 
 		/*
-		 * No matching interfaces found, try next shared object
-		 */
+		* No matching interfaces found, try next shared object
+		*/
 		if (g_component_handle != 0xFFFFFFFF) {
 			hdb_handle_destroy (&lcr_component_instance_database,
 				g_component_handle);
@@ -349,20 +351,20 @@
 
 // TODO error checking in this code is weak
 	/*
-	 * Find all *.lcrso files in search paths
+	 * Search through all lcrso files for desired interface
 	 */
 	for (i = 0; i < path_list_entries; i++) {
-	res = interface_find_and_load (
-		path_list[i],
-		iface_name,
-		version,
-		&instance,
-		&iface_number);
+		res = interface_find_and_load (
+			path_list[i],
+			iface_name,
+			version,
+			&instance,
+			&iface_number);
 
-	if (res == 0) {
-		goto found;
+		if (res == 0) {
+			goto found;
+		}
 	}
-	}
 
 	/*
 	 * No matching interfaces found in all shared objects
@@ -379,9 +381,10 @@
 		iface_handle);
 	hdb_handle_get (&lcr_iface_instance_database,
 		*iface_handle, (void *)&iface_instance);
-	iface_instance->component_handle = g_component_handle;
+	iface_instance->component_handle = instance->comp_handle;
 	iface_instance->context = context;
 	iface_instance->destructor = instance->ifaces[iface_number].destructor;
+	hdb_handle_put (&lcr_iface_instance_database, *iface_handle);
 	return (0);
 }
 
@@ -408,17 +411,21 @@
 void lcr_component_register (struct lcr_comp *comp)
 {
 	struct lcr_component_instance *instance;
+	static unsigned int comp_handle;
 
 	hdb_handle_create (&lcr_component_instance_database,
 		sizeof (struct lcr_component_instance),
-		&g_component_handle);
+		&comp_handle);
 	hdb_handle_get (&lcr_component_instance_database,
-		g_component_handle, (void *)&instance);
+		comp_handle, (void *)&instance);
 
 	instance->ifaces = comp->ifaces;
 	instance->iface_count = comp->iface_count;
+	instance->comp_handle = comp_handle;
 	instance->dl_handle = NULL;
 
 	hdb_handle_put (&lcr_component_instance_database,
-		g_component_handle);
+		comp_handle);
+
+	g_component_handle = comp_handle;
 }
Index: lcr/Makefile
===================================================================
--- lcr/Makefile	(revision 1449)
+++ lcr/Makefile	(revision 1450)
@@ -27,7 +27,7 @@
 include ../Makefile.inc
 
 CFLAGS += -I../include
-LDFLAGS += -L./ ${DYFLAGS}
+override LDFLAGS += ${DYFLAGS}
 
 ifeq (${OPENAIS_COMPAT}, LINUX) 
 	LDFLAGS += -ldl
@@ -57,7 +57,7 @@
 endif
 	
 test: test.o uis.o lcr_ifact.o
-	$(CC) $(LDFLAGS) test.o lcr_ifact.o uis.o -lpthread -o test
+	$(CC) $(LDFLAGS) -fPIC test.o lcr_ifact.o uis.o -lpthread -o test
 
 test_static: test.o libtest_a.o libtest_b.o uis.o lcr_ifact.o
 	$(CC) $(LDFLAGS) test.o libtest_a.o libtest_b.o lcr_ifact.o -o test_static
@@ -71,6 +71,12 @@
 libtest_b.o: libtest_b.c
 	$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
 
+lcr_ifact.o: lcr_ifact.c
+	$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
+
+test.o: test.c
+	$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
+
 clean:
 	rm -f test libtest.so* *.o uic liblcr.so* liblcr.a *.lcrso *.da *.ba *.bb *.bbg \
 	test_static

revision-1453.patch:

--- NEW FILE revision-1453.patch ---
Index: exec/amfcomp.c
===================================================================
--- exec/amfcomp.c	(revision 1450)
+++ exec/amfcomp.c	(revision 1453)
@@ -1129,11 +1129,14 @@
 
 	if (comp->saAmfCompPresenceState == SA_AMF_PRESENCE_RESTARTING) {
 		comp_presence_state_set (comp, SA_AMF_PRESENCE_INSTANTIATED);
-	} else if (comp->saAmfCompPresenceState == SA_AMF_PRESENCE_INSTANTIATING) {
+	} else
+	if (comp->saAmfCompPresenceState == SA_AMF_PRESENCE_INSTANTIATING) {
 		amf_comp_operational_state_set (comp, SA_AMF_OPERATIONAL_ENABLED);
 		comp_presence_state_set (comp, SA_AMF_PRESENCE_INSTANTIATED);
-	}
-	else {
+	} else 
+	if (comp->saAmfCompPresenceState == SA_AMF_PRESENCE_UNINSTANTIATED) {
+		return SA_AIS_ERR_INVALID_PARAM;
+     	} else {
 		assert (0);
 	}
 

revision-1455.patch:

--- NEW FILE revision-1455.patch ---
Index: exec/totemsrp.c
===================================================================
--- exec/totemsrp.c	(revision 1453)
+++ exec/totemsrp.c	(revision 1455)
@@ -1779,15 +1779,10 @@
 	/*
 	 * Build regular configuration
 	 */
-	instance->my_new_memb_entries = commit_token->addr_entries;
-
  	totemrrp_processor_count_set (
 		instance->totemrrp_handle,
 		commit_token->addr_entries);
 
-	memcpy (instance->my_new_memb_list, addr,
-		sizeof (struct srp_addr) * instance->my_new_memb_entries);
-
 	/*
 	 * Build transitional configuration
 	 */
@@ -2598,6 +2593,11 @@
 	addr = (struct srp_addr *)commit_token->end_of_commit_token;
 	memb_list = (struct memb_commit_token_memb_entry *)(addr + commit_token->addr_entries);
 
+	memcpy (instance->my_new_memb_list, addr,
+		sizeof (struct srp_addr) * commit_token->addr_entries);
+
+	instance->my_new_memb_entries = commit_token->addr_entries;
+
 	memcpy (&memb_list[commit_token->memb_index].ring_id,
 		&instance->my_old_ring_id, sizeof (struct memb_ring_id));
 	assert (!totemip_zero_check(&instance->my_old_ring_id.rep));

revision-1464.patch:

--- NEW FILE revision-1464.patch ---
Index: exec/timer.c
===================================================================
--- exec/timer.c	(revision 1455)
+++ exec/timer.c	(revision 1464)
@@ -177,7 +177,7 @@
 	int res;
 	int unlock;
 
-	if (pthread_equal (pthread_self(), expiry_thread) == 0) {
+	if (pthread_equal (pthread_self(), expiry_thread) != 0) {
 		unlock = 0;
 	} else {
 		unlock = 1;
@@ -209,7 +209,7 @@
 	int res;
 	int unlock;
 
-	if (pthread_equal (pthread_self(), expiry_thread) == 0) {
+	if (pthread_equal (pthread_self(), expiry_thread) != 0) {
 		unlock = 0;
 	} else {
 		unlock = 1;


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/openais/F-7/.cvsignore,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- .cvsignore	16 Aug 2006 04:45:44 -0000	1.7
+++ .cvsignore	2 Oct 2007 18:34:33 -0000	1.8
@@ -1 +1 @@
-openais-0.80.1.tar.gz
+openais-0.80.3.tar.gz


Index: openais.spec
===================================================================
RCS file: /cvs/pkgs/rpms/openais/F-7/openais.spec,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- openais.spec	14 Oct 2006 00:49:26 -0000	1.19
+++ openais.spec	2 Oct 2007 18:34:33 -0000	1.20
@@ -1,29 +1,27 @@
 Name: openais
 Summary: The openais Standards-Based Cluster Framework executive and APIs
-Version: 0.80.1
-Release: 6
+Version: 0.80.3
+Release: 6%{?dist}
 License: BSD
 Group: System Environment/Base
 URL: http://developer.osdl.org/dev/openais/
 Source0: http://developer.osdl.org/dev/openais/downloads/openais-%{version}/openais-%{version}.tar.gz
 Patch0: openais-0.76-defaultconfig.patch
-Patch1: revision-1223.patch
-Patch2: revision-1230.patch
-Patch3: revision-1245.patch
-Patch4: revision-1246.patch
-Patch5: revision-1248.patch
-Patch6: revision-1252.patch
-Patch7: revision-1256.patch
-Patch8: revision-1257.patch
-Patch9: revision-1258.patch
-Patch10: revision-1260.patch
-Patch11: revision-1261.patch
-Patch12: revision-1262.patch
-Patch13: revision-1263.patch
-Patch14: revision-1264.patch
-Patch15: revision-1265.patch
+Patch1: revision-1406.patch
+Patch2: revision-1407.patch
+Patch3: revision-1408.patch
+Patch4: revision-1409.patch
+Patch5: revision-1423.patch
+Patch6: revision-1426.patch
+Patch7: revision-1446.patch
+Patch8: revision-1449.patch
+Patch9: revision-1450.patch
+Patch9: revision-1453.patch
+Patch10: revision-1455.patch
+Patch11: revision-1464.patch
+
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-ExclusiveArch: i386 ppc x86_64 ppc64 ia64 s390 s390x
+ExclusiveArch: i386 ppc x86_64 ppc64 ia64 s390 s390x alpha
 Requires(pre): /usr/sbin/useradd
 Requires(post): /sbin/chkconfig
 Requires(preun): /sbin/chkconfig
@@ -47,7 +45,7 @@
 %setup -q -n openais-%{version}
 %patch0
 %patch1
-%patch2 
+%patch2
 %patch3
 %patch4
 %patch5
@@ -57,10 +55,6 @@
 %patch9
 %patch10
 %patch11
-%patch12
-%patch13
-%patch14
-%patch15
 
 %build
 # -O3 required for performance reasons
@@ -103,6 +97,7 @@
 
 %files 
 %defattr(-,root,root,-)
+%dir %{_docdir}/%{name}-%{version}
 %doc %{_docdir}/%{name}-%{version}/LICENSE
 %doc %{_docdir}/%{name}-%{version}/SECURITY
 %doc %{_docdir}/%{name}-%{version}/README.amf
@@ -175,6 +170,7 @@
 %{_includedir}/openais/service/print.h
 %{_includedir}/openais/service/swab.h
 %{_includedir}/openais/service/service.h
+%{_includedir}/openais/service/timer.h
 %{_mandir}/man3/cpg_dispatch.3*
 %{_mandir}/man3/cpg_fd_get.3*
 %{_mandir}/man3/cpg_finalize.3*
@@ -183,6 +179,9 @@
 %{_mandir}/man3/cpg_leave.3*
 %{_mandir}/man3/cpg_mcast_joined.3*
 %{_mandir}/man3/cpg_membership_get.3*
+%{_mandir}/man3/cpg_local_get.3*
+%{_mandir}/man3/cpg_context_get.3*
+%{_mandir}/man3/cpg_context_set.3*
 %{_mandir}/man3/evs_dispatch.3*
 %{_mandir}/man3/evs_fd_get.3*
 %{_mandir}/man3/evs_finalize.3*
@@ -194,6 +193,155 @@
 %{_mandir}/man3/evs_membership_get.3*
 
 %changelog
+* Tue Oct 2 2007 Steven Dake <sdake at redhat.com> - 0.80.3-6
+- Resolved: rhbz#314641
+- Add upstream revision 1464 - Fix schedule of timer within the same thread to prevent deadlock
+
+* Mon Sep 24 2007 Steven Dake <sdake at redhat.com> - 0.80.3-5
+- Resolves: rhbz#302341
+- Add upstream revision 1455 - Fix loss of node joins in commit state resulting in looping of membership protocol.
+- Add upstream revision 1453 - Fix assertion if component registration occurs during certain phases of instantation.
+- Add upstream revision 1450 - Fix reference counting in lcr code so that lcr_ifact_release works properly.
+- Add upstream revision 1449 - Allow missing services in synchronization to not cause a segfault.k
+- Add upstream revision 1446 - Remove inadvertant commit of changes to totemsrp which happened when security changes were patched in revision 1426.
+- Add upstream revision 1426 - Patch to log security warnings when invalid identifier is used in message header for a totem header.
+
+* Tue Aug 28 2007 Steven Dake <sdake at redhat.com> - 0.80.3-4
+- Resolves: rhbz#251082
+- Add upstream revision 1423 - Fix synchronization defect resulting in segfault.
+- This is the fc6 build.
+ 
+* Tue Aug 1 2007 Steven Dake <sdake at redhat.com> - 0.80.3-3
+- Resolves: rhbz#209862
+- Resolves: rhbz#249506
+- Resolves: rhbz#249509
+- Resolves: rhbz#247733
+
+* Tue Aug 1 2007 Steven Dake <sdake at redhat.com> - 0.80.3-2
+- Resolves: rhbz#209862
+- Add upstream revision 1406 - Filter commit token when it is retransmitted.
+- Resolves: rhbz#249506
+- Add upstream revision 1407 - Reset consensus array on entering operational mode.
+- Resolves: rhbz#249509
+- Add upstream revision 1408 - Store the ring id information properly when it changes.
+- Resolves: rhbz#247733
+- Add upstream revision 1409 - Add subtractor to availability of message entries for the totem message queue
+- This is the rhel5 version of 0.80.3-0 with some upstream patches.
+
+* Tue Jun 26 2007 Steven Dake <sdake at redhat.com> - 0.80.3-1
+- Resolves: rhbz#243119
+- Resolves: rhbz#221190
+- Resolves: rhbz#224190
+- Resolves: rhbz#233892
+- Resolves: rhbz#236549
+- New upstream version including all previous revisions.
+- This is the fc6 version of 0.80.3-1.
+
+* Tue Jun 26 2007 Steven Dake <sdake at redhat.com> - 0.80.3-0
+- Resolves: rhbz#243119
+- Resolves: rhbz#221190
+- Resolves: rhbz#224190
+- Resolves: rhbz#233892
+- Resolves: rhbz#236549
+- New upstream version including all previous revisions.
+- This is the rhel5 version of 0.80.3-0.
+
+* Mon Dec 18 2006 Steven Dake <sdake at redhat.com> - 0.80.2-1
+- Resolves: rhbz#211357
+- This is the rhel5 version of 0.80.2-0.
+
+* Mon Dec 18 2006 Steven Dake <sdake at redhat.com> - 0.80.2-0
+- Resolves: rhbz#211357
+- New upstream version including all prevision revisions.
+- Fixes cpg ordering problem.
+- Fixes ia64 unaligned problem.
+- This is the fc6 version.
+
+* Tue Dec 5 2006 Steven Dake <sdake at redhat.com> - 0.80.1-22
+- Resolves: rhbz#216492
+- This is the rhel5 version of 0.80.1-21.
+
+* Tue Dec 5 2006 Steven Dake <sdake at redhat.com> - 0.80.1-21
+- Resolves: rhbz#216492
+- Add upstream revision 1319 - Increase outbound buffer size to 5000 messages.
+- Add upstream revision 1316 - Improvements on segfault logging.
+- This is the fc6 version.
+
+* Wed Nov 29 2006 Steven Dake <sdake at redhat.com> - 0.80.1-20
+- Resolves: rhbz#216492
+- Need new res line to commit.  This is the same as 0.80.1-18.
+
+* Wed Nov 29 2006 Steven Dake <sdake at redhat.com> - 0.80.1-19
+- This is the rhel5 version of 0.80.1-18.
+
+* Wed Nov 29 2006 Steven Dake <sdake at redhat.com> - 0.80.1-18
+- Add upstream revision 1315 - Fix compile error in libcpg.
+- Add upstream revision 1314 - Change rundir to /var/openais.
+- Add upstream revision 1313 - Flow control fixes for the CPG service.
+- Add upstream revision 1312 - Correct usage of ERR_LIBRARY to SA_AIS_ERR_LIBRARY.
+- Add upstream revision 1311 - handle case where POLLHUP and POLLERR are not uspported by OS.
+- Add upstream revision 1309 - set default downcheck value to 1000ms.
+- Add upstream revision 1308 - Remove invalid code and warnings detected by Intel compiler.
+- This is the fc6 version.
+
+* Tue Nov 14 2006 Steven Dake <sdake at redhat.com> - 0.80.1-17
+- This is the rhel5 version of 0.80.1-16.
+
+* Tue Nov 14 2006 Steven Dake <sdake at redhat.com> - 0.80.1-16
+- Add upstream revision 1307 - Remove flow control compile warning.
+- Add upstream revision 1306 - Make clean now really makes clean.
+- Add upstream revision 1305 - Set scheduler SCHED_RR to max priority available
+  in system.
+- Add upstream revision 1300 - Improve behavior of flow control of CPG service
+  during configuration changes.
+- This is the fc6 version.
+
+* Thu Nov 9 2006 Steven Dake <sdake at redhat.com> - 0.80.1-15
+- This is the rhel5 version of 0.80.1-14
+
+* Thu Nov 9 2006 Steven Dake <sdake at redhat.com> - 0.80.1-14
+- Add upstream revision 1296 - Remove compile warnings.
+- Add upstream revision 1295 - The totem membership protocol was changed to
+- Add upstream revision 1294 - modify location of ringid file to
+- Add upstream revision 1293 - flush output of debug messages on exit or segv.
+  /var/run/openais and chdir here so cores are saved there.
+  match specifications.
+- This is the fc6 version.
+
+* Fri Nov 3 2006 Steven Dake <sdake at redhat.com> - 0.80.1-13
+- Add upstream revision 1286 - Fix checkpoint unlink operation under certain
+  conditions.  This is the rhel5 version.
+
+* Fri Nov 3 2006 Steven Dake <sdake at redhat.com> - 0.80.1-12
+- Add upstream revision 1286 - Fix checkpoint unlink operation under certain
+  conditions.  This is the fc6 version.
+
+* Tue Oct 24 2006 Steven Dake <sdake at redhat.com> - 0.80.1-11
+- Add upstream revision 1284 - Initialize variables for checkpoint sync.
+
+* Tue Oct 24 2006 Steven Dake <sdake at redhat.com> - 0.80.1-10
+- Add %{?dist} to release field.
+
+* Tue Oct 24 2006 Steven Dake <sdake at redhat.com> - 0.80.1-9
+- Add upstream revision 1270 - Resolve IPC segfault.
+- Add upstream revision 1271 - Fix errors in ia64 alignment.
+- Add upstream revision 1275 - pthread_mutex_destroy cleanup patch.
+- Add upstream revision 1276 - Remove debug from makefile committed in revision 1275.
+- Add upstream revision 1277 - Formatting changes.
+- Add upstream revision 1278 - Patch testckpt to use proper seciton id size.
+- Add upstream revision 1279 - Call abort in sync service when processing is interrupted.
+- Add upstream revision 1282 - New generation checkpoint state machine.
+- Add upstream revision 1283 - Fix memory leaks.
+
+* Wed Oct 18 2006 Steven Dake <sdake at redhat.com> - 0.80.1-8
+- Add upstream revision 1268 - Align data in totem delivery on 4 byte
+  boundaries for ia64.
+- Add upstream revision 1269 - Increase default stack size for IPC connections
+  on ia64.
+
+* Mon Oct 16 2006 Steven Dake <sdake at redhat.com> - 0.80.1-7
+- Add upstream revision 1267 - rework of checkpoint synchronization.
+
 * Thu Oct 12 2006 Steven Dake <sdake at redhat.com> - 0.80.1-6
 - Add upstream revision 1260 - Allocate the retransmission token in
   instance initialize instead of totemsrp_initialize.


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/openais/F-7/sources,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- sources	16 Aug 2006 04:45:44 -0000	1.7
+++ sources	2 Oct 2007 18:34:33 -0000	1.8
@@ -1 +1 @@
-7414d683d51cb00c46456125c7e1b2b0  openais-0.80.1.tar.gz
+05ac1e10abd31f500641ff48ecf4238f  openais-0.80.3.tar.gz


--- revision-1223.patch DELETED ---


--- revision-1230.patch DELETED ---


--- revision-1245.patch DELETED ---


--- revision-1246.patch DELETED ---


--- revision-1248.patch DELETED ---


--- revision-1252.patch DELETED ---


--- revision-1256.patch DELETED ---


--- revision-1257.patch DELETED ---


--- revision-1258.patch DELETED ---


--- revision-1260.patch DELETED ---


--- revision-1261.patch DELETED ---


--- revision-1262.patch DELETED ---


--- revision-1263.patch DELETED ---


--- revision-1264.patch DELETED ---


--- revision-1265.patch DELETED ---




More information about the fedora-extras-commits mailing list