[Ocfs2-commits] khackel commits r1791 - trunk/cluster

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Tue Jan 18 16:53:07 CST 2005


Author: khackel
Date: 2005-01-18 16:53:05 -0600 (Tue, 18 Jan 2005)
New Revision: 1791

Modified:
   trunk/cluster/nodemanager.c
   trunk/cluster/nodemanager.h
Log:
fix hweight for 64 bit

Modified: trunk/cluster/nodemanager.c
===================================================================
--- trunk/cluster/nodemanager.c	2005-01-18 22:21:17 UTC (rev 1790)
+++ trunk/cluster/nodemanager.c	2005-01-18 22:53:05 UTC (rev 1791)
@@ -723,15 +723,16 @@
 	return ret;
 }
 
+
 int nm_get_cluster_num_nodes(char *buf)
 {
 	int num_nodes=0, i;
 	
 	nmprintk("get cluster num nodes...\n");
 
-	spin_lock(&cluster.bitmap_lock);
-	for (i=0; i<8; i++)
-		num_nodes += hweight32(cluster.node_bitmap[i]);
+	spin_lock(&cluster.bitmap_lock); 
+	for (i=0; i<ARRAY_SIZE(cluster.node_bitmap); i++)
+		num_nodes += nm_hweight(cluster.node_bitmap[i]);
 	spin_unlock(&cluster.bitmap_lock);
 
 	return sprintf(buf, "0: %d", num_nodes);
@@ -744,8 +745,8 @@
 	nmprintk("get cluster num groups...\n");
 
 	spin_lock(&cluster.bitmap_lock);
-	for (i=0; i<8; i++)
-		num_groups += hweight32(cluster.group_bitmap[i]);
+	for (i=0; i<ARRAY_SIZE(cluster.group_bitmap); i++)
+		num_groups += nm_hweight(cluster.group_bitmap[i]);
 	spin_unlock(&cluster.bitmap_lock);
 
 	return sprintf(buf, "0: %d", num_groups);
@@ -763,38 +764,13 @@
 		return -EINVAL;
 
 	spin_lock(&g->bitmap_lock);
-	for (i=0; i<8; i++)
-		num_nodes += hweight32(g->slot_bitmap[i]);
+	for (i=0; i<ARRAY_SIZE(g->slot_bitmap); i++)
+		num_nodes += nm_hweight(g->slot_bitmap[i]);
 	spin_unlock(&g->bitmap_lock);
 
 	return num_nodes;
 }
 
-int nm_get_group_max_slots(struct inode *group)
-{
-	int last=0, i;
-	nm_group_inode_private *g;
-	
-	nmprintk("get group num nodes...\n");
-	
-	g = group->u.generic_ip;
-	if (!g)
-		return -EINVAL;
-
-#warning need to change this for 64 bit 
-	spin_lock(&g->bitmap_lock);
-	for (i=7; i>=0; i--) {
-		if (g->slot_bitmap[i]) {
-			last = fls(g->slot_bitmap[i]);
-			last += (i * sizeof(g->slot_bitmap[i]));
-			break;
-		}
-	}
-	spin_unlock(&g->bitmap_lock);
-
-	return last;
-}
-
 void * nm_iterate_group_disk_slots(struct inode *group, int *idx)
 {
 	nm_group_inode_private *priv;

Modified: trunk/cluster/nodemanager.h
===================================================================
--- trunk/cluster/nodemanager.h	2005-01-18 22:21:17 UTC (rev 1790)
+++ trunk/cluster/nodemanager.h	2005-01-18 22:53:05 UTC (rev 1791)
@@ -32,6 +32,17 @@
 
 #include "ocfs2_nodemanager.h"
 
+
+#if BITS_PER_LONG == 32
+# define nm_hweight hweight32
+#elif BITS_PER_LONG == 64
+# define nm_hweight hweight64
+#else
+# error BITS_PER_LONG is something awful
+#endif
+
+
+
 struct _nm_ctxt
 {
 	int dummy;
@@ -131,7 +142,6 @@
 int nm_register_callback(int type, void (*func)(void *, void *, u16));
 int nm_unregister_callback(int type, void (*func)(void *, void *, u16));
 int nm_get_group_num_nodes(struct inode *group);
-int nm_get_group_max_slots(struct inode *group);
 int nm_make_group_ready(struct inode *group);
 void * nm_iterate_group_disk_slots(struct inode *group, int *idx);
 int nm_remove_node_from_group(struct inode *group, struct inode *node);



More information about the Ocfs2-commits mailing list