I am pleased to announce the latest maintenance release of Corosync 1.3.2 available immediately from our website at http://www.corosync.org. This release contains the following bug fixes:
2011-07-07 Florian Haas <[email protected]> build: force LC_ALL=C correctly for dates Failure to force "C" dates will have RPM et al. complain about invalid dates and timestamps. Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit b8809eaf270196ecb061fefa043c7bca8af75b06) 2011-07-07 Tim Beale <[email protected]> Fix compile/runtime issues for _POSIX_THREAD_PROCESS_SHARED < 1 For the case where _POSIX_THREAD_PROCESS_SHARED < 1, the code doesn't compile for corosync v1.3.1. And when it does compile, it crashes on our system - our version of uClibc seems to always expect a 4th arg. The man pages suggests the 4th arg is optional, but does say: 'For greater portability it is best to always call semctl() with four arguments', which is what this patch does. Also removed semop as it's an unused variable. Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit 77f7e5b0fe40338e6e5760feb12768defa6b0cf9) getpwnam_r()/getgrnam_r() returns ERANGE for some systems On our system the expected buffer length is 256. This means calls to getpwnam_r()/getgrnam_r() return ERANGE error and corosync fails to startup. These 2 functions return ERANGE when insufficient buffer space is supplied. Judging by the man page for getpwnam_r, the correct way to determine the buffersize on any given system is to use sysconf(). Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit ba107f0a33fd5e6ef4073b9cc5539740e6ae3c12) 2011-07-07 Jan Friesse <[email protected]> flatiron: enable compile with --enable-fatal-warnings Reviewed-by: Steven Dake <[email protected]> 2011-07-04 Masatake YAMATO <[email protected]> fix typos in cpg_mcast_joined.3 and cpg_zcb_mcast_joined.3 (cherry picked from commit 7ba892dac323f9656c16981e02d3612f521bfbdb) 2011-07-04 Jan Friesse <[email protected]> coroipcc: Test _SC_PAGESIZE result Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit 94d934e0e0fa55027a974eb709a488802ee6134e) Remove spinlocks Spinlocks are now removed, because even spinlock can improve speed is some special cases, in most cases it makes corosync CPU usage much more intensive and less responsive then if only mutexes are used. What we were doing is: pthread_mutex_lock pthread_spin_lock pthread_spin_unlock pthread_mutex_unlock what is not safe. Reviewed-by: Steven Dake <[email protected]> (backported from commit 8c717c22b2f137f81ac5ae1a3437d73b62bb451d) votequorum: free newly allocated node if nodeid==0 Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit 5458d4f27ad956d23a27a0d83b9cf9a6e36e68d0) 2011-07-04 Jerome Flesch <[email protected]> Fix usage of strerror_r()/perror() Reviewed-by: Angus Salkeld <[email protected]> (backported from commit 00434a4f10f0a0b0dfb1714504860d7ef560f7fb) 2011-07-04 Steven Dake <[email protected]> sched_params log message incorrect The sched_params parameter was set before being printed. Reviewed-by: <[email protected]> (cherry picked from commit ae4a3af3407ec185f88172fdc88cc6227647565b) 2011-07-04 Jan Friesse <[email protected]> confdb: Resolve dispatch deadlock Following situation could happen: - one thread is waiting for finish write operation (line 853), objdb is locked - flush (done in objdb_notify_dispatch) is called in main thread, but this call will never appear because main thread is waiting for objdb lock. In this situation deadlock appears. Commit solves this by: - setting pipe to non-blocking mode - pipe is used only as trigger for coropoll - dispatch messages are stored in list - main thread is processing messages from list Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit b5d2f4578a239c6ee500e43542a93d0fa48d7fb6) objdb: save copy of handles in object_find_create Following situation could happen: - process 1 thru confdb creates find handle - calls find iteration once - different process 2 deletes object pointed by process 1 iterator - process 1 calls iteration again -> object_find_instance->find_child_list is invalid pointer -> segfault Now object_find_create creates array of matching object handlers and object_find_next uses that array together with check for name. This prevents situation where between steps 2 and 3 new object is created with different name but sadly with same handle. Also good to note that this patch is more or less quick hack rather then proper solution. Real proper solution is to not use pointers and rather use handles everywhere. This is big TODO. Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit e8000c7b9b93b2ac4e6bec39df26755fdd4a8cf0) 2011-07-04 Jiaju Zhang <[email protected]> RRP: Fix ring initialization issue for UDPU mode Redundant ring has some problem in the UDP unicast mode. The problem is the second ring has not been successfully initialized, that is, the second time iface_changes happens, the member list for that interface has not been added, which results in that ring cannot transmit normal message. So the second ring cannot take over the work if the first ring is down. This patch fixes this issue. comments from review: More work is needed probably in totemnet where totemnet maintains the the of node list and an iterator for them, and totemudpu_member_add adds state information to a context for the iteration. In any regard, that is somewhat difficult to test, so I'll merge this patch for now - keep in mind interface changes on the bindnetaddr will cause problems with udpu after this patch has been commmitted. Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit c6bfc6b5d62d19686104265e8a1b2409f4c1eaf8) 2011-07-04 Jan Friesse <[email protected]> coroipcc: check recvmsg result in socket_recv According specification recvmsg can return 0, which means that connection is closed. We had this check, but limited only for systems other then Linux. recvmsg can return 0 even on Linux, so check is now applied on all systems. Reviewed-by: Angus Salkeld <[email protected]> (cherry picked from commit 2e5dc5f322a5a852d31f5775debbf51e062695ba) confdb: Properly check result of object_find_create in confdb_object_iter result of object_find_create is now properly checked. object_find_create can return -1 if object doesn't exists. Without this check, incorrect handle (memory garbage) was directly passed to object_find_next. Reviewed-by: Angus Salkeld <[email protected]> (cherry picked from commit 9afb4bdaa84aa3e7b48aa0a5136ee039dc73e19a) crypto: rng_make_prng prevent buf overflow with bits set to 1023, buf of 256 bytes was filled by rng_get_bytes up to 257 bytes. Buf is now 258 bytes so it's no longer problem. Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit 50f05bfa15622e10f58511e8b0b8dadfe670e12f) mainconfig: Check retval of logsys_format_set Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit afa0398ca4a605c0896b0d02b02805db736c0090) testcpgzc: fgets buffer to really allocated size Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit aa23d20125ed9845186471e417bbe010978b7c29) cpg: do_proc_join change list_slice to list_add In this concrete case result is equivalent but makes coverity happy. Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit f95d3b3bf206995d0bc04ae4b1855932eaaa4911) totemudp: memset of proper size In totemudp_mcast_thread_state_constructor memset to sizeof(struct totemudp_mcast_thread_state) instead of size of pointer. Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit 531e81602f8b47846aec8573dc57cb8941100367) coroipcs: init buf in coroipcs_handler_dispatch Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit ea0a24866ccf27a4010edf75c5d0d223a84c80cd) coroparse: don't leak dirent Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit c2a39cb8e2b3cc717dfe273425df3f2b4d0b48c0) logsys: _logsys_wthread_create never returns != 0 Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit d76bb76d1fef350eef74ada4f834c2011a70889e) totemconfig: discard check of objdb_get_string ret Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit 6b9297131cda9ae874effa4e27ad70601a56d977) coroipcc: proper path size in coroipcc_zcb_alloc memory_map function internally limits maximum path size to PATH_MAX but coroipcc_zcb_alloc passed smaller buffer. Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit 0273c54054f7e8c83b165daa1a4ded13f78f0515) libquorum: memset/memcpy proper size of callbacks Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit 6af98e79ee7f0278b641cb8f0cd8d8499988e373) 2011-07-04 Jerome Flesch <[email protected]> logsys: When corosync is compiled with --enable-small-memory-footprint, also reduce the size of the logsys SHM Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit 6bec0aa2276530d25a1984e90f7bd274f8d0c75b) coroipcc_dispatch_get(): Fix --enable-small-memory-footprint support Reviewed-by: Jan Friesse <[email protected]> (cherry picked from commit 795aa5e24cee83c88b8a6ea3a3fd06e754f55010) coroipcs_handler_dispatch(): Fix conn_info->service security value: -1 is not a good security value since it's equal to SOCKET_SERVICE_INIT Reviewed-by: Jan Friesse <[email protected]> (cherry picked from commit b11267211515e4fc50882acd5f2afe493c363708) coroipcc: Fix unhandled BSD EOF in coroipcc_dispatch_get() Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit 76426d7901def8bd7f3da8b07107f765dd8572d4) Corosync: Fix build when done with --enable-fatal-warnings Reviewed-by: Jan Friesse<[email protected]> (backported from commit fe51e703675232a69009245cd9e0523bb1858dd6) 2011-07-04 Russell Bryant <[email protected]> logsys.c: Use snprintf() instead of sprintf(). Change a couple of string functions to use the the output length limiting counterpart. (cherry picked from commit a53e402912a7c4c4039b928d3b741fe8239ab2f7) 2011-07-04 Angus Salkeld <[email protected]> cpg: fix sync master selection when one node paused. If one node is paused it can miss a config change and thus report a larger old_members than expected. The solution is to use the left_nodes field. Master selection used to be "choose node with": 1) largest previous membership 2) (then as a tie-breaker) node with smallest nodeid New selection: 1) largest (previous #nodes - #nodes know to have left) 2) (then as a tie-breaker) node with smallest nodeid (cherry picked from commit 956a1dcb4236acbba37c07e2ac0b6c9ffcb32577) 2011-07-04 Jan Friesse <[email protected]> coroipcs: Deny connect to service without initfn If library connect to service with no init function, coroipcs will try to dereference NULL pointer. Now we correctly return error code CS_ERR_NOT_EXIST. Reviewed-by: Steven Dake <[email protected]> (cherry picked from commit 719fddd8e16b6da8694fa84dd2fafbb202401200) 2011-05-23 Tim Serong <[email protected]> Correct mailing list address in corosync_overview manpage Reviewed-by: Steven Dake <[email protected]> 2011-05-20 Steven Dake <[email protected]> Add coverity target to corosync makefile.am Allow a make coverity target for those developers with coverity tools available to them. Reviewed-by: Angus Salkeld <[email protected]> A big thanks to everyone in the community who helped find these problems so they could be fixed in this 1.3.2 release. _______________________________________________ Openais mailing list [email protected] https://lists.linux-foundation.org/mailman/listinfo/openais
