[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