[Ocfs2-commits] zab commits r2044 - trunk/fs/ocfs2/cluster
svn-commits at oss.oracle.com
svn-commits at oss.oracle.com
Wed Mar 23 22:17:33 CST 2005
Author: zab
Signed-off-by: mfasheh
Date: 2005-03-23 22:17:32 -0600 (Wed, 23 Mar 2005)
New Revision: 2044
Modified:
trunk/fs/ocfs2/cluster/heartbeat.c
trunk/fs/ocfs2/cluster/nodemanager.c
trunk/fs/ocfs2/cluster/nodemanager.h
Log:
o only watch the hb blocks for nodes that we have configured. This reduces the amount of
hb IO for 1.0 and we weren't doing anything with hb activity for unknown blocks anyway.
Signed-off-by: mfasheh
Modified: trunk/fs/ocfs2/cluster/heartbeat.c
===================================================================
--- trunk/fs/ocfs2/cluster/heartbeat.c 2005-03-24 02:06:26 UTC (rev 2043)
+++ trunk/fs/ocfs2/cluster/heartbeat.c 2005-03-24 04:17:32 UTC (rev 2044)
@@ -250,9 +250,14 @@
LIST_HEAD(deceased);
u64 cputime;
int i, rw;
+ unsigned long configured_nodes[BITS_TO_LONGS(NM_MAX_NODES)];
+ if (nm_configured_node_map(configured_nodes, sizeof(configured_nodes)))
+ return;
+
/* first we clear uptodate on other nodes slots and write our slot */
- for(i = 0; i < reg->hr_blocks; i++) {
+ i = -1;
+ while((i = find_next_bit(configured_nodes, NM_MAX_NODES, i + 1)) < NM_MAX_NODES) {
slot = ®->hr_slots[i];
bh = hb_get_locked_mapped(reg, slot);
@@ -285,7 +290,8 @@
}
/* now we read again and see what other nodes have done */
- for(i = 0; i < reg->hr_blocks; i++) {
+ i = -1;
+ while((i = find_next_bit(configured_nodes, NM_MAX_NODES, i + 1)) < NM_MAX_NODES) {
slot = ®->hr_slots[i];
bh = slot->ds_bh;
Modified: trunk/fs/ocfs2/cluster/nodemanager.c
===================================================================
--- trunk/fs/ocfs2/cluster/nodemanager.c 2005-03-24 02:06:26 UTC (rev 2043)
+++ trunk/fs/ocfs2/cluster/nodemanager.c 2005-03-24 04:17:32 UTC (rev 2044)
@@ -89,6 +89,8 @@
rwlock_t cl_nodes_lock;
struct nm_node *cl_nodes[NM_MAX_NODES];
struct rb_root cl_node_ip_tree;
+ /* this bitmap is part of a hack for disk bitmap.. will go eventually. - zab */
+ unsigned long cl_nodes_bitmap[BITS_TO_LONGS(NM_MAX_NODES)];
};
struct nm_node * nm_get_node_by_num(u8 node_num)
@@ -108,6 +110,23 @@
}
EXPORT_SYMBOL(nm_get_node_by_num);
+int nm_configured_node_map(unsigned long *map, unsigned bytes)
+{
+ struct nm_cluster *cluster = nm_single_cluster;
+
+ BUG_ON(bytes < (sizeof(cluster->cl_nodes_bitmap)));
+
+ if (cluster == NULL)
+ return -EINVAL;
+
+ read_lock(&cluster->cl_nodes_lock);
+ memcpy(map, cluster->cl_nodes_bitmap, sizeof(cluster->cl_nodes_bitmap));
+ read_unlock(&cluster->cl_nodes_lock);
+
+ return 0;
+}
+EXPORT_SYMBOL(nm_configured_node_map);
+
static struct nm_node * nm_node_ip_tree_lookup(struct nm_cluster *cluster,
u32 ip_needle,
struct rb_node ***ret_p,
@@ -228,6 +247,7 @@
else {
cluster->cl_nodes[tmp] = node;
node->nd_num = tmp;
+ set_bit(tmp, cluster->cl_nodes_bitmap);
}
write_unlock(&cluster->cl_nodes_lock);
if (p == NULL)
@@ -517,6 +537,7 @@
else {
cluster->cl_nodes[node->nd_num] = NULL;
node->nd_num = NM_MAX_NODES;
+ clear_bit(node->nd_num, cluster->cl_nodes_bitmap);
}
}
write_unlock(&cluster->cl_nodes_lock);
Modified: trunk/fs/ocfs2/cluster/nodemanager.h
===================================================================
--- trunk/fs/ocfs2/cluster/nodemanager.h 2005-03-24 02:06:26 UTC (rev 2043)
+++ trunk/fs/ocfs2/cluster/nodemanager.h 2005-03-24 04:17:32 UTC (rev 2044)
@@ -89,6 +89,7 @@
u8 nm_this_node(void);
+int nm_configured_node_map(unsigned long *map, unsigned bytes);
struct nm_node * nm_get_node_by_num(u8 node_num);
struct nm_node * nm_get_node_by_ip(u32 addr);
void nm_node_put(struct nm_node *node);
More information about the Ocfs2-commits
mailing list