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
This commit is contained in:
Steven Dake 2010-03-30 08:23:10 +00:00
parent 5371fc9ede
commit cf4e2069b6

View File

@ -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);
}