[Sheepdog] [PATCH 3/6] add get_ordered_sd_node_list helper function

FUJITA Tomonori fujita.tomonori at lab.ntt.co.jp
Fri Apr 9 09:10:42 CEST 2010


Signed-off-by: FUJITA Tomonori <fujita.tomonori at lab.ntt.co.jp>
---
 collie/group.c |   19 ++++++++++++-------
 1 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/collie/group.c b/collie/group.c
index 47cc878..12ebb0d 100644
--- a/collie/group.c
+++ b/collie/group.c
@@ -144,13 +144,18 @@ static int get_node_idx(struct sheepdog_node_list_entry *ent,
 	return ent - entries;
 }
 
+static int get_ordered_sd_node_list(struct sheepdog_node_list_entry *entries)
+{
+	return build_node_list(&sys->sd_node_list, entries);
+}
+
 static void get_node_list(struct sd_node_req *req,
 			  struct sd_node_rsp *rsp, void *data)
 {
 	int nr_nodes;
 	struct node *node;
 
-	nr_nodes = build_node_list(&sys->sd_node_list, data);
+	nr_nodes = get_ordered_sd_node_list(data);
 	rsp->data_length = nr_nodes * sizeof(struct sheepdog_node_list_entry);
 	rsp->nr_nodes = nr_nodes;
 	rsp->local_idx = get_node_idx(&sys->this_node, data, nr_nodes);
@@ -378,7 +383,7 @@ static int get_cluster_status(struct sheepdog_node_list_entry *node)
 	if (memcmp(entries, local_entries, sizeof(entries[0]) * nr_entries) != 0)
 		return SD_STATUS_INCONSISTENT_EPOCHS;
 
-	nr_entries = build_node_list(&sys->sd_node_list, entries);
+	nr_entries = get_ordered_sd_node_list(entries);
 	if (nr_entries + 1 != nr_local_entries)
 		return SD_STATUS_STARTUP;
 
@@ -439,7 +444,7 @@ static void get_vdi_bitmap_from_all(void)
 	 * we don't need the proper order but this is the simplest
 	 * way.
 	 */
-	nr_nodes = build_node_list(&sys->sd_node_list, entry);
+	nr_nodes = get_ordered_sd_node_list(entry);
 
 	for (i = 0; i < nr_nodes; i++) {
 		if (is_myself(&entry[i]))
@@ -513,7 +518,7 @@ static void update_cluster_info(struct join_message *msg)
 
 	eprintf("system status = %d, epoch = %d\n", msg->cluster_status, sys->epoch);
 	if (sys->status == SD_STATUS_OK) {
-		nr_nodes = build_node_list(&sys->sd_node_list, entry);
+		nr_nodes = get_ordered_sd_node_list(entry);
 
 		dprintf("update epoch, %d, %d\n", sys->epoch, nr_nodes);
 		ret = epoch_log_write(sys->epoch, (char *)entry,
@@ -526,7 +531,7 @@ out:
 	add_node(&sys->sd_node_list, msg->nodeid, msg->pid, &msg->header.from);
 
 	if (sys->status == SD_STATUS_OK) {
-		nr_nodes = build_node_list(&sys->sd_node_list, entry);
+		nr_nodes = get_ordered_sd_node_list(entry);
 
 		dprintf("update epoch, %d, %d\n", sys->epoch + 1, nr_nodes);
 		ret = epoch_log_write(sys->epoch + 1, (char *)entry,
@@ -667,7 +672,7 @@ static void vdi_op_done(struct vdi_op_message *msg)
 			remove_epoch(i);
 
 		sys->epoch = 1;
-		nr_nodes = build_node_list(&sys->sd_node_list, entry);
+		nr_nodes = get_ordered_sd_node_list(entry);
 
 		dprintf("write epoch log, %d, %d\n", sys->epoch, nr_nodes);
 		ret = epoch_log_write(sys->epoch, (char *)entry,
@@ -893,7 +898,7 @@ static void __sd_confch(struct work *work, int idx)
 			free(node);
 
 			if (sys->status == SD_STATUS_OK) {
-				nr = build_node_list(&sys->sd_node_list, e);
+				nr = get_ordered_sd_node_list(e);
 				dprintf("update epoch, %d, %d\n", sys->epoch + 1, nr);
 				epoch_log_write(sys->epoch + 1, (char *)e,
 						nr * sizeof(struct sheepdog_node_list_entry));
-- 
1.7.0




More information about the sheepdog mailing list