ACK On 5/29/2013 3:46 PM, Jan Friesse wrote: > sync_in_process is changed by coropoll thread (main thread) but used by > all IPC connections. To ensure correct value is read, mutex is added. > > Signed-off-by: Jan Friesse <jfriesse@xxxxxxxxxx> > --- > exec/main.c | 14 ++++++++++++++ > 1 files changed, 14 insertions(+), 0 deletions(-) > > diff --git a/exec/main.c b/exec/main.c > index d23e244..1641aee 100644 > --- a/exec/main.c > +++ b/exec/main.c > @@ -127,6 +127,8 @@ static enum cs_sync_mode minimum_sync_mode; > > static int sync_in_process = 1; > > +static pthread_mutex_t sync_in_process_mutex = PTHREAD_MUTEX_INITIALIZER; > + > static hdb_handle_t corosync_poll_handle; > > struct sched_param global_sched_param; > @@ -274,11 +276,15 @@ static void corosync_sync_completed (void) > { > log_printf (LOGSYS_LEVEL_NOTICE, > "Completed service synchronization, ready to provide service.\n"); > + > + pthread_mutex_lock(&sync_in_process_mutex); > sync_in_process = 0; > /* > * Inform totem to start using new message queue again > */ > totempg_trans_ack(); > + > + pthread_mutex_unlock(&sync_in_process_mutex); > } > > static int corosync_sync_callbacks_retrieve (int sync_id, > @@ -447,10 +453,14 @@ static void confchg_fn ( > int i; > int abort_activate = 0; > > + pthread_mutex_lock(&sync_in_process_mutex); > + > if (sync_in_process == 1) { > abort_activate = 1; > } > sync_in_process = 1; > + > + pthread_mutex_unlock(&sync_in_process_mutex); > serialize_lock (); > memcpy (&corosync_ring_id, ring_id, sizeof (struct memb_ring_id)); > > @@ -1052,6 +1062,8 @@ static int corosync_sending_allowed ( > return (-1); > } > > + pthread_mutex_lock(&sync_in_process_mutex); > + > sending_allowed = > (corosync_quorum_is_quorate() == 1 || > ais_service[service]->allow_inquorate == CS_LIB_ALLOW_INQUORATE) && > @@ -1060,6 +1072,8 @@ static int corosync_sending_allowed ( > (pd->reserved_msgs) && > (sync_in_process == 0))); > > + pthread_mutex_unlock(&sync_in_process_mutex); > + > return (sending_allowed); > } > > _______________________________________________ discuss mailing list discuss@xxxxxxxxxxxx http://lists.corosync.org/mailman/listinfo/discuss