From: Liu Yuan <tailai.ly at taobao.com> After the new node joins, command *collie-vdi-list* cannot list any vdi information, that are created before this node is joined. This is because in the join phase, get_vdi_bitmap_from_all() cannot get corret vdi bitmap *if* there is no node in sd_node_list. This patch moves this function after the function which updates the sd_node_list. With this patch, collie-vdi-list works as expected in newly added nodes. Signed-off-by: Liu Yuan <tailai.ly at taobao.com> --- sheep/group.c | 13 ++----------- 1 files changed, 2 insertions(+), 11 deletions(-) diff --git a/sheep/group.c b/sheep/group.c index eb0c4e2..22c4f66 100644 --- a/sheep/group.c +++ b/sheep/group.c @@ -863,17 +863,6 @@ static void __sd_deliver(struct cpg_event *cevent) break; } } - - if (m->state == DM_FIN) { - switch (m->op) { - case SD_MSG_JOIN: - if (((struct join_message *)m)->cluster_status == SD_STATUS_OK) - if (sys->status != SD_STATUS_OK) - get_vdi_bitmap_from_all(); - break; - } - } - } static void send_join_response(struct work_deliver *w) @@ -902,6 +891,8 @@ static void __sd_deliver_done(struct cpg_event *cevent) switch (m->op) { case SD_MSG_JOIN: update_cluster_info((struct join_message *)m); + if (((struct join_message *)m)->cluster_status == SD_STATUS_OK) + get_vdi_bitmap_from_all(); break; case SD_MSG_LEAVE: node = find_node(&sys->sd_node_list, m->nodeid, m->pid); -- 1.7.5.1 |