Commit Graph

50 Commits

Author SHA1 Message Date
Angus Salkeld
c6beee076a pass transitional members into the sync_init() callbacks.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2653 fd59a12c-fef9-0310-b244-a6a79926bd2f
2010-02-04 00:18:51 +00:00
Angus Salkeld
5f17683107 COVERITY 18: prevent deref after free.
Event deref_after_free: Dereferencing freed pointer "pi".



git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2543 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-11-22 06:22:49 +00:00
Steven Dake
9b56e33ee8 Remove pointless warning.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2478 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-09-25 06:01:35 +00:00
Jan Friesse
db87fb8f56 Implementation of cpg_iteration functions
This functions allows iterate available cpg groups
and their members. API is modelled like ckpt iteration
functions.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2399 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-08-31 09:23:16 +00:00
Jan Friesse
7e745c7444 Swap item in cpg_joinlist
This patch add swab of header->size so big endian architectures
works with LE list and vica versa.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2384 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-08-10 15:07:40 +00:00
Jan Friesse
c597079a3e Cpg synchronization patch for conf change messages
The root of the theoretical problem is that cpg_join or cpg_leave
messages are being sent via the C apis between synchronization.  With
the current cpg, synchronization happens in confchg_fn, and then later
in cpg_sync_process.  cpg_sync_process is called much later after
confchg_fn and introduces a small probability of a window of time for
queued in totem (but not yet ordered by totem) for those cpg_join and
cpg_leave operations to interact with the synchronization process which
should happen in one atomic operation but currently is two distinct
operations.

This patch deletes confchg_fn and make sends joinlist/downlist
in cpg_sync_process.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2365 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-07-20 14:57:06 +00:00
Jan Friesse
33c0b60b58 Allow only one connection per (node, pid, grp)
This patch allows only one connection per (node, pid, grp_name) tuple.
This means, you cannot make more connection from one process to same
group_name. This is (I hope) how cpg should behave. In case, you will
try to do that, CPG_ERR_EXISTS error is returned.

Of course, there is no problem with creating:
- more connection with same (pid, grp) if nodeid is different
- more connection with same (node, grp) if pid is different (for example
  after fork, or two distinct processes)
- more connection with same (node, pid) if grp is different (connect
  one process to more cpgs).


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2364 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-07-20 14:53:18 +00:00
Jan Friesse
d6cbfe2590 Don't deliver cpg messages from unknown nodes
This patch fixes situation, when in the middle of
sync some node will send regular message before
another node will receive confch message, and regular
message is delivered to application. From application
point of view, this node is unknown -> don't expect
any messages.

Now, no such messages are delivered to application.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2332 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-07-01 13:36:00 +00:00
Steven Dake
e1b054ae0a Change sync_init api call to pass information relevant for making
synchronization decisions.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2305 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-06-27 01:59:59 +00:00
Steven Dake
f540be9060 Add compatability option in config file. Defaults to whitetank.
Add sync_mode to coroapi to indicate to corosync the service engine's
desired compatibility mode.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2298 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-06-26 00:25:52 +00:00
Steven Dake
38e8502ad7 Convert got joinlist message notice to debug level.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2294 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-06-25 17:24:44 +00:00
Steven Dake
04cf210d9d Use HAVE_ALLOCA_H define before including alloca.h
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2278 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-06-21 16:46:24 +00:00
Steven Dake
cbb6aaf78b Work around dlopen'ed objects not executing constructors on solaris platform.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2276 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-06-21 05:02:09 +00:00
Steven Dake
b8e3951ca1 Add (void *) casts for iovector assignments to remove compile warnings.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2270 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-06-19 20:43:12 +00:00
Steven Dake
9c69184ce1 Resolve bug where config changes are delivered in the wrong order on nodes that
join and then open a cpg.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2225 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-06-09 20:31:51 +00:00
Andrew Beekhof
e2c5b834f0 Decouple the decouples shutdown/startup order of lcrso's from the internal objdb order.
This is needed as the objdb order will change as modules are loaded/unloaded and is 
also set up to unload non-default services last (which is the opposite of what 
something like Pacemaker needs).

In the worst case, the current behavior leads to cluster services (dlm, ocfs2, etc) 
failing during shutdown.  This patch also ensures that if, for example, cpg is unloaded 
then anything that depends on it is unloaded first.



git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2224 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-06-09 16:07:11 +00:00
Steven Dake
ae5895c3f7 Call initializer directly for broken platforms which don't honor ctors in the shared object on dlopen.
This could probably be more tidy to detect those OS platforms which don't do this instead of hardcoding
to a specific platform we intend to port to.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2221 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-06-07 07:47:10 +00:00
Steven Dake
ff8283f0b1 Rename queue datastructure to cs_queue data structure because some fail
operating system struct queue in the globally scoped headers.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2211 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-06-07 00:47:56 +00:00
Steven Dake
6bda597dbc Fix race condition in cpg service.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2201 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-05-31 01:18:09 +00:00
Jim Meyering
1f40a10983 don't include <signal.h> when it's not used
* exec/coroparse.c: Likewise.
* exec/quorum.c: Likewise.
* exec/sync.c: Likewise.
* exec/totemmrp.c: Likewise.
* exec/totemnet.c: Likewise.
* exec/totemrrp.c: Likewise.
* exec/totemsrp.c: Likewise.
* exec/vsf_quorum.c: Likewise.
* exec/vsf_ykd.c: Likewise.
* lcr/uic.c: Likewise.
* lcr/uis.c: Likewise.
* lib/cfg.c: Likewise.
* services/cfg.c: Likewise.
* services/cpg.c: Likewise.
* services/evs.c: Likewise.
* services/pload.c: Likewise.
* services/testquorum.c: Likewise.
* services/votequorum.c: Likewise.
* test/testconfdb.c: Likewise.
* test/testcpg.c: Likewise.
* test/testcpgzc.c: Likewise.
* test/testzcgc.c: Likewise.
* tools/corosync-cfgtool.c: Likewise.
* tools/corosync-objctl.c: Likewise.
* tools/corosync-pload.c: Likewise.

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2193 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-05-18 16:41:46 +00:00
Jim Meyering
d1c1e78fd0 remove trailing blanks
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2188 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-05-18 16:41:04 +00:00
Steven Dake
0986c30320 Remove useless APIs from coroipcs.c related to handling of overload
conditions.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2146 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-04-26 01:20:09 +00:00
Steven Dake
51ef3b5c00 Include file cleanups.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2134 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-04-23 17:03:21 +00:00
Jan Friesse
058f50314c Rewrite of CPG. It solves problems with double delete.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2124 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-04-22 13:39:28 +00:00
Jan Friesse
37dee7eea1 Remove MESSAGE_REQ_CPG_GROUPS_GET call and all function using that.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2122 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-04-22 09:45:47 +00:00
Steven Dake
8126cf7458 Reworking of include file dependencies.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2119 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-04-22 09:01:30 +00:00
Fabio M. Di Nitto
c3c75acfd2 Add logsys v3
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2091 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-04-20 04:28:33 +00:00
Jim Meyering
38606588bd cpg.c: rename file-scoped global to avoid shadowing warnings
* services/cpg.c: s/req_exec_cpg_downlist/g_req_exec_cpg_downlist/

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2077 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-04-15 19:13:28 +00:00
Jim Meyering
e002172704 coroapi.h: change lib_handler_fn's *msg to be const
Make a tiny type change and watch it propagate.
* include/corosync/engine/coroapi.h
(struct corosync_lib_handler) [lib_handler_fn]: Change type
of 2nd parameter: s/void *msg/const void *msg/.
Propagate the above into cfg.c and votequorum.c:
* services/cfg.c (message_handler_req_lib_cfg_get_node_addrs):
Constification exposed a bug in this function whereby it mistakenly
modified storage through its now-const *msg parameter.  Since it
did that solely to store a temporary result, we've changed it
to use a local variable instead.
* services/votequorum.c (message_handler_req_lib_votequorum_setvotes):
Likewise.
* exec/vsf_quorum.c: add const to msg param.
* services/evs.c: Likewise.
* services/pload.c: Likewise.
* services/cpg.c: Likewise.
* services/confdb.c: Likewise.
* exec/coroipcs.h: signature of coroipcs_handler_fn_lvalue must match
that of lib_handler_fn; noted via main.c.

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2047 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-04-09 12:32:59 +00:00
Jim Meyering
2eba2a6cb8 continue pulling previous thread: mostly constification
* exec/apidef.c (typedef_tpg_join, typedef_tpg_leave)
(typedef_tpg_groups_mcast, typedef_tpg_groups_send_ok):
* exec/sync.c (barrier_data_process, sync_barrier_send)
(sync_start_init, sync_service_init, sync_start_process)
(sync_service_process, sync_deliver_fn, sync_request_send)
(sync_request):
* exec/sync.h (name):
* exec/totemmrp.c (totemmrp_callback_token_create):
* exec/totemmrp.h (TOTEMMRP_H_DEFINED):
* exec/totempg.c (list, app_confchg_fn)
(callback_token_received_fn, totempg_callback_token_create)
(totempg_groups_mcast_joined, totempg_groups_joined_release)
(totempg_groups_mcast_groups):
* exec/totemsrp.c (callback_fn, totemsrp_confchg_fn)
(totemsrp_initialize, totemsrp_callback_token_create):
* exec/totemsrp.h (TOTEMSRP_H_DEFINED):
* exec/vsf_ykd.c (ykd_state_send_msg, ykd_attempt_send_msg)
(ykd_confchg_fn):
* include/corosync/engine/coroapi.h (timer_add_absolute)
(totem_ifaces_print, totem_ip_print, totem_callback_token_create)
(sync_request, plugin_interface_reference):
* include/corosync/totem/totempg.h (TOTEMPG_SAFE):
* services/cpg.c (cpg_confchg_fn):
* services/pload.c (msgs_sent, pload_service_engine)
(send_message, start_mcasting):
* services/votequorum.c (conn, quorum_confchg_fn):

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2030 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-04-08 06:44:59 +00:00
Jim Meyering
3a32139cfc *_confchg_fn: make pointer params const, change *_entries to be size_t
* exec/main.c (confchg_fn):
* exec/quorum.h (sync_callback_fn_t):
* exec/sync.c (sync_ring_id, barrier_data_process)
(sync_start_init, sync_service_process, sync_primary_callback_fn)
(sync_deliver_fn, sync_confchg_fn):
* exec/sync.h (name):
* exec/totemmrp.c (totemsrp_handle_in, pg_confchg_fn)
(totemmrp_confchg_fn, totemmrp_initialize):
* exec/totemmrp.h (TOTEMMRP_H_DEFINED):
* exec/totempg.c (confchg_fn, totempg_confchg_fn)
(totempg_groups_initialize):
* include/corosync/engine/coroapi.h (tpg_init, confchg_fn)
(sync_abort):
* include/corosync/totem/totempg.h (TOTEMPG_SAFE):
* services/cfg.c (shutdown_reply, cfg_confchg_fn)
(message_handler_req_exec_cfg_ringreenable):
* services/cpg.c (api, cpg_confchg_fn):
* services/evs.c (MESSAGE_REQ_EXEC_EVS_MCAST, evs_confchg_fn):
* services/pload.c (MESSAGE_REQ_EXEC_PLOAD_MCAST)
(pload_confchg_fn):

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2029 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-04-08 06:44:50 +00:00
Jim Meyering
1919ff31c7 cpg.c: resolve almost all warnings
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1917 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-03-30 21:09:38 +00:00
Jim Meyering
0c9c22e085 avoid performing 'void *' arithmetic, and add a few const attributes
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1906 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-03-24 13:05:47 +00:00
Steven Dake
f806dd09fd This patch fixes a crash in cpg.c where a group is left befopre
cpg_finalise is called. It can cause the process_info structure to be
removed twice from the group list.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1884 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-03-21 11:25:48 +00:00
Fabio M. Di Nitto
031c02f589 - Every .c file should include "config.h" to get the right defines...
- services/Makefile.am: add include search paths for config.h

- include/corosync/cs_config.h.in exports LCRSODIR and SOCKETDIR

- tools/Makefile.am: drop -D defines for dirs that are now in
cs_config.h or config.h

- configure.ac: sanitize prefix and exec_prefix paths. Export DIRS in
*config.h

- lib/Makefile.am: : drop -D defines for dirs that are now in
cs_config.h or config.h. Add rule to build lcr_ifact.o or building from
lib/ fails miserably



git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1877 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-03-19 12:58:53 +00:00
Steven Dake
3619c3a965 Use list_del on process info in the condition that lib_exit_fn is called
to prevent segfault from processes later processing that list entry.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1791 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-03-06 02:42:48 +00:00
Steven Dake
4050ac171f Lock cpg ipc connections into memory on lib_init_fn and remove lock on
lib_exit_fn.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1785 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-03-03 00:57:44 +00:00
Steven Dake
7931e7be08 Send configuration changes to CPG listeners. (regression in IPC patch).
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1781 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-02-25 06:54:42 +00:00
Christine Caulfield
c450c918f7 Allow CPG messages to be sent on an inquorate cluster
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1771 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-02-20 07:46:15 +00:00
Steven Dake
c077255702 Whitetank IPC Forward Port.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1766 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-02-19 02:23:58 +00:00
Steven Dake
db71709ada Patch to allow cpg_membership_get to work properly.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1721 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-01-08 06:29:16 +00:00
Angus Salkeld
ca6b3256ec Fix coverity bug ID 6: FORWARD_NULL
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1720 fd59a12c-fef9-0310-b244-a6a79926bd2f
2009-01-07 17:42:10 +00:00
Angus Salkeld
19eace8979 depending on your ip address, cpg doesn't always send config changes
If you ip addresses are larger than 0xffffff then you will never
get sent group leave notifications.



git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1700 fd59a12c-fef9-0310-b244-a6a79926bd2f
2008-12-01 17:43:40 +00:00
Angus Salkeld
56eaee9561 cleanup the last of the SAF headers and types
This includes the rename of identifiers from corosync to cs.



git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1689 fd59a12c-fef9-0310-b244-a6a79926bd2f
2008-11-06 21:49:07 +00:00
Angus Salkeld
f9609f3217 Propagate the flow control state between AIS exec and library
This patch causes the flow control state in the library to be set
properly when the flow control is turned off (disabled).  Then it can be
read properly by the flow control apis.
This also fixes the case where the application is no longer sending
messages and it has already dispatched all its received messages
before flow control is disabled.

Also, CPG response messages with a TRY_AGAIN error did NOT contain
a valid flow control state value. This meant the library could get
stuck with flow control enabled (flow control was never enabled
for the EXEC, so no disable event occurred).
This case was hit when a new node was joining - sync_in_process()
resulted in a TRY_AGAIN for error cpg_mcast_joined).

Also, in message_handler_req_exec_cpg_mcast() the state passed
back to the library defaulted to disabled for messages received
from another node (even if flow control was still enabled)
- this meant if multiple nodes were sending CPG messages,
  then the library flow control state flip-flopped between
  enabled and disabled.

Author: Steven Dake <sdake@redhat.com> &
        Tim Beale <tim.beale@alliedtelesis.co.nz>




git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1667 fd59a12c-fef9-0310-b244-a6a79926bd2f
2008-09-17 19:15:00 +00:00
Steven Dake
01b8bc6ab2 Finish the renaming of openais to corosync in the tree.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1646 fd59a12c-fef9-0310-b244-a6a79926bd2f
2008-08-15 06:15:26 +00:00
Steven Dake
e1f531380a Revert patch 1633 which breaks build.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1636 fd59a12c-fef9-0310-b244-a6a79926bd2f
2008-08-14 16:44:26 +00:00
Steven Dake
c4a1c7eb96 Change all occurances of openais to corosync.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1633 fd59a12c-fef9-0310-b244-a6a79926bd2f
2008-08-14 16:04:01 +00:00
Fabien Thomas
0c92a5e564 reorganize include file to match installed tree to build openais without installing corosync; correct some warnings and error under FreeBSD and Darwin
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1632 fd59a12c-fef9-0310-b244-a6a79926bd2f
2008-08-14 14:59:50 +00:00
Steven Dake
617dbdf2f0 Split openais and corosync tree into two seperate repositories.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1622 fd59a12c-fef9-0310-b244-a6a79926bd2f
2008-08-05 13:23:46 +00:00