Hello community, here is the log from the commit of package openais checked in at Tue Nov 11 15:48:41 CET 2008. -------- --- openais/openais.changes 2008-10-09 15:05:15.000000000 +0200 +++ /mounts/work_src_done/STABLE/openais/openais.changes 2008-11-11 11:04:38.000000000 +0100 @@ -1,0 +2,9 @@ +Tue Nov 11 10:49:36 CET 2008 - abeekhof@suse.de + +- Update source tarball to r1661 + - Fix rare problem where checkpoint synchronization database could be thrown away. + - Fix commit token recieved_flg being incorrect in some rare circumstances + which caused message corruption. + - Fix a message lost during delivery which resulted in checkpoint segfault + +------------------------------------------------------------------- calling whatdependson for head-i586 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openais.spec ++++++ --- /var/tmp/diff_new_pack.Av1012/_old 2008-11-11 15:47:00.000000000 +0100 +++ /var/tmp/diff_new_pack.Av1012/_new 2008-11-11 15:47:00.000000000 +0100 @@ -31,7 +31,7 @@ Name: openais Summary: The OpenAIS Standards-Based Cluster Framework executive and APIs Version: 0.80.3 -Release: 11 +Release: 12 License: BSD 3-Clause Group: Productivity/Clustering/HA Url: http://www.openais.org/ @@ -253,18 +253,24 @@ %{_mandir}/man3/evs_*.3* %changelog +* Tue Nov 11 2008 abeekhof@suse.de +- Update source tarball to r1661 + - Fix rare problem where checkpoint synchronization database could be thrown away. + - Fix commit token recieved_flg being incorrect in some rare circumstances + which caused message corruption. + - Fix a message lost during delivery which resulted in checkpoint segfault * Thu Oct 09 2008 abeekhof@suse.de - Update source tarball to r1655 -- Remove IPC scheduling starvation -- Fix Library queue full messages in some conditions -- Make sanitizing generated nodeid's optional + - Remove IPC scheduling starvation + - Fix Library queue full messages in some conditions + - Make sanitizing generated nodeid's optional * Mon Sep 15 2008 abeekhof@suse.de - Create a libopenais2 subpackage as per policy * Thu Sep 11 2008 abeekhof@suse.de - Update source tarball to r1649 -- Add backports of objdb and service shutdown patches -- Modify the nodeid generation function to never return a negative value -- Include changes as a diff against upstream tarball + - Add backports of objdb and service shutdown patches + - Modify the nodeid generation function to never return a negative value + - Include changes as a diff against upstream tarball * Wed Aug 20 2008 abeekhof@suse.de - Ensure generated nodeid's are always positive integers * Mon Jul 21 2008 abeekhof@suse.de ++++++ openais.tar.gz ++++++ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/openais/exec/ckpt.c new/openais/exec/ckpt.c --- old/openais/exec/ckpt.c 2008-09-03 23:19:13.000000000 +0200 +++ new/openais/exec/ckpt.c 2008-11-10 08:51:25.000000000 +0100 @@ -94,6 +94,8 @@ }; enum sync_state { + SYNC_STATE_NOT_STARTED, + SYNC_STATE_STARTED, SYNC_STATE_GLOBALID, SYNC_STATE_CHECKPOINT, SYNC_STATE_REFCOUNT @@ -375,7 +377,7 @@ static mar_uint32_t global_ckpt_id = 0; -static enum sync_state my_sync_state; +static enum sync_state my_sync_state = SYNC_STATE_NOT_STARTED; static enum iteration_state my_iteration_state; @@ -766,6 +768,8 @@ mar_refcount_set_t refcount_set[PROCESSOR_COUNT_MAX] __attribute__((aligned(8))); }; +static int first_configuration = 1; + /* * Implementation */ @@ -778,7 +782,17 @@ { unsigned int i, j; unsigned int lowest_nodeid; - static int first_configuration = 1; + + memcpy (&my_saved_ring_id, ring_id, + sizeof (struct memb_ring_id)); + if (configuration_type != TOTEM_CONFIGURATION_REGULAR) { + return; + } + if (my_sync_state != SYNC_STATE_NOT_STARTED) { + return; + } + + my_sync_state = SYNC_STATE_STARTED; my_should_sync = 0; @@ -787,29 +801,25 @@ */ lowest_nodeid = 0xffffffff; - if (configuration_type == TOTEM_CONFIGURATION_REGULAR) { - for (i = 0; i < my_old_member_list_entries; i++) { - for (j = 0; j < member_list_entries; j++) { - if (my_old_member_list[i] == member_list[j]) { - if (lowest_nodeid > member_list[j]) { - lowest_nodeid = member_list[j]; - } + for (i = 0; i < my_old_member_list_entries; i++) { + for (j = 0; j < member_list_entries; j++) { + if (my_old_member_list[i] == member_list[j]) { + if (lowest_nodeid > member_list[j]) { + lowest_nodeid = member_list[j]; } } } - memcpy (&my_saved_ring_id, ring_id, - sizeof (struct memb_ring_id)); - memcpy (my_old_member_list, member_list, - sizeof (unsigned int) * member_list_entries); - my_old_member_list_entries = member_list_entries; + } + memcpy (my_old_member_list, member_list, + sizeof (unsigned int) * member_list_entries); + my_old_member_list_entries = member_list_entries; - if ((first_configuration) || - (lowest_nodeid == totempg_my_nodeid_get())) { + if ((first_configuration) || + (lowest_nodeid == totempg_my_nodeid_get())) { - my_should_sync = 1; - } - first_configuration = 0; + my_should_sync = 1; } + first_configuration = 0; } static struct checkpoint *checkpoint_find ( @@ -3691,6 +3701,9 @@ } } break; + + default: + assert (0); } LEAVE(); @@ -3711,7 +3724,7 @@ list_init (&sync_checkpoint_list_head); - my_sync_state = SYNC_STATE_CHECKPOINT; + my_sync_state = SYNC_STATE_NOT_STARTED; LEAVE(); } diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/openais/exec/totempg.c new/openais/exec/totempg.c --- old/openais/exec/totempg.c 2008-01-15 09:13:25.000000000 +0100 +++ new/openais/exec/totempg.c 2008-11-10 08:52:55.000000000 +0100 @@ -720,14 +720,16 @@ * Multicast a message */ static int mcast_msg ( - struct iovec *iovec, + struct iovec *iovec_in, int iov_len, int guarantee) { int res = 0; struct totempg_mcast mcast; struct iovec iovecs[3]; + struct iovec iovec[64]; int i; + int dest, src; int max_packet_size = 0; int copy_len = 0; int copy_base = 0; @@ -736,6 +738,18 @@ pthread_mutex_lock (&mcast_msg_mutex); totemmrp_new_msg_signal (); + /* + * Remove zero length iovectors from the list + */ + assert (iov_len < 64); + for (dest = 0, src = 0; src < iov_len; src++) { + if (iovec_in[src].iov_len) { + memcpy (&iovec[dest++], &iovec_in[src], + sizeof (struct iovec)); + } + } + iov_len = dest; + max_packet_size = TOTEMPG_PACKET_SIZE - (sizeof (unsigned short) * (mcast_packed_msg_count + 1)); diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/openais/exec/totemsrp.c new/openais/exec/totemsrp.c --- old/openais/exec/totemsrp.c 2008-02-26 08:59:21.000000000 +0100 +++ new/openais/exec/totemsrp.c 2008-11-10 08:52:19.000000000 +0100 @@ -619,7 +619,7 @@ list_init (&instance->token_callback_sent_listhead); - instance->my_received_flg = 0; + instance->my_received_flg = 1; instance->my_token_seq = SEQNO_START_TOKEN - 1; @@ -1678,7 +1678,7 @@ "entering OPERATIONAL state.\n"); instance->memb_state = MEMB_STATE_OPERATIONAL; - instance->my_received_flg = 0; + instance->my_received_flg = 1; return; } @@ -2626,6 +2626,8 @@ { struct srp_addr *addr; struct memb_commit_token_memb_entry *memb_list; + unsigned int high_aru; + unsigned int i; addr = (struct srp_addr *)commit_token->end_of_commit_token; memb_list = (struct memb_commit_token_memb_entry *)(addr + commit_token->addr_entries); @@ -2647,9 +2649,40 @@ 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; + memb_list[commit_token->memb_index].high_delivered = instance->my_high_delivered; + /* + * find high aru up to current memb_index for all matching ring ids + * if any ring id matching memb_index has aru less then high aru set + * received flag for that entry to false + */ + high_aru = memb_list[commit_token->memb_index].aru; + for (i = 0; i <= commit_token->memb_index; i++) { + if (memcmp (&memb_list[commit_token->memb_index].ring_id, + &memb_list[i].ring_id, + sizeof (struct memb_ring_id)) == 0) { + + if (sq_lt_compare (high_aru, memb_list[i].aru)) { + high_aru = memb_list[i].aru; + } + } + } + + for (i = 0; i <= commit_token->memb_index; i++) { + if (memcmp (&memb_list[commit_token->memb_index].ring_id, + &memb_list[i].ring_id, + sizeof (struct memb_ring_id)) == 0) { + + if (sq_lt_compare (memb_list[i].aru, high_aru)) { + memb_list[i].received_flg = 0; + if (i == commit_token->memb_index) { + instance->my_received_flg = 0; + } + } + } + } + commit_token->header.nodeid = instance->my_id.addr[0].nodeid; commit_token->memb_index += 1; assert (commit_token->memb_index <= commit_token->addr_entries); ++++++ pacemaker.diff ++++++ --- /var/tmp/diff_new_pack.Av1012/_old 2008-11-11 15:47:01.000000000 +0100 +++ /var/tmp/diff_new_pack.Av1012/_new 2008-11-11 15:47:01.000000000 +0100 @@ -369,20 +369,6 @@ static int clm_lib_exit_fn (void *conn) { struct clm_pd *clm_pd = (struct clm_pd *)openais_conn_private_data_get (conn); ---- whitetank-svn/exec/evs.c 2008-08-13 22:38:15.000000000 +0200 -+++ whitetank-dev/exec/evs.c 2008-10-09 14:59:50.000000000 +0200 -@@ -263,11 +263,6 @@ static int evs_lib_init_fn (void *conn) - list_init (&evs_pd->list); - list_add (&evs_pd->list, &confchg_notify); - -- openais_dispatch_send ( -- conn, -- &res_evs_confchg_callback, -- sizeof (res_evs_confchg_callback)); -- - return (0); - } - --- whitetank-svn/exec/main.c 2008-08-13 22:38:15.000000000 +0200 +++ whitetank-dev/exec/main.c 2008-08-13 23:05:54.000000000 +0200 @@ -92,6 +92,8 @@ static struct totem_logging_configuratio @@ -564,7 +550,7 @@ totem_config.vsf_type); --- whitetank-svn/exec/objdb.c 2008-08-13 22:38:15.000000000 +0200 -+++ whitetank-dev/exec/objdb.c 2008-08-13 22:57:42.000000000 +0200 ++++ whitetank-dev/exec/objdb.c 2008-10-30 08:55:17.000000000 +0100 @@ -52,10 +52,13 @@ struct object_instance { void *object_name; int object_name_len; @@ -794,7 +780,7 @@ + } + } + -+ if (new_value_len <= object_key->value_len) { ++ if (new_value_len != object_key->value_len) { + void *replacement_value; + replacement_value = malloc(new_value_len); + if (!replacement_value) @@ -1583,6 +1569,35 @@ #define HZ 100 /* 10ms */ #endif +--- whitetank-svn/exec/totem.h 2008-10-09 14:41:04.000000000 +0200 ++++ whitetank-dev/exec/totem.h 2008-10-24 13:44:07.000000000 +0200 +@@ -44,26 +44,6 @@ + #define SEND_THREADS_MAX 16 + #define INTERFACE_MAX 2 + +-/* +- * Array location of various timeouts as +- * specified in openais.conf. The last enum +- * specifies the size of the timeouts array and +- * needs to remain the last item in the list. +- */ +-enum { +- TOTEM_RETRANSMITS_BEFORE_LOSS, +- TOTEM_TOKEN, +- TOTEM_RETRANSMIT_TOKEN, +- TOTEM_HOLD_TOKEN, +- TOTEM_JOIN, +- TOTEM_CONSENSUS, +- TOTEM_MERGE, +- TOTEM_DOWNCHECK, +- TOTEM_FAIL_RECV_CONST, +- +- MAX_TOTEM_TIMEOUTS /* Last item */ +-} totem_timeout_types; +- + struct totem_interface { + struct totem_ip_address bindnet; + struct totem_ip_address boundto; --- whitetank-svn/exec/totemconfig.c 2008-10-09 14:41:04.000000000 +0200 +++ whitetank-dev/exec/totemconfig.c 2008-10-09 14:58:51.000000000 +0200 @@ -52,10 +52,7 @@ @@ -1597,82 +1612,6 @@ #define TOKEN_RETRANSMITS_BEFORE_LOSS_CONST 4 #define TOKEN_TIMEOUT 1000 ---- whitetank-svn/exec/totemsrp.c 2008-08-13 22:38:15.000000000 +0200 -+++ whitetank-dev/exec/totemsrp.c 2008-10-09 14:59:50.000000000 +0200 -@@ -619,7 +619,7 @@ void totemsrp_instance_initialize (struc - - list_init (&instance->token_callback_sent_listhead); - -- instance->my_received_flg = 0; -+ instance->my_received_flg = 1; - - instance->my_token_seq = SEQNO_START_TOKEN - 1; - -@@ -1678,7 +1678,7 @@ static void memb_state_operational_enter - "entering OPERATIONAL state.\n"); - instance->memb_state = MEMB_STATE_OPERATIONAL; - -- instance->my_received_flg = 0; -+ instance->my_received_flg = 1; - - return; - } -@@ -2626,6 +2626,8 @@ static void memb_state_commit_token_upda - { - struct srp_addr *addr; - struct memb_commit_token_memb_entry *memb_list; -+ unsigned int high_aru; -+ unsigned int i; - - addr = (struct srp_addr *)commit_token->end_of_commit_token; - memb_list = (struct memb_commit_token_memb_entry *)(addr + commit_token->addr_entries); -@@ -2647,9 +2649,45 @@ static void memb_state_commit_token_upda - instance->my_received_flg = - (instance->my_aru == instance->my_high_seq_received); - -- memb_list[commit_token->memb_index].high_delivered = instance->my_high_delivered; -+log_printf (instance->totemsrp_log_level_notice, "%d %d %d\n", instance->my_aru, instance->my_high_seq_received, instance->my_received_flg); -+ - memb_list[commit_token->memb_index].received_flg = instance->my_received_flg; - -+ memb_list[commit_token->memb_index].high_delivered = instance->my_high_delivered; -+ /* -+ * find high aru up to current memb_index for all matching ring ids -+ * if any ring id matching memb_index has aru less then high aru set -+ * received flag for that entry to false -+ * TODO do proper window comparisons -+ */ -+ high_aru = memb_list[commit_token->memb_index].aru; -+ for (i = 0; i <= commit_token->memb_index; i++) { -+ if (memcmp (&memb_list[commit_token->memb_index].ring_id, -+ &memb_list[i].ring_id, -+ sizeof (struct memb_ring_id)) == 0) { -+ -+ if (high_aru < memb_list[i].aru) { -+ high_aru = memb_list[i].aru; -+ } -+ } -+ } -+ -+ for (i = 0; i <= commit_token->memb_index; i++) { -+ if (memcmp (&memb_list[commit_token->memb_index].ring_id, -+ &memb_list[i].ring_id, -+ sizeof (struct memb_ring_id)) == 0) { -+ -+ if (high_aru > memb_list[i].aru) { -+ memb_list[i].received_flg = 0; -+ if (i == commit_token->memb_index) { -+ instance->my_received_flg = 0; -+ } -+log_printf (instance->totemsrp_log_level_notice, "setting received flag to false for index %d\n", i); -+ } -+ } -+ } -+ -+ - commit_token->header.nodeid = instance->my_id.addr[0].nodeid; - commit_token->memb_index += 1; - assert (commit_token->memb_index <= commit_token->addr_entries); --- whitetank-svn/include/cfg.h 2008-08-13 22:38:14.000000000 +0200 +++ whitetank-dev/include/cfg.h 2008-08-13 22:55:34.000000000 +0200 @@ -140,6 +140,18 @@ openais_cfg_ring_reenable ( @@ -1742,7 +1681,7 @@ AIS_AMF_ADMINISTRATIVETARGET_SERVICEUNIT = 0, AIS_AMF_ADMINISTRATIVETARGET_SERVICEGROUP = 1, --- whitetank-svn/init/generic 1970-01-01 01:00:00.000000000 +0100 -+++ whitetank-dev/init/generic 2008-08-13 23:05:54.000000000 +0200 ++++ whitetank-dev/init/generic 2008-11-11 10:42:32.000000000 +0100 @@ -0,0 +1,146 @@ +#!/bin/sh +# @@ -1913,6 +1852,56 @@ } static void ld_library_path_build (void) +--- whitetank-svn/lib/Makefile 2008-08-13 22:38:16.000000000 +0200 ++++ whitetank-dev/lib/Makefile 2008-10-24 13:40:01.000000000 +0200 +@@ -55,35 +55,37 @@ libSaClm.a: util.o clm.o + + ifeq (${OPENAIS_COMPAT}, DARWIN) + ++DARWIN_OPTS=-dynamiclib -bind_at_load -current_version 2.0.0 -compatibility_version 2.0.0 ++ + libSaClm.so.2.0.0: util.o clm.o +- $(CC) $(LDFLAGS) -bundle -bind_at_load util.o clm.o -o $@ ++ $(CC) $(LDFLAGS) $(DARWIN_OPTS) util.o clm.o -o $@ + + libSaAmf.so.2.0.0: util.o amf.o +- $(CC) $(LDFLAGS) -bundle -bind_at_load util.o amf.o -o $@ ++ $(CC) $(LDFLAGS) $(DARWIN_OPTS) util.o amf.o -o $@ + + libSaCkpt.so.2.0.0: util.o ckpt.o +- $(CC) $(LDFLAGS) -bundle -bind_at_load util.o ckpt.o -o $@ ++ $(CC) $(LDFLAGS) $(DARWIN_OPTS) util.o ckpt.o -o $@ + + libSaEvt.so.2.0.0: util.o evt.o +- $(CC) $(LDFLAGS) -bundle -bind_at_load util.o evt.o -o $@ ++ $(CC) $(LDFLAGS) $(DARWIN_OPTS) util.o evt.o -o $@ + + libSaLck.so.2.0.0: util.o lck.o +- $(CC) $(LDFLAGS) -bundle -bind_at_load util.o lck.o -o $@ ++ $(CC) $(LDFLAGS) $(DARWIN_OPTS) util.o lck.o -o $@ + + libSaMsg.so.2.0.0: util.o msg.o +- $(CC) $(LDFLAGS) -bundle -bind_at_load util.o msg.o -o $@ ++ $(CC) $(LDFLAGS) $(DARWIN_OPTS) util.o msg.o -o $@ + + libais.so.2.0.0: util.o amf.o clm.o ckpt.o evt.o lck.o msg.o +- $(CC) $(LDFLAGS) -bundle -bind_at_load util.o amf.o clm.o ckpt.o evt.o -o $@ ++ $(CC) $(LDFLAGS) $(DARWIN_OPTS) util.o amf.o clm.o ckpt.o evt.o -o $@ + + libevs.so.2.0.0: util.o evs.o +- $(CC) $(LDFLAGS) -bundle -bind_at_load util.o evs.o -o $@ ++ $(CC) $(LDFLAGS) $(DARWIN_OPTS) util.o evs.o -o $@ + + libcpg.so.2.0.0: util.o cpg.o +- $(CC) -bundle -bind_at_load util.o cpg.o -o $@ ++ $(CC) $(DARWIN_OPTS) util.o cpg.o -o $@ + + libcfg.so.2.0.0: util.o cfg.o +- $(CC) -bundle -bind_at_load util.o cfg.o -o $@ ++ $(CC) $(DARWIN_OPTS) util.o cfg.o -o $@ + + else + --- whitetank-svn/lib/cfg.c 2008-08-13 22:38:16.000000000 +0200 +++ whitetank-dev/lib/cfg.c 2008-08-13 22:55:34.000000000 +0200 @@ -458,6 +458,81 @@ openais_cfg_ring_reenable ( @@ -1998,7 +1987,7 @@ openais_cfg_handle_t cfg_handle, SaUint8T trackFlags, --- whitetank-svn/lib/libSaMsg.versions 2008-08-13 22:38:16.000000000 +0200 -+++ whitetank-dev/lib/libSaMsg.versions 2008-08-13 23:05:54.000000000 +0200 ++++ whitetank-dev/lib/libSaMsg.versions 2008-10-15 15:25:24.000000000 +0200 @@ -24,18 +24,18 @@ OPENAIS_MSG_B.01.01 { saMsgMessageCancel; saMsgMessageReply; @@ -2006,6 +1995,9 @@ + saSendReceiveReply; + saServiceConnect; + saRecvRetry; ++ saSendMsgReceiveReply; ++ saSendMsgRetry; ++ saSendRetry; local: saHandleCreate; saHandleDestroy; @@ -2013,10 +2005,10 @@ saHandleInstancePut; saPollRetry; - saRecvRetry; - saSendMsgReceiveReply; - saSendMsgRetry; +- saSendMsgReceiveReply; +- saSendMsgRetry; - saSendReceiveReply; - saSendRetry; +- saSendRetry; - saServiceConnect; saVersionVerify; clustTimeNow; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org