Accepting request 42251 from network:ha-clustering:Factory

Copy from network:ha-clustering:Factory/corosync based on submit request 42251 from user tserong

OBS-URL: https://build.opensuse.org/request/show/42251
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/corosync?expand=0&rev=1
This commit is contained in:
OBS User autobuild 2010-06-29 16:10:39 +00:00 committed by Git OBS Bridge
commit aa4184eba9
29 changed files with 1584 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

3
corosync-1.2.1.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d919d9817c4cde9e3d38e6f79731d9e1cd53485c6160bd253d888fa58a87a43d
size 668446

View File

@ -0,0 +1,12 @@
diff -ur corosync-1.2.0.orig//conf/corosync.conf.example corosync-1.2.0/conf/corosync.conf.example
--- corosync-1.2.0.orig//conf/corosync.conf.example 2009-06-26 02:25:52.000000000 +0200
+++ corosync-1.2.0/conf/corosync.conf.example 2010-02-08 15:51:10.783160000 +0100
@@ -20,7 +20,7 @@
to_syslog: yes
logfile: /tmp/corosync.log
debug: off
- timestamp: on
+ timestamp: off
logger_subsys {
subsys: AMF
debug: off

55
corosync-cs2729.patch Normal file
View File

@ -0,0 +1,55 @@
Index: trunk/services/Makefile.am
===================================================================
--- trunk/services/Makefile.am (revision 2728)
+++ trunk/services/Makefile.am (revision 2729)
@@ -68,10 +68,10 @@
else
quorum_%.lcrso: %.o
- $(CC) $(CFLAGS) -shared -Wl,-soname=$@ $^ -o $@
+ $(CC) $(CFLAGS) $(COVERAGE_LCRSO_EXTRA_LDFLAGS) -shared -Wl,-soname=$@ $^ -o $@
service_%.lcrso: %.o
- $(CC) $(CFLAGS) -shared -Wl,-soname=$@ $^ -o $@
+ $(CC) $(CFLAGS) $(COVERAGE_LCRSO_EXTRA_LDFLAGS) -shared -Wl,-soname=$@ $^ -o $@
endif
endif
Index: trunk/exec/Makefile.am
===================================================================
--- trunk/exec/Makefile.am (revision 2728)
+++ trunk/exec/Makefile.am (revision 2729)
@@ -122,7 +122,7 @@
else
%.lcrso: %.o
- $(CC) $(CFLAGS) -shared -Wl,-soname=$@ $^ -o $@
+ $(CC) $(CFLAGS) $(COVERAGE_LCRSO_EXTRA_LDFLAGS) -shared -Wl,-soname=$@ $^ -o $@
libtotem_pg.so.$(SONAME): $(TOTEM_OBJS)
$(CC) -shared -o $@ \
Index: trunk/configure.ac
===================================================================
--- trunk/configure.ac (revision 2728)
+++ trunk/configure.ac (revision 2729)
@@ -390,10 +390,12 @@
OPT_CFLAGS="-O0"
COVERAGE_CFLAGS="-ftest-coverage -fprofile-arcs"
COVERAGE_LDFLAGS="-ftest-coverage -fprofile-arcs"
+ COVERAGE_LCRSO_EXTRA_LDFLAGS="-rdynamic"
PACKAGE_FEATURES="$PACKAGE_FEATURES coverage"
else
COVERAGE_CFLAGS=""
COVERAGE_LDFLAGS=""
+ COVERAGE_LCRSO_EXTRA_LDFLAGS=""
fi
@@ -437,6 +439,6 @@
AC_SUBST([SONAME])
AC_SUBST([CPG_SONAME])
-
+AC_SUBST([COVERAGE_LCRSO_EXTRA_LDFLAGS])
AC_SUBST([OS_DYFLAGS])
AC_SUBST([OS_LDL])

13
corosync-cs2731.patch Normal file
View File

@ -0,0 +1,13 @@
Index: trunk/exec/service.c
===================================================================
--- trunk/exec/service.c (revision 2730)
+++ trunk/exec/service.c (revision 2731)
@@ -436,7 +436,7 @@
(void *)&service_id, NULL);
if(service_id != NULL
- && *service_id > 0
+ && *service_id >= 0
&& *service_id < SERVICE_HANDLER_MAXIMUM_COUNT
&& ais_service[*service_id] != NULL) {

45
corosync-cs2739.patch Normal file
View File

@ -0,0 +1,45 @@
Index: trunk/exec/util.h
===================================================================
--- trunk/exec/util.h (revision 2738)
+++ trunk/exec/util.h (revision 2739)
@@ -44,23 +44,23 @@
extern cs_time_t clust_time_now(void);
enum e_ais_done {
- AIS_DONE_EXIT = -1,
- AIS_DONE_UID_DETERMINE = -2,
- AIS_DONE_GID_DETERMINE = -3,
- AIS_DONE_MEMPOOL_INIT = -4,
- AIS_DONE_FORK = -5,
- AIS_DONE_LIBAIS_SOCKET = -6,
- AIS_DONE_LIBAIS_BIND = -7,
- AIS_DONE_READKEY = -8,
- AIS_DONE_MAINCONFIGREAD = -9,
- AIS_DONE_LOGSETUP = -10,
- AIS_DONE_AMFCONFIGREAD = -11,
- AIS_DONE_DYNAMICLOAD = -12,
- AIS_DONE_OBJDB = -13,
- AIS_DONE_INIT_SERVICES = -14,
- AIS_DONE_OUT_OF_MEMORY = -15,
- AIS_DONE_FATAL_ERR = -16,
- AIS_DONE_DIR_NOT_PRESENT = -17
+ AIS_DONE_EXIT = 0,
+ AIS_DONE_UID_DETERMINE = 1,
+ AIS_DONE_GID_DETERMINE = 2,
+ AIS_DONE_MEMPOOL_INIT = 3,
+ AIS_DONE_FORK = 4,
+ AIS_DONE_LIBAIS_SOCKET = 5,
+ AIS_DONE_LIBAIS_BIND = 6,
+ AIS_DONE_READKEY = 7,
+ AIS_DONE_MAINCONFIGREAD = 8,
+ AIS_DONE_LOGSETUP = 9,
+ AIS_DONE_AMFCONFIGREAD = 10,
+ AIS_DONE_DYNAMICLOAD = 11,
+ AIS_DONE_OBJDB = 12,
+ AIS_DONE_INIT_SERVICES = 13,
+ AIS_DONE_OUT_OF_MEMORY = 14,
+ AIS_DONE_FATAL_ERR = 15,
+ AIS_DONE_DIR_NOT_PRESENT = 16
};
/*

60
corosync-cs2746.patch Normal file
View File

@ -0,0 +1,60 @@
Index: trunk/exec/objdb.c
===================================================================
--- trunk/exec/objdb.c (revision 2745)
+++ trunk/exec/objdb.c (revision 2746)
@@ -1087,6 +1087,10 @@
}
hdb_handle_put (&object_instance_database, object_handle);
+ if (res == 0) {
+ object_key_changed_notification (object_handle, key_name, key_len,
+ object_key->value, object_key->value_len, OBJECT_KEY_REPLACED);
+ }
objdb_rdunlock();
return (res);
@@ -1170,6 +1174,10 @@
}
hdb_handle_put (&object_instance_database, object_handle);
+ if (res == 0) {
+ object_key_changed_notification (object_handle, key_name, key_len,
+ object_key->value, object_key->value_len, OBJECT_KEY_REPLACED);
+ }
objdb_rdunlock();
return (res);
@@ -1244,6 +1252,7 @@
struct object_key *object_key = NULL;
struct list_head *list;
int found = 0;
+ int value_changed = 0;
objdb_rdlock();
@@ -1308,8 +1317,14 @@
free(object_key->value);
object_key->value = replacement_value;
}
- memcpy(object_key->value, new_value, new_value_len);
- object_key->value_len = new_value_len;
+ if (memcmp (object_key->value, new_value, new_value_len) == 0) {
+ value_changed = 0;
+ }
+ else {
+ memcpy(object_key->value, new_value, new_value_len);
+ object_key->value_len = new_value_len;
+ value_changed = 1;
+ }
}
else {
ret = -1;
@@ -1317,7 +1332,7 @@
}
hdb_handle_put (&object_instance_database, object_handle);
- if (ret == 0) {
+ if (ret == 0 && value_changed) {
object_key_changed_notification (object_handle, key_name, key_len,
new_value, new_value_len, OBJECT_KEY_REPLACED);
}

89
corosync-cs2748.patch Normal file
View File

@ -0,0 +1,89 @@
Index: trunk/lib/coroipcc.c
===================================================================
--- trunk/lib/coroipcc.c (revision 2747)
+++ trunk/lib/coroipcc.c (revision 2748)
@@ -654,42 +654,42 @@
goto error_connect;
}
- res = memory_map (
+ sys_res = memory_map (
control_map_path,
"control_buffer-XXXXXX",
(void *)&ipc_instance->control_buffer,
8192);
- if (res == -1) {
+ if (sys_res == -1) {
res = CS_ERR_LIBRARY;
goto error_connect;
}
- res = memory_map (
+ sys_res = memory_map (
request_map_path,
"request_buffer-XXXXXX",
(void *)&ipc_instance->request_buffer,
request_size);
- if (res == -1) {
+ if (sys_res == -1) {
res = CS_ERR_LIBRARY;
goto error_request_buffer;
}
- res = memory_map (
+ sys_res = memory_map (
response_map_path,
"response_buffer-XXXXXX",
(void *)&ipc_instance->response_buffer,
response_size);
- if (res == -1) {
+ if (sys_res == -1) {
res = CS_ERR_LIBRARY;
goto error_response_buffer;
}
- res = circular_memory_map (
+ sys_res = circular_memory_map (
dispatch_map_path,
"dispatch_buffer-XXXXXX",
(void *)&ipc_instance->dispatch_buffer,
dispatch_size);
- if (res == -1) {
+ if (sys_res == -1) {
res = CS_ERR_LIBRARY;
goto error_dispatch_buffer;
}
@@ -699,7 +699,6 @@
sem_init (&ipc_instance->control_buffer->sem1, 1, 0);
sem_init (&ipc_instance->control_buffer->sem2, 1, 0);
#else
-
/*
* Allocate a semaphore segment
*/
@@ -718,18 +717,21 @@
* an existing shared memory segment for which we have access
*/
if (errno != EEXIST && errno != EACCES) {
+ res = CS_ERR_LIBRARY;
goto error_exit;
}
}
semun.val = 0;
- res = semctl (ipc_instance->semid, 0, SETVAL, semun);
- if (res != 0) {
+ sys_res = semctl (ipc_instance->semid, 0, SETVAL, semun);
+ if (sys_res != 0) {
+ res = CS_ERR_LIBRARY;
goto error_exit;
}
- res = semctl (ipc_instance->semid, 1, SETVAL, semun);
- if (res != 0) {
+ sys_res = semctl (ipc_instance->semid, 1, SETVAL, semun);
+ if (sys_res != 0) {
+ res = CS_ERR_LIBRARY;
goto error_exit;
}
#endif

123
corosync-cs2754.patch Normal file
View File

@ -0,0 +1,123 @@
Index: trunk/lib/cfg.c
===================================================================
--- trunk/lib/cfg.c (revision 2753)
+++ trunk/lib/cfg.c (revision 2754)
@@ -203,7 +203,7 @@
switch (dispatch_data->id) {
case MESSAGE_RES_CFG_TESTSHUTDOWN:
if (callbacks.corosync_cfg_shutdown_callback == NULL) {
- continue;
+ break;
}
res_lib_cfg_testshutdown = (struct res_lib_cfg_testshutdown *)dispatch_data;
Index: trunk/lib/cpg.c
===================================================================
--- trunk/lib/cpg.c (revision 2753)
+++ trunk/lib/cpg.c (revision 2754)
@@ -339,7 +339,7 @@
switch (dispatch_data->id) {
case MESSAGE_RES_CPG_DELIVER_CALLBACK:
if (callbacks.cpg_deliver_fn == NULL) {
- continue;
+ break;
}
res_cpg_deliver_callback = (struct res_lib_cpg_deliver_callback *)dispatch_data;
@@ -358,7 +358,7 @@
case MESSAGE_RES_CPG_CONFCHG_CALLBACK:
if (callbacks.cpg_confchg_fn == NULL) {
- continue;
+ break;
}
res_cpg_confchg_callback = (struct res_lib_cpg_confchg_callback *)dispatch_data;
Index: trunk/lib/votequorum.c
===================================================================
--- trunk/lib/votequorum.c (revision 2753)
+++ trunk/lib/votequorum.c (revision 2754)
@@ -742,7 +742,7 @@
case MESSAGE_RES_VOTEQUORUM_NOTIFICATION:
if (callbacks.votequorum_notify_fn == NULL) {
- continue;
+ break;
}
res_lib_votequorum_notification = (struct res_lib_votequorum_notification *)dispatch_data;
@@ -756,7 +756,7 @@
case MESSAGE_RES_VOTEQUORUM_EXPECTEDVOTES_NOTIFICATION:
if (callbacks.votequorum_expectedvotes_notify_fn == NULL) {
- continue;
+ break;
}
res_lib_votequorum_expectedvotes_notification = (struct res_lib_votequorum_expectedvotes_notification *)dispatch_data;
Index: trunk/lib/quorum.c
===================================================================
--- trunk/lib/quorum.c (revision 2753)
+++ trunk/lib/quorum.c (revision 2754)
@@ -387,7 +387,7 @@
case MESSAGE_RES_QUORUM_NOTIFICATION:
if (callbacks.quorum_notify_fn == NULL) {
- continue;
+ break;
}
res_lib_quorum_notification = (struct res_lib_quorum_notification *)dispatch_data;
Index: trunk/lib/confdb.c
===================================================================
--- trunk/lib/confdb.c (revision 2753)
+++ trunk/lib/confdb.c (revision 2754)
@@ -341,7 +341,7 @@
switch (dispatch_data->id) {
case MESSAGE_RES_CONFDB_KEY_CHANGE_CALLBACK:
if (callbacks.confdb_key_change_notify_fn == NULL) {
- continue;
+ break;
}
res_key_changed_pt = (struct res_lib_confdb_key_change_callback *)dispatch_data;
@@ -360,7 +360,7 @@
case MESSAGE_RES_CONFDB_OBJECT_CREATE_CALLBACK:
if (callbacks.confdb_object_create_change_notify_fn == NULL) {
- continue;
+ break;
}
res_object_created_pt = (struct res_lib_confdb_object_create_callback *)dispatch_data;
@@ -374,7 +374,7 @@
case MESSAGE_RES_CONFDB_OBJECT_DESTROY_CALLBACK:
if (callbacks.confdb_object_delete_change_notify_fn == NULL) {
- continue;
+ break;
}
res_object_destroyed_pt = (struct res_lib_confdb_object_destroy_callback *)dispatch_data;
Index: trunk/lib/evs.c
===================================================================
--- trunk/lib/evs.c (revision 2753)
+++ trunk/lib/evs.c (revision 2754)
@@ -279,7 +279,7 @@
switch (dispatch_data->id) {
case MESSAGE_RES_EVS_DELIVER_CALLBACK:
if (callbacks.evs_deliver_fn == NULL) {
- continue;
+ break;
}
res_evs_deliver_callback = (struct res_evs_deliver_callback *)dispatch_data;
@@ -292,7 +292,7 @@
case MESSAGE_RES_EVS_CONFCHG_CALLBACK:
if (callbacks.evs_confchg_fn == NULL) {
- continue;
+ break;
}
res_evs_confchg_callback = (struct res_evs_confchg_callback *)dispatch_data;

15
corosync-cs2756.patch Normal file
View File

@ -0,0 +1,15 @@
Index: trunk/man/corosync.conf.5
===================================================================
--- trunk/man/corosync.conf.5 (revision 2755)
+++ trunk/man/corosync.conf.5 (revision 2756)
@@ -119,6 +119,10 @@
This specifies the UDP port number. It is possible to use the same multicast
address on a network with the corosync services configured for different
UDP ports.
+Please note corosync uses two UDP ports mcastport (for mcast receives) and
+mcastport - 1 (for mcast sends).
+If you have multiple clusters on the same network using the same mcastaddr
+please configure the mcastports with a gap.
.PP
.PP

35
corosync-cs2767.patch Normal file
View File

@ -0,0 +1,35 @@
Index: trunk/exec/vsf_ykd.c
===================================================================
--- trunk/exec/vsf_ykd.c (revision 2766)
+++ trunk/exec/vsf_ykd.c (revision 2767)
@@ -193,7 +193,7 @@
struct ykd_header header;
int res;
- header.id = YKD_HEADER_SENDSTATE;
+ header.id = YKD_HEADER_ATTEMPT;
iovec.iov_base = (char *)&header;
iovec.iov_len = sizeof (struct ykd_header);
@@ -343,6 +343,7 @@
int all_received = 1;
int state_position = 0;
int i;
+ struct ykd_header *header = (struct ykd_header *)msg;
char *msg_state = (char *)msg + sizeof (struct ykd_header);
/*
@@ -390,6 +391,13 @@
}
}
+ /*
+ * Ignore messages from a different state
+ */
+ if ((ykd_mode == YKD_MODE_SENDSTATE && header->id == YKD_HEADER_ATTEMPT) ||
+ (ykd_mode == YKD_MODE_ATTEMPT && header->id == YKD_HEADER_SENDSTATE))
+ return;
+
switch (ykd_mode) {
case YKD_MODE_SENDSTATE:
assert (msg_len > sizeof (struct ykd_header));

54
corosync-cs2785.patch Normal file
View File

@ -0,0 +1,54 @@
Index: corosync-1.2.1/services/cpg.c
===================================================================
--- corosync-1.2.1.orig/services/cpg.c
+++ corosync-1.2.1/services/cpg.c
@@ -414,6 +414,27 @@ struct req_exec_cpg_downlist {
static struct req_exec_cpg_downlist g_req_exec_cpg_downlist;
+static int memb_list_remove_value (unsigned int *list,
+ size_t list_entries, int value)
+{
+ int j;
+ int found = 0;
+
+ for (j = 0; j < list_entries; j++) {
+ if (list[j] == value) {
+ /* mark next values to be copied down */
+ found = 1;
+ }
+ else if (found) {
+ list[j-1] = list[j];
+ }
+ }
+ if (found)
+ return (list_entries - 1);
+ else
+ return list_entries;
+}
+
static void cpg_sync_init_v2 (
const unsigned int *trans_list,
size_t trans_list_entries,
@@ -432,6 +453,21 @@ static void cpg_sync_init_v2 (
sizeof (unsigned int));
my_member_list_entries = member_list_entries;
+ for (i = 0; i < my_old_member_list_entries; i++) {
+ found = 0;
+ for (j = 0; j < trans_list_entries; j++) {
+ if (my_old_member_list[i] == trans_list[j]) {
+ found = 1;
+ break;
+ }
+ }
+ if (found == 0) {
+ my_member_list_entries = memb_list_remove_value (
+ my_member_list, my_member_list_entries,
+ my_old_member_list[i]);
+ }
+ }
+
for (i = 0; i < my_member_list_entries; i++) {
if (my_member_list[i] < lowest_nodeid) {
lowest_nodeid = my_member_list[i];

76
corosync-cs2787.patch Normal file
View File

@ -0,0 +1,76 @@
Index: trunk/exec/objdb.c
===================================================================
--- trunk/exec/objdb.c (revision 2786)
+++ trunk/exec/objdb.c (revision 2787)
@@ -1316,6 +1316,8 @@
goto error_exit;
free(object_key->value);
object_key->value = replacement_value;
+ memset (object_key->value, 0, new_value_len);
+ object_key->value_len = new_value_len;
}
if (memcmp (object_key->value, new_value, new_value_len) == 0) {
value_changed = 0;
Index: trunk/exec/coroipcs.c
===================================================================
--- trunk/exec/coroipcs.c (revision 2786)
+++ trunk/exec/coroipcs.c (revision 2787)
@@ -727,6 +727,7 @@
mar_res_setup_t res_setup;
unsigned int res;
+ memset (&res_setup, 0, sizeof (res_setup));
res_setup.error = error;
retry_send:
Index: trunk/exec/logsys.c
===================================================================
--- trunk/exec/logsys.c (revision 2786)
+++ trunk/exec/logsys.c (revision 2787)
@@ -731,6 +731,8 @@
int log_msg;
char buf[COMBINE_BUFFER_SIZE];
+ memset (buf, 0, sizeof (buf));
+
/*
* Signal wthread_create that the initialization process may continue
*/
@@ -1111,6 +1113,7 @@
return (-1);
}
+ memset (flt_data, 0, flt_real_size);
/*
* flt_data_size tracks data by ints and not bytes/chars.
*
Index: trunk/exec/main.c
===================================================================
--- trunk/exec/main.c (revision 2786)
+++ trunk/exec/main.c (revision 2787)
@@ -655,13 +655,12 @@
mtt_rx_token = (total_mtt_rx_token / token_count);
avg_backlog_calc = (total_backlog_calc / token_count);
avg_token_holdtime = (total_token_holdtime / token_count);
-
objdb->object_key_replace (stats->mrp->srp->hdr.handle,
"mtt_rx_token", strlen("mtt_rx_token"),
&mtt_rx_token, sizeof (mtt_rx_token));
objdb->object_key_replace (stats->mrp->srp->hdr.handle,
"avg_token_workload", strlen("avg_token_workload"),
- &avg_token_holdtime, sizeof (avg_backlog_calc));
+ &avg_token_holdtime, sizeof (avg_token_holdtime));
objdb->object_key_replace (stats->mrp->srp->hdr.handle,
"avg_backlog_calc", strlen("avg_backlog_calc"),
&avg_backlog_calc, sizeof (avg_backlog_calc));
@@ -782,8 +781,8 @@
"avg_token_workload", &zero_32,
sizeof (zero_32), OBJDB_VALUETYPE_UINT32);
objdb->object_key_create_typed (stats->mrp->srp->hdr.handle,
- "avg_backlog_calc", &zero_64,
- sizeof (zero_64), OBJDB_VALUETYPE_UINT64);
+ "avg_backlog_calc", &zero_32,
+ sizeof (zero_32), OBJDB_VALUETYPE_UINT32);
objdb->object_key_create_typed (stats->mrp->srp->hdr.handle,
"rx_msg_dropped", &zero_64,
sizeof (zero_64), OBJDB_VALUETYPE_UINT64);

25
corosync-cs2789.patch Normal file
View File

@ -0,0 +1,25 @@
Index: trunk/lib/coroipcc.c
===================================================================
--- trunk/lib/coroipcc.c (revision 2788)
+++ trunk/lib/coroipcc.c (revision 2789)
@@ -478,11 +478,18 @@
pfd.fd = ipc_instance->fd;
pfd.events = 0;
- poll (&pfd, 1, 0);
- if (pfd.revents == POLLERR || pfd.revents == POLLHUP) {
+ res = poll (&pfd, 1, 0);
+
+ if (res == -1 && errno != EINTR) {
return (CS_ERR_LIBRARY);
}
+ if (res == 1) {
+ if (pfd.revents == POLLERR || pfd.revents == POLLHUP || pfd.revents == POLLNVAL) {
+ return (CS_ERR_LIBRARY);
+ }
+ }
+
goto retry_semwait;
}

13
corosync-cs2791.patch Normal file
View File

@ -0,0 +1,13 @@
Index: trunk/man/corosync.conf.5
===================================================================
--- trunk/man/corosync.conf.5 (revision 2790)
+++ trunk/man/corosync.conf.5 (revision 2791)
@@ -350,7 +350,7 @@
The default is 1000 millseconds.
.TP
-fail_to_recv_const
+fail_recv_const
This constant specifies how many rotations of the token without receiving any
of the messages when messages should be received may occur before a new
configuration is formed.

33
corosync-cs2792.patch Normal file
View File

@ -0,0 +1,33 @@
Index: trunk/exec/totemsrp.c
===================================================================
--- trunk/exec/totemsrp.c (revision 2791)
+++ trunk/exec/totemsrp.c (revision 2792)
@@ -1390,6 +1390,8 @@
{
if (instance->old_ring_state_saved == 0) {
instance->old_ring_state_saved = 1;
+ memcpy (&instance->my_old_ring_id, &instance->my_ring_id,
+ sizeof (struct memb_ring_id));
instance->old_ring_state_aru = instance->my_aru;
instance->old_ring_state_high_seq_received = instance->my_high_seq_received;
log_printf (instance->totemsrp_log_level_debug,
@@ -1401,7 +1403,9 @@
static void ring_state_restore (struct totemsrp_instance *instance)
{
if (instance->old_ring_state_saved) {
- totemip_zero_set(&instance->my_ring_id.rep);
+ memcpy (&instance->my_ring_id, &instance->my_old_ring_id,
+ sizeof (struct memb_ring_id));
+
instance->my_aru = instance->old_ring_state_aru;
instance->my_high_seq_received = instance->old_ring_state_high_seq_received;
log_printf (instance->totemsrp_log_level_debug,
@@ -1412,6 +1416,8 @@
static void old_ring_state_reset (struct totemsrp_instance *instance)
{
+ log_printf (instance->totemsrp_log_level_debug,
+ "Resetting old ring state\n");
instance->old_ring_state_saved = 0;
}

13
corosync-cs2793.patch Normal file
View File

@ -0,0 +1,13 @@
Index: trunk/exec/totemsrp.c
===================================================================
--- trunk/exec/totemsrp.c (revision 2792)
+++ trunk/exec/totemsrp.c (revision 2793)
@@ -93,7 +93,7 @@
#define LOCALHOST_IP inet_addr("127.0.0.1")
#define QUEUE_RTR_ITEMS_SIZE_MAX 16384 /* allow 16384 retransmit items */
-#define RETRANS_MESSAGE_QUEUE_SIZE_MAX 500 /* allow 500 messages to be queued */
+#define RETRANS_MESSAGE_QUEUE_SIZE_MAX 16384 /* allow 500 messages to be queued */
#define RECEIVED_MESSAGE_QUEUE_SIZE_MAX 500 /* allow 500 messages to be queued */
#define MAXIOVS 5
#define RETRANSMIT_ENTRIES_MAX 30

13
corosync-cs2794.patch Normal file
View File

@ -0,0 +1,13 @@
Index: trunk/exec/totemsrp.c
===================================================================
--- trunk/exec/totemsrp.c (revision 2793)
+++ trunk/exec/totemsrp.c (revision 2794)
@@ -2466,7 +2466,7 @@
orf_token->rtr_list_entries -= 1;
assert (orf_token->rtr_list_entries >= 0);
memmove (&rtr_list[i], &rtr_list[i + 1],
- sizeof (struct rtr_item) * (orf_token->rtr_list_entries));
+ sizeof (struct rtr_item) * (orf_token->rtr_list_entries - i));
instance->stats.mcast_retx++;
instance->fcc_remcast_current++;

13
corosync-cs2795.patch Normal file
View File

@ -0,0 +1,13 @@
Index: trunk/exec/totemsrp.c
===================================================================
--- trunk/exec/totemsrp.c (revision 2794)
+++ trunk/exec/totemsrp.c (revision 2795)
@@ -391,7 +391,7 @@
struct list_head token_callback_sent_listhead;
- char *orf_token_retransmit[TOKEN_SIZE_MAX];
+ char orf_token_retransmit[TOKEN_SIZE_MAX];
int orf_token_retransmit_size;

17
corosync-cs2800.patch Normal file
View File

@ -0,0 +1,17 @@
Index: trunk/exec/main.c
===================================================================
--- trunk/exec/main.c (revision 2799)
+++ trunk/exec/main.c (revision 2800)
@@ -832,6 +832,12 @@
serialize_unlock();
return;
}
+ if (fn_id >= ais_service[service]->exec_engine_count) {
+ log_printf(LOGSYS_LEVEL_WARNING, "discarded unknown message %d for service %d (max id %d)",
+ fn_id, service, ais_service[service]->exec_engine_count);
+ serialize_unlock();
+ return;
+ }
objdb->object_key_increment (service_stats_handle[service][fn_id],
"rx", strlen("rx"),

19
corosync-cs2856.patch Normal file
View File

@ -0,0 +1,19 @@
Index: trunk/man/corosync.conf.5
===================================================================
--- trunk/man/corosync.conf.5 (revision 2855)
+++ trunk/man/corosync.conf.5 (revision 2856)
@@ -88,9 +88,11 @@
.TP
bindnetaddr
-This specifies the address which the corosync executive should bind.
-This address should always end in zero. If the totem traffic should
-be routed over 192.168.5.92, set bindnetaddr to 192.168.5.0.
+This specifies the network address the corosync executive should bind
+to. For example, if the local interface is 192.168.5.92 with netmask
+255.255.255.0, set bindnetaddr to 192.168.5.0. If the local interface
+is 192.168.5.92 with netmask 255.255.255.192, set bindnetaddr to
+192.168.5.64, and so forth.
This may also be an IPV6 address, in which case IPV6 networking will be used.
In this case, the full address must be specified and there is no automatic

View File

@ -0,0 +1,142 @@
Only in corosync-1.2.0/exec: cscope.out
diff -ur corosync-1.2.0.orig//exec/totemip.c corosync-1.2.0/exec/totemip.c
--- corosync-1.2.0.orig//exec/totemip.c 2009-12-08 01:25:45.000000000 +0100
+++ corosync-1.2.0/exec/totemip.c 2010-03-04 19:32:22.049615000 +0100
@@ -376,9 +376,6 @@
*/
totemip_sockaddr_to_totemip_convert((struct sockaddr_storage *)sockaddr_in, boundto);
boundto->nodeid = sockaddr_in->sin_addr.s_addr;
-#if __BYTE_ORDER == __BIG_ENDIAN
- boundto->nodeid = swab32 (boundto->nodeid);
-#endif
if (ioctl(id_fd, SIOCGLIFFLAGS, &lifreq[i]) < 0) {
printf ("couldn't do ioctl\n");
@@ -609,9 +606,6 @@
if (ipaddr.family == AF_INET && ipaddr.nodeid == 0) {
unsigned int nodeid = 0;
memcpy (&nodeid, ipaddr.addr, sizeof (int));
-#if __BYTE_ORDER == __BIG_ENDIAN
- nodeid = swab32 (nodeid);
-#endif
if (mask_high_bit) {
nodeid &= 0x7FFFFFFF;
}
Only in corosync-1.2.0/exec: totemip.c.orig
diff -ur corosync-1.2.0.orig//test/testcpg.c corosync-1.2.0/test/testcpg.c
--- corosync-1.2.0.orig//test/testcpg.c 2009-09-20 08:04:02.000000000 +0200
+++ corosync-1.2.0/test/testcpg.c 2010-03-04 19:30:03.590982000 +0100
@@ -48,7 +48,6 @@
#include <corosync/corotypes.h>
#include <corosync/cpg.h>
-#include <corosync/swab.h>
static int quit = 0;
static int show_ip = 0;
@@ -62,24 +61,6 @@
}
}
-static char * node_pid_format(unsigned int nodeid,int pid) {
- static char buffer[100];
- if (show_ip) {
- struct in_addr saddr;
-#if __BYTE_ORDER == __BIG_ENDIAN
- saddr.s_addr = swab32(nodeid);
-#else
- saddr.s_addr = nodeid;
-#endif
- sprintf(buffer, "node/pid %s/%d", inet_ntoa(saddr),pid);
- }
- else {
- sprintf(buffer, "node/pid %d/%d", nodeid, pid);
- }
- return buffer;
-}
-
-
static void DeliverCallback (
cpg_handle_t handle,
const struct cpg_name *groupName,
@@ -88,9 +69,18 @@
void *msg,
size_t msg_len)
{
- printf("DeliverCallback: message (len=%lu)from %s: '%s'\n",
- (unsigned long int) msg_len, node_pid_format(nodeid, pid),
+ if (show_ip) {
+ struct in_addr saddr;
+ saddr.s_addr = nodeid;
+ printf("DeliverCallback: message (len=%lu)from node/pid %s/%d: '%s'\n",
+ (unsigned long int) msg_len,
+ inet_ntoa(saddr), pid, (const char *)msg);
+ }
+ else {
+ printf("DeliverCallback: message (len=%lu)from node/pid %d/%d: '%s'\n",
+ (unsigned long int) msg_len, nodeid, pid,
(const char *)msg);
+ }
}
static void ConfchgCallback (
@@ -101,27 +91,51 @@
const struct cpg_address *joined_list, size_t joined_list_entries)
{
int i;
+ struct in_addr saddr;
printf("\nConfchgCallback: group '");
print_cpgname(groupName);
printf("'\n");
for (i=0; i<joined_list_entries; i++) {
- printf("joined %s reason: %d\n",
- node_pid_format(joined_list[i].nodeid, joined_list[i].pid),
- joined_list[i].reason);
+ if (show_ip) {
+ saddr.s_addr = joined_list[i].nodeid;
+ printf("joined node/pid: %s/%d reason: %d\n",
+ inet_ntoa (saddr), joined_list[i].pid,
+ joined_list[i].reason);
+ }
+ else {
+ printf("joined node/pid: %d/%d reason: %d\n",
+ joined_list[i].nodeid, joined_list[i].pid,
+ joined_list[i].reason);
+ }
}
for (i=0; i<left_list_entries; i++) {
- printf("left %s reason: %d\n",
- node_pid_format(left_list[i].nodeid, left_list[i].pid),
- left_list[i].reason);
+ if (show_ip) {
+ saddr.s_addr = left_list[i].nodeid;
+ printf("left node/pid: %s/%d reason: %d\n",
+ inet_ntoa (saddr), left_list[i].pid,
+ left_list[i].reason);
+ }
+ else {
+ printf("left node/pid: %d/%d reason: %d\n",
+ left_list[i].nodeid, left_list[i].pid,
+ left_list[i].reason);
+ }
}
printf("nodes in group now %lu\n",
(unsigned long int) member_list_entries);
for (i=0; i<member_list_entries; i++) {
- printf("%s\n",
- node_pid_format(member_list[i].nodeid, member_list[i].pid));
+ if (show_ip) {
+ saddr.s_addr = member_list[i].nodeid;
+ printf("node/pid: %s/%d\n",
+ inet_ntoa (saddr), member_list[i].pid);
+ }
+ else {
+ printf("node/pid: %d/%d\n",
+ member_list[i].nodeid, member_list[i].pid);
+ }
}
/* Is it us??

View File

@ -0,0 +1,38 @@
Index: syncv2.c
===================================================================
--- corosync-1.2.1/exec/syncv2.c (revision 2739)
+++ corosync-1.2.1/exec/syncv2.c (working copy)
@@ -244,6 +244,11 @@
}
}
if (barrier_reached) {
+ log_printf (LOGSYS_LEVEL_DEBUG, "Committing synchronization for %s\n",
+ my_service_list[my_processing_idx].name);
+ my_service_list[my_processing_idx].state = ACTIVATE;
+ my_service_list[my_processing_idx].sync_activate ();
+
my_processing_idx += 1;
if (my_service_list_entries == my_processing_idx) {
my_memb_determine_list_entries = 0;
@@ -551,19 +556,12 @@
if (my_service_list[my_processing_idx].state == PROCESS) {
my_service_list[my_processing_idx].state = PROCESS;
res = my_service_list[my_processing_idx].sync_process ();
- if (res != -1) {
- my_service_list[my_processing_idx].state = ACTIVATE;
+ if (res == 0) {
+ sync_barrier_enter();
} else {
return (-1);
}
}
- if (my_service_list[my_processing_idx].state == ACTIVATE) {
- my_service_list[my_processing_idx].state = ACTIVATE;
- my_service_list[my_processing_idx].sync_activate ();
- log_printf (LOGSYS_LEVEL_DEBUG, "Committing synchronization for %s\n",
- my_service_list[my_processing_idx].name);
- sync_barrier_enter();
- }
return (0);
}

View File

@ -0,0 +1,95 @@
Index: exec/totemsrp.c
===================================================================
--- corosync-1.2.1/exec/totemsrp.c (revision 2662)
+++ corosync-1.2.1/exec/totemsrp.c (working copy)
@@ -3427,6 +3427,7 @@
cancel_heartbeat_timeout(instance);
}
+ timer_function_pause_timeout (instance);
return (0); /* discard token */
}
@@ -3451,6 +3452,7 @@
cancel_heartbeat_timeout(instance);
}
+ timer_function_pause_timeout (instance);
return (0); /* discard token */
}
@@ -3605,6 +3607,7 @@
cancel_heartbeat_timeout(instance);
}
+ timer_function_pause_timeout (instance);
return (0);
}
@@ -3775,6 +3778,7 @@
memb_set_merge (&mcast_header.system_from, 1,
instance->my_proc_list, &instance->my_proc_list_entries);
memb_state_gather_enter (instance, 8);
+ timer_function_pause_timeout (instance);
return (0);
}
break;
@@ -3789,6 +3793,7 @@
instance->stats.rx_msg_dropped++;
break;
}
+ timer_function_pause_timeout (instance);
return (0);
}
@@ -3831,6 +3836,7 @@
}
/* TODO remove from retrans message queue for old ring in recovery state */
+ timer_function_pause_timeout (instance);
return (0);
}
@@ -3856,6 +3862,7 @@
if (memcmp (&instance->my_ring_id, &memb_merge_detect.ring_id,
sizeof (struct memb_ring_id)) == 0) {
+ timer_function_pause_timeout (instance);
return (0);
}
@@ -3891,6 +3898,8 @@
/* do nothing in recovery */
break;
}
+
+ timer_function_pause_timeout (instance);
return (0);
}
@@ -4161,6 +4170,7 @@
}
break;
}
+ timer_function_pause_timeout (instance);
return (0);
}
@@ -4242,6 +4252,8 @@
}
break;
}
+
+ timer_function_pause_timeout (instance);
return (0);
}
@@ -4261,6 +4273,8 @@
timer_function_token_retransmit_timeout (instance);
}
}
+
+ timer_function_pause_timeout (instance);
return (0);
}

View File

@ -0,0 +1,27 @@
From ee2d2224c0795c1fa9f1163c37ab61b446c5c393 Mon Sep 17 00:00:00 2001
From: Angus Salkeld <asalkeld@redhat.com>
Date: Fri, 9 Apr 2010 20:44:23 +1000
Subject: [PATCH] When sync is aborted clear the "my_ring_id" variable.
Signed-off-by: Angus Salkeld <asalkeld@redhat.com>
---
exec/syncv2.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/exec/syncv2.c b/exec/syncv2.c
index 57b501b..53e1650 100644
--- a/exec/syncv2.c
+++ b/exec/syncv2.c
@@ -665,6 +665,9 @@ void sync_v2_abort (void)
schedwrk_destroy (my_schedwrk_handle);
my_service_list[my_processing_idx].sync_abort ();
}
+
+ /* prevent and more incoming messages to be dumped */
+ memset (&my_ring_id, 0, sizeof (struct memb_ring_id));
}
void sync_v2_memb_list_determine (const struct memb_ring_id *ring_id)
--
1.6.6.1

142
corosync.changes Normal file
View File

@ -0,0 +1,142 @@
-------------------------------------------------------------------
Wed Jun 2 11:53:28 UTC 2010 - tserong@novell.com
- Set sensible defaults for Pacemaker in corosync.conf.example (bnc#610663)
- Clarify bindnetaddr option in corosync.conf.5 manpage (upstream cs 2856)
-------------------------------------------------------------------
Mon May 10 14:59:13 UTC 2010 - dmuhamedagic@novell.com
- Handle POLLNVAL in coroipcc
- Save the ring id and restore it properly when the recovery operation fails
- increase maximum entries in the retransmit queue when recovery takes place.
- fix one-off error in memove
- discard and report unknown messages
-------------------------------------------------------------------
Mon Apr 26 14:40:44 UTC 2010 - dmuhamedagic@novell.com
- fix valgrind reported problems (upstream cs 2787)
- Memset for res_setup variable in coroipcs:req_setup_send
- Two memset in logsys for buffers
- Problem in corosync_totem_stats_updater where
avg_token_holdtime has size of avg_backlog_calc
- corosync_totem_stats_init where avg_backlog_calc is 32 bits (not 64)
- objdb problem if new_valie_len != object->value_len. In
such case newly allocated memory is not initialized and in some
situations, value_len is not updated.
- select a new sync member if the node with the lowest nodeid has
left (upstream cs 2785)
- fix a crash in YKD
-------------------------------------------------------------------
Fri Apr 9 15:09:11 UTC 2010 - dmuhamedagic@novell.com
- clear the ring id on sync abort (bnc#590666)
- fix unloading of evs
- change sign of all exit codes (normal error exit is now 1)
- objdb: fix key change notifications (don't notify if the key
wasn't changed; notify on key inc/dec)
- fix possible lockup when a dispatch handler function is NULL
- upstream version cs 2756
-------------------------------------------------------------------
Mon Mar 29 14:15:43 UTC 2010 - dmuhamedagic@novell.com
- fix lockup that occurs sometimes before exiting
- fix problem where retransmissions don't occur resulting in failure
to receive condition
- add a reload callback to libconfdb
- support for lib_cpg_finalize
- cpg join with undelivered leave message (fixes problems with nodes
joining cpg twice in quick succession)
- fix error handling to avoid segfaults/leaks on error
in coroipcc_service_connect
- upstream release 1.2.1
-------------------------------------------------------------------
Thu Mar 4 18:43:07 UTC 2010 - dmuhamedagic@novell.com
- retain nodeid compatibility with openais (revert patch from cs 2429)
-------------------------------------------------------------------
Wed Mar 3 16:41:12 CST 2010 - jjzhang@novell.com
- minor enhancement to corosync.conf man page (bnc#580180)
-------------------------------------------------------------------
Tue Mar 2 22:01:26 UTC 2010 - dmuhamedagic@novell.com
- upstream version cs 2667
- allow empty (default) consensus timeout
- fix freeze of IPC library connection on sem_wait
- fix malloc deadlock in signal handler (rhbz#547511)
- fix coroipcs message corruption that occurs when a message fills the
remainder of the dispatch buffer with a full message
- totemsrp: fix transitional configuration changes with long token timeouts
- remove a double list_del() when a tracking CFG client shuts down without
calling cfg_track_stop (it caused corosync to crash)
- use nodeid instead of localhost ip for the case when binding to a loalhost
interface
- fix corosync shutdown process
- add augeas lense for corosync.conf
- patch to set unset value in token hold cancel structure as to not crash
wireshark
- convert unsafe function to thread-safe reentrant equivalents
-------------------------------------------------------------------
Mon Feb 22 15:53:00 UTC 2010 - dmuhamedagic@novell.com
- SP1 beta5 (no code changes)
-------------------------------------------------------------------
Mon Feb 8 14:53:31 UTC 2010 - dmuhamedagic@novell.com
- turn timestamp off in corosync.conf.example (there was a problem
reported in connection with not thread-safe glibc functions used
in concert with this option, which hasn't yet been resolved)
-------------------------------------------------------------------
Wed Jan 27 13:44:58 UTC 2010 - dmuhamedagic@novell.com
- add cs2646 patch from upstream, fixes cs2642
- add patch to accept on/off for the various log directives (bnc#573451)
-------------------------------------------------------------------
Thu Jan 21 14:21:44 UTC 2010 - dmuhamedagic@novell.com
- %pre script moved to openais
-------------------------------------------------------------------
Mon Jan 18 16:36:24 UTC 2010 - dmuhamedagic@novell.com
- remove init script
- add %pre script to copy openais.conf and authkey to /etc/corosync
- add patch 2642 (parser fix)
- fix some obsoletes/requires
-------------------------------------------------------------------
Mon Jan 11 16:08:35 UTC 2010 - lmb@novell.com
- Update to corosync 1.2.0.
-------------------------------------------------------------------
Tue Dec 29 10:23:21 UTC 2009 - dmuhamedagic@novell.com
- init script changes:
+ replace killall with checkproc, otherwise corosync can't stop
+ test if sbd/lrmadmin exist, because corosync has no dependency
on cluster-glue
-------------------------------------------------------------------
Tue Dec 15 15:27:37 UTC 2009 - dmuhamedagic@novell.com
- update to the corosync upstream release 1.2.0
- add suse init script
- don't create rccorosync, because users should be using
rcopenais to start a cluster
- rename corosynclib to libcorosync4 (similar for the devel package)
(http://en.opensuse.org/Shared_Library_Packaging_Policy)
- Autotools generated version from the released upstream version 1.2.0
- some specfile changes (initddir -> initrddir, header)

101
corosync.conf.example.patch Normal file
View File

@ -0,0 +1,101 @@
Index: corosync-1.2.1/conf/corosync.conf.example
===================================================================
--- corosync-1.2.1.orig/conf/corosync.conf.example
+++ corosync-1.2.1/conf/corosync.conf.example
@@ -1,32 +1,78 @@
# Please read the corosync.conf.5 manual page
compatibility: whitetank
+aisexec {
+ # Run as root - this is necessary to be able to manage
+ # resources with Pacemaker
+ user: root
+ group: root
+}
+
+service {
+ # Load the Pacemaker Cluster Resource Manager
+ ver: 0
+ name: pacemaker
+ use_mgmtd: yes
+ use_logd: yes
+}
+
totem {
- version: 2
- secauth: off
- threads: 0
+ # The only valid version is 2
+ version: 2
+
+ # How long before declaring a token lost (ms)
+ token: 5000
+
+ # How many token retransmits before forming a new configuration
+ token_retransmits_before_loss_const: 10
+
+ # How long to wait for join messages in the membership protocol (ms)
+ join: 60
+
+ # How long to wait for consensus to be achieved before starting
+ # a new round of membership configuration (ms)
+ consensus: 6000
+
+ # Turn off the virtual synchrony filter
+ vsftype: none
+
+ # Number of messages that may be sent by one processor on
+ # receipt of the token
+ max_messages: 20
+
+ # Limit generated nodeids to 31-bits (positive signed integers)
+ clear_node_high_bit: yes
+
+ # Disable encryption
+ secauth: off
+
+ # How many threads to use for encryption/decryption
+ threads: 0
+
+ # Optionally assign a fixed node id (integer)
+ # nodeid: 1234
+
interface {
- ringnumber: 0
- bindnetaddr: 192.168.1.1
- mcastaddr: 226.94.1.1
- mcastport: 5405
+ ringnumber: 0
+
+ # The following values need to be set based on your environment
+ bindnetaddr: 192.168.1.0
+ mcastaddr: 226.94.1.1
+ mcastport: 5405
}
}
logging {
- fileline: off
- to_stderr: yes
- to_logfile: yes
- to_syslog: yes
- logfile: /tmp/corosync.log
- debug: off
- timestamp: off
- logger_subsys {
- subsys: AMF
- debug: off
- }
+ fileline: off
+ to_stderr: no
+ to_logfile: no
+ to_syslog: yes
+ syslog_facility: daemon
+ debug: off
+ timestamp: off
}
amf {
mode: disabled
}
+

289
corosync.spec Normal file
View File

@ -0,0 +1,289 @@
#
# spec file for package corosync (Version 1.2.1)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
%if 0%{?sles_version} == 11
%ifnarch s390 s390x
%define buildib 1
%endif
%endif
%if 0%{?suse_version}
%define _libexecdir %{_libdir}
%endif
Name: corosync
Summary: The Corosync Cluster Engine and Application Programming Interfaces
Version: 1.2.1
Release: 1
License: BSD3c
Group: System Environment/Base
Url: http://www.openais.org
Source0: http://developer.osdl.org/dev/openais/downloads/%{name}-%{version}/%{name}-%{version}.tar.gz
Patch1: corosync-confexample-timestamp.patch
Patch2: corosync-revert-cs2429.patch
Patch3: corosync-cs2729.patch
Patch4: corosync-cs2731.patch
Patch5: corosync-cs2739.patch
Patch6: corosync-cs2746.patch
Patch7: corosync-cs2748.patch
Patch8: corosync-sync-barrier.patch
Patch9: corosync-cs2754.patch
Patch10: corosync-cs2756.patch
Patch11: corosync-trunk-reset-pause-timestamp-on-events.patch
Patch12: corosync-when-sync-is-aborted-clear-the-my_ring_id-variable.patch
Patch13: corosync-cs2767.patch
Patch14: corosync-cs2785.patch
Patch15: corosync-cs2787.patch
Patch16: corosync-cs2789.patch
Patch17: corosync-cs2791.patch
Patch18: corosync-cs2792.patch
Patch19: corosync-cs2793.patch
Patch20: corosync-cs2794.patch
Patch21: corosync-cs2795.patch
Patch22: corosync-cs2800.patch
Patch23: corosync.conf.example.patch
Patch24: corosync-cs2856.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
# Runtime bits
Requires: libcorosync4 = %{version}-%{release}
Requires(pre): /usr/sbin/useradd
Requires(post): /sbin/chkconfig
Requires(preun): /sbin/chkconfig
Conflicts: openais <= 0.89, libopenais2 <= 0.89, libopenais-devel <= 0.89
%define buildtrunk 0
%{?_with_buildtrunk: %define buildtrunk 1}
%if %{buildtrunk}
BuildRequires: autoconf automake
%endif
BuildRequires: mozilla-nss mozilla-nss-devel
%if 0%{?buildib} == 1
BuildRequires: libibverbs-devel librdmacm-devel
%endif
BuildRequires: pkg-config
%prep
%setup -q -n %{name}-%{version}
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%patch22 -p1
%patch23 -p1
%patch24 -p1
%build
%if %{buildtrunk}
./autogen.sh
%endif
%if 0%{?buildib} == 1
export ibverbs_CFLAGS=-I/usr/include/infiniband \
export ibverbs_LIBS=-libverbs \
export rdmacm_CFLAGS=-I/usr/include/rdma \
export rdmacm_LIBS=-lrdmacm \
%{configure} \
--enable-nss \
--enable-rdma
%else
%{configure} \
--enable-nss
%endif
make %{_smp_mflags}
%install
make install DESTDIR=%{buildroot}
# removed to discourage use of init.d/corosync (openais should be
# used instead)
#%if 0%{?suse_version}
#ln -sf ../../etc/init.d/corosync %{buildroot}%{_sbindir}/rccorosync
#%endif
rm -f %{buildroot}%{_initrddir}/corosync
## tree fixup
# drop static libs
rm -f %{buildroot}%{_libdir}/*.a
# drop docs and html docs for now
rm -rf %{buildroot}%{_docdir}/*
# the docdir is /usr/share/doc/<pkg> in the configuration
rm -rf %{buildroot}%{_datadir}/doc/*
%clean
rm -rf %{buildroot}
%description
This package contains the Corosync Cluster Engine Executive, several
default APIs and libraries, default configuration files, and an init
script.
%files
%defattr(-,root,root,-)
%doc LICENSE SECURITY
%{_sbindir}/corosync
%{_sbindir}/corosync-keygen
%{_sbindir}/corosync-objctl
%{_sbindir}/corosync-cfgtool
%{_sbindir}/corosync-fplay
%{_sbindir}/corosync-pload
%{_sbindir}/corosync-cpgtool
%{_sbindir}/corosync-quorumtool
%dir %{_sysconfdir}/corosync
%dir %{_sysconfdir}/corosync/uidgid.d
%dir %{_sysconfdir}/corosync/service.d
%config(noreplace) %{_sysconfdir}/corosync/corosync.conf.example
%dir %{_libexecdir}/lcrso
%{_libexecdir}/lcrso/coroparse.lcrso
%{_libexecdir}/lcrso/objdb.lcrso
%{_libexecdir}/lcrso/service_cfg.lcrso
%{_libexecdir}/lcrso/service_cpg.lcrso
%{_libexecdir}/lcrso/service_evs.lcrso
%{_libexecdir}/lcrso/service_confdb.lcrso
%{_libexecdir}/lcrso/service_pload.lcrso
%{_libexecdir}/lcrso/quorum_votequorum.lcrso
%{_libexecdir}/lcrso/quorum_testquorum.lcrso
%{_libexecdir}/lcrso/vsf_quorum.lcrso
%{_libexecdir}/lcrso/vsf_ykd.lcrso
%dir %{_localstatedir}/lib/corosync
%{_mandir}/man8/corosync_overview.8*
%{_mandir}/man8/corosync-objctl.8*
%{_mandir}/man5/corosync.conf.5*
%package -n libcorosync4
License: BSD3c
Summary: The Corosync Cluster Engine Libraries
Group: System Environment/Libraries
Conflicts: corosync < 0.92-7
Requires: %{name} = %{version}-%{release}
%description -n libcorosync4
This package contains corosync libraries.
%files -n libcorosync4
%defattr(-,root,root,-)
%doc LICENSE
%{_libdir}/libcfg.so.*
%{_libdir}/libcpg.so.*
%{_libdir}/libconfdb.so.*
%{_libdir}/libevs.so.*
%{_libdir}/libtotem_pg.so.*
%{_libdir}/liblogsys.so.*
%{_libdir}/libcoroipcc.so.*
%{_libdir}/libcoroipcs.so.*
%{_libdir}/libquorum.so.*
%{_libdir}/libvotequorum.so.*
%{_libdir}/libpload.so.*
%{_libdir}/libsam.so.*
%post -n libcorosync4 -p /sbin/ldconfig
%postun -n libcorosync4 -p /sbin/ldconfig
%package -n libcorosync-devel
License: BSD3c
Summary: The Corosync Cluster Engine Development Kit
Group: Development/Libraries
Requires: libcorosync4 = %{version}-%{release}
Requires: pkgconfig
%description -n libcorosync-devel
This package contains include files and man pages used to develop using
The Corosync Cluster Engine APIs.
%files -n libcorosync-devel
%defattr(-,root,root,-)
%doc LICENSE README.devmap
%dir %{_includedir}/corosync/
%{_includedir}/corosync/cs_config.h
%{_includedir}/corosync/corodefs.h
%{_includedir}/corosync/coroipc_types.h
%{_includedir}/corosync/coroipcs.h
%{_includedir}/corosync/coroipcc.h
%{_includedir}/corosync/cfg.h
%{_includedir}/corosync/confdb.h
%{_includedir}/corosync/corotypes.h
%{_includedir}/corosync/cpg.h
%{_includedir}/corosync/evs.h
%{_includedir}/corosync/hdb.h
%{_includedir}/corosync/list.h
%{_includedir}/corosync/mar_gen.h
%{_includedir}/corosync/sam.h
%{_includedir}/corosync/swab.h
%{_includedir}/corosync/quorum.h
%{_includedir}/corosync/votequorum.h
%dir %{_includedir}/corosync/totem/
%{_includedir}/corosync/totem/coropoll.h
%{_includedir}/corosync/totem/totem.h
%{_includedir}/corosync/totem/totemip.h
%{_includedir}/corosync/totem/totempg.h
%dir %{_includedir}/corosync/lcr/
%{_includedir}/corosync/lcr/lcr_ckpt.h
%{_includedir}/corosync/lcr/lcr_comp.h
%{_includedir}/corosync/lcr/lcr_ifact.h
%dir %{_includedir}/corosync/engine
%{_includedir}/corosync/engine/config.h
%{_includedir}/corosync/engine/coroapi.h
%{_includedir}/corosync/engine/logsys.h
%{_includedir}/corosync/engine/objdb.h
%{_includedir}/corosync/engine/quorum.h
%{_libdir}/libcfg.so
%{_libdir}/libcpg.so
%{_libdir}/libconfdb.so
%{_libdir}/libevs.so
%{_libdir}/libtotem_pg.so
%{_libdir}/liblogsys.so
%{_libdir}/libcoroipcc.so
%{_libdir}/libcoroipcs.so
%{_libdir}/libquorum.so
%{_libdir}/libvotequorum.so
%{_libdir}/libpload.so
%{_libdir}/libsam.so
%{_libdir}/pkgconfig/*.pc
%{_mandir}/man3/cpg_*3*
%{_mandir}/man3/evs_*3*
%{_mandir}/man3/confdb_*3*
%{_mandir}/man3/votequorum_*3*
%{_mandir}/man3/sam_*3*
%{_mandir}/man8/cpg_overview.8*
%{_mandir}/man8/evs_overview.8*
%{_mandir}/man8/confdb_overview.8*
%{_mandir}/man8/logsys_overview.8*
%{_mandir}/man8/votequorum_overview.8*
%{_mandir}/man8/coroipc_overview.8*
%{_mandir}/man8/sam_overview.8*
%changelog