aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/proc/proc_sysctl.c4
-rw-r--r--include/linux/rbtree.h15
-rw-r--r--include/linux/timerqueue.h2
-rw-r--r--lib/rbtree.c4
-rw-r--r--net/ceph/osd_client.c1
5 files changed, 9 insertions, 17 deletions
diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
index dcd56f84db7e..fddc50729632 100644
--- a/fs/proc/proc_sysctl.c
+++ b/fs/proc/proc_sysctl.c
@@ -168,10 +168,8 @@ static void init_header(struct ctl_table_header *head,
168 head->node = node; 168 head->node = node;
169 if (node) { 169 if (node) {
170 struct ctl_table *entry; 170 struct ctl_table *entry;
171 for (entry = table; entry->procname; entry++, node++) { 171 for (entry = table; entry->procname; entry++, node++)
172 rb_init_node(&node->node);
173 node->header = head; 172 node->header = head;
174 }
175 } 173 }
176} 174}
177 175
diff --git a/include/linux/rbtree.h b/include/linux/rbtree.h
index e6a807720ded..2049087c43b7 100644
--- a/include/linux/rbtree.h
+++ b/include/linux/rbtree.h
@@ -67,17 +67,12 @@ static inline void rb_set_color(struct rb_node *rb, int color)
67#define RB_ROOT (struct rb_root) { NULL, } 67#define RB_ROOT (struct rb_root) { NULL, }
68#define rb_entry(ptr, type, member) container_of(ptr, type, member) 68#define rb_entry(ptr, type, member) container_of(ptr, type, member)
69 69
70#define RB_EMPTY_ROOT(root) ((root)->rb_node == NULL) 70#define RB_EMPTY_ROOT(root) ((root)->rb_node == NULL)
71#define RB_EMPTY_NODE(node) (rb_parent(node) == node) 71
72#define RB_CLEAR_NODE(node) (rb_set_parent(node, node)) 72/* 'empty' nodes are nodes that are known not to be inserted in an rbree */
73#define RB_EMPTY_NODE(node) ((node)->rb_parent_color == (unsigned long)(node))
74#define RB_CLEAR_NODE(node) ((node)->rb_parent_color = (unsigned long)(node))
73 75
74static inline void rb_init_node(struct rb_node *rb)
75{
76 rb->rb_parent_color = 0;
77 rb->rb_right = NULL;
78 rb->rb_left = NULL;
79 RB_CLEAR_NODE(rb);
80}
81 76
82extern void rb_insert_color(struct rb_node *, struct rb_root *); 77extern void rb_insert_color(struct rb_node *, struct rb_root *);
83extern void rb_erase(struct rb_node *, struct rb_root *); 78extern void rb_erase(struct rb_node *, struct rb_root *);
diff --git a/include/linux/timerqueue.h b/include/linux/timerqueue.h
index 5088727478fd..a520fd70a59f 100644
--- a/include/linux/timerqueue.h
+++ b/include/linux/timerqueue.h
@@ -39,7 +39,7 @@ struct timerqueue_node *timerqueue_getnext(struct timerqueue_head *head)
39 39
40static inline void timerqueue_init(struct timerqueue_node *node) 40static inline void timerqueue_init(struct timerqueue_node *node)
41{ 41{
42 rb_init_node(&node->node); 42 RB_CLEAR_NODE(&node->node);
43} 43}
44 44
45static inline void timerqueue_init_head(struct timerqueue_head *head) 45static inline void timerqueue_init_head(struct timerqueue_head *head)
diff --git a/lib/rbtree.c b/lib/rbtree.c
index d4175565dc2c..fe43c8c5f527 100644
--- a/lib/rbtree.c
+++ b/lib/rbtree.c
@@ -387,7 +387,7 @@ struct rb_node *rb_next(const struct rb_node *node)
387{ 387{
388 struct rb_node *parent; 388 struct rb_node *parent;
389 389
390 if (rb_parent(node) == node) 390 if (RB_EMPTY_NODE(node))
391 return NULL; 391 return NULL;
392 392
393 /* If we have a right-hand child, go down and then left as far 393 /* If we have a right-hand child, go down and then left as far
@@ -416,7 +416,7 @@ struct rb_node *rb_prev(const struct rb_node *node)
416{ 416{
417 struct rb_node *parent; 417 struct rb_node *parent;
418 418
419 if (rb_parent(node) == node) 419 if (RB_EMPTY_NODE(node))
420 return NULL; 420 return NULL;
421 421
422 /* If we have a left-hand child, go down and then right as far 422 /* If we have a left-hand child, go down and then right as far
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
index ccbdfbba9e53..c1d756cc7448 100644
--- a/net/ceph/osd_client.c
+++ b/net/ceph/osd_client.c
@@ -221,7 +221,6 @@ struct ceph_osd_request *ceph_osdc_alloc_request(struct ceph_osd_client *osdc,
221 kref_init(&req->r_kref); 221 kref_init(&req->r_kref);
222 init_completion(&req->r_completion); 222 init_completion(&req->r_completion);
223 init_completion(&req->r_safe_completion); 223 init_completion(&req->r_safe_completion);
224 rb_init_node(&req->r_node);
225 INIT_LIST_HEAD(&req->r_unsafe_item); 224 INIT_LIST_HEAD(&req->r_unsafe_item);
226 INIT_LIST_HEAD(&req->r_linger_item); 225 INIT_LIST_HEAD(&req->r_linger_item);
227 INIT_LIST_HEAD(&req->r_linger_osd); 226 INIT_LIST_HEAD(&req->r_linger_osd);