Re: [PATCH 06/11] votequorum: make a common function to calculate votes and cluster members

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



ACK

Reviewed-By: Christine Caulfield <ccaulfie@xxxxxxxxxx>

On 02/03/12 11:02, Fabio M. Di Nitto wrote:
From: "Fabio M. Di Nitto"<fdinitto@xxxxxxxxxx>

Signed-off-by: Fabio M. Di Nitto<fdinitto@xxxxxxxxxx>
---
  exec/votequorum.c |   36 +++++++++++++++++++++++++-----------
  1 files changed, 25 insertions(+), 11 deletions(-)

diff --git a/exec/votequorum.c b/exec/votequorum.c
index e891247..f26091b 100644
--- a/exec/votequorum.c
+++ b/exec/votequorum.c
@@ -711,13 +711,10 @@ static void are_we_quorate(unsigned int total_votes)
  	LEAVE();
  }

-/*
- * Recalculate cluster quorum, set quorate and notify changes
- */
-static void recalculate_quorum(int allow_decrease, int by_current_nodes)
+static void get_total_votes(unsigned int *totalvotes, unsigned int *current_members)
  {
  	unsigned int total_votes = 0;
-	int cluster_members = 0;
+	unsigned int cluster_members = 0;
  	struct list_head *nodelist;
  	struct cluster_node *node;

@@ -726,18 +723,35 @@ static void recalculate_quorum(int allow_decrease, int by_current_nodes)
  	list_iterate(nodelist,&cluster_members_list) {
  		node = list_entry(nodelist, struct cluster_node, list);
  		if (node->state == NODESTATE_MEMBER) {
-			if (by_current_nodes) {
-				cluster_members++;
-			}
+			cluster_members++;
  			total_votes += node->votes;
  		}
  	}

  	if (qdevice->votes) {
  		total_votes += qdevice->votes;
-		if (by_current_nodes) {
-			cluster_members++;
-		}
+		cluster_members++;
+	}
+	*totalvotes = total_votes;
+	*current_members = cluster_members;
+
+	LEAVE();
+}
+
+/*
+ * Recalculate cluster quorum, set quorate and notify changes
+ */
+static void recalculate_quorum(int allow_decrease, int by_current_nodes)
+{
+	unsigned int total_votes = 0;
+	unsigned int cluster_members = 0;
+
+	ENTER();
+
+	get_total_votes(&total_votes,&cluster_members);
+
+	if (!by_current_nodes) {
+		cluster_members = 0;
  	}

  	/*

_______________________________________________
discuss mailing list
discuss@xxxxxxxxxxxx
http://lists.corosync.org/mailman/listinfo/discuss


[Index of Archives]     [Linux Clusters]     [Corosync Project]     [Linux USB Devel]     [Linux Audio Users]     [Photo]     [Yosemite News]    [Yosemite Photos]    [Linux Kernel]     [Linux SCSI]     [X.Org]

  Powered by Linux