From cf4e2069b6fa1ff0f1de9e20fc007017ddb60f37 Mon Sep 17 00:00:00 2001 From: Steven Dake Date: Tue, 30 Mar 2010 08:23:10 +0000 Subject: [PATCH] Fix barrier operation with syncv2 and compat:none or openais service engines. git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2750 fd59a12c-fef9-0310-b244-a6a79926bd2f --- exec/syncv2.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/exec/syncv2.c b/exec/syncv2.c index e0521f04..40086ec0 100644 --- a/exec/syncv2.c +++ b/exec/syncv2.c @@ -244,6 +244,11 @@ static void sync_barrier_handler (unsigned int nodeid, const void *msg) } } 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 @@ static int schedwrk_processor (const void *context) 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); }