[sheepdog] [PATCH v6 7/8] sheep: remove some unused copies related functions

levin li levin108 at gmail.com
Thu Aug 23 05:48:41 CEST 2012


From: levin li <xingke.lwp at taobao.com>


Signed-off-by: levin li <xingke.lwp at taobao.com>
---
 sheep/group.c |   36 +++++++++++-------------------------
 sheep/ops.c   |    3 +--
 2 files changed, 12 insertions(+), 27 deletions(-)

diff --git a/sheep/group.c b/sheep/group.c
index 11ea5ff..4510ab7 100644
--- a/sheep/group.c
+++ b/sheep/group.c
@@ -91,20 +91,27 @@ static int get_zones_nr_from(struct sd_node *nodes, int nr_nodes)
 
 bool have_enough_zones(void)
 {
+	int max_copies;
+
 	if (sys->flags & SD_FLAG_NOHALT)
 		return true;
 
 	if (!current_vnode_info)
 		return false;
 
-	dprintf("flags %d, nr_zones %d, copies %d\n",
-		sys->flags, current_vnode_info->nr_zones, sys->nr_copies);
+	max_copies = get_max_copy_number();
+
+	dprintf("flags %d, nr_zones %d, min copies %d\n",
+		sys->flags, current_vnode_info->nr_zones, max_copies);
+
+	if (!current_vnode_info->nr_zones)
+		return false;
 
 	if (sys->flags & SD_FLAG_QUORUM) {
-		if (current_vnode_info->nr_zones > (sys->nr_copies/2))
+		if (current_vnode_info->nr_zones > (max_copies/2))
 			return true;
 	} else {
-		if (current_vnode_info->nr_zones >= sys->nr_copies)
+		if (current_vnode_info->nr_zones >= max_copies)
 			return true;
 	}
 	return false;
@@ -121,18 +128,6 @@ static int get_node_idx(struct vnode_info *vnode_info, struct sd_node *ent)
 }
 
 /*
- * If we have less zones available than the desired redundancy we have to do
- * with nr_zones copies, sorry.
- *
- * Note that you generally want to use get_nr_copies below, as it uses the
- * current vnode state snapshot instead of global data.
- */
-int get_max_nr_copies_from(struct sd_node *nodes, int nr_nodes)
-{
-	return min((int)sys->nr_copies, get_zones_nr_from(nodes, nr_nodes));
-}
-
-/*
  * Grab an additional reference to the passed in vnode info.
  *
  * The caller must already hold a reference to vnode_info, this function must
@@ -244,15 +239,6 @@ int local_get_node_list(const struct sd_req *req, struct sd_rsp *rsp,
 }
 
 /*
- * If we have less zones available than the desired redundancy we have to do
- * with nr_zones copies, sorry.
- */
-int get_nr_copies(struct vnode_info *vnode_info)
-{
-	return min(vnode_info->nr_zones, (int)sys->nr_copies);
-}
-
-/*
  * Indicator if a cluster operation is currently running.
  */
 static bool cluster_op_running = false;
diff --git a/sheep/ops.c b/sheep/ops.c
index 2cba16a..42b99ef 100644
--- a/sheep/ops.c
+++ b/sheep/ops.c
@@ -410,7 +410,7 @@ static int local_stat_cluster(struct request *req)
 			log->nr_nodes = epoch_log_read_remote(epoch, log->nodes,
 							      sizeof(log->nodes));
 
-		log->nr_copies = get_max_nr_copies_from(log->nodes, log->nr_nodes);
+		log->nr_copies = sys->nr_copies;
 
 		rsp->data_length += sizeof(*log);
 		/* FIXME: this hack would require sizeof(time_t) < sizeof(log->nodes[0]) */
@@ -754,7 +754,6 @@ int peer_read_obj(struct request *req)
 		goto out;
 
 	rsp->data_length = hdr->data_length;
-	rsp->obj.copies = sys->nr_copies;
 out:
 	return ret;
 }
-- 
1.7.1




More information about the sheepdog mailing list