update_cluster_info() updates global variables, so we can this function only in main thread.
Signed-off-by: MORITA Kazutaka <[email protected]> --- sheep/group.c | 23 ++++++++++++----------- 1 files changed, 12 insertions(+), 11 deletions(-) diff --git a/sheep/group.c b/sheep/group.c index ae7b385..2826db3 100644 --- a/sheep/group.c +++ b/sheep/group.c @@ -823,17 +823,6 @@ static void __sd_deliver(struct cpg_event *cevent) break; } } - - if (m->state == DM_FIN) { - switch (m->op) { - case SD_MSG_JOIN: - update_cluster_info((struct join_message *)m); - break; - default: - eprintf("unknown message %d\n", m->op); - break; - } - } } static void send_join_response(struct work_deliver *w) @@ -854,6 +843,18 @@ static void __sd_deliver_done(struct cpg_event *cevent) int do_recovery; m = w->msg; + + if (m->state == DM_FIN) { + switch (m->op) { + case SD_MSG_JOIN: + update_cluster_info((struct join_message *)m); + break; + default: + eprintf("unknown message %d\n", m->op); + break; + } + } + do_recovery = (m->state == DM_FIN && m->op == SD_MSG_JOIN); dprintf("op: %d, state: %u, size: %d, from: %s\n", -- 1.5.6.5 -- sheepdog mailing list [email protected] http://lists.wpkg.org/mailman/listinfo/sheepdog
