On 2012年08月03日 14:08, MORITA Kazutaka wrote: > At Wed, 1 Aug 2012 10:56:15 +0800, > levin li wrote: >> >> From: levin li <[email protected]> >> >> When epoch changes, new node join or old node leave, we should >> recalculate the vnode_info for every sd_node, and the disk space >> is stored in sd_node, transfered to every other node together with >> join message. >> >> Signed-off-by: levin li <[email protected]> >> --- >> include/internal_proto.h | 1 + >> sheep/group.c | 24 ++++++++++++++++++++++++ >> 2 files changed, 25 insertions(+), 0 deletions(-) >> >> diff --git a/include/internal_proto.h b/include/internal_proto.h >> index 3e22124..d48c8af 100644 >> --- a/include/internal_proto.h >> +++ b/include/internal_proto.h >> @@ -174,6 +174,7 @@ struct sd_node { >> struct node_id nid; >> uint16_t nr_vnodes; >> uint32_t zone; >> + uint32_t space; >> }; > > Please increment SD_SHEEP_PROTO_VER when changing this structure. >
OK > >> static void update_cluster_info(struct join_message *msg, >> struct sd_node *joined, struct sd_node *nodes, >> size_t nr_nodes) >> @@ -784,6 +802,8 @@ static void update_cluster_info(struct join_message *msg, >> if (!sys->join_finished) >> finish_join(msg, joined, nodes, nr_nodes); >> >> + recalculate_vnodes(nodes, nr_nodes); >> + >> old_vnode_info = current_vnode_info; >> current_vnode_info = alloc_vnode_info(nodes, nr_nodes); > > IIUC, This recalculation should be done only when > sys->disable_recovery is false. In addition, you need to recalculate > vnodes when automatic object recovery is turned on in > cluster_enable_recover(). > > Thanks, > > Kazutaka > I'll rebase this patch since the delay recovery patchset was merged. thanks levin -- sheepdog mailing list [email protected] http://lists.wpkg.org/mailman/listinfo/sheepdog
