diff options
| author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-20 17:51:22 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-20 17:51:22 -0400 |
| commit | 2edc322d420a4cec8dbc184a1220ecd7fa9f8ae6 (patch) | |
| tree | e7be2cf442626316b6b6fb212960fe1f77ff2725 | |
| parent | be967b7e2f7747a5ebf2a07ee627d9338491e784 (diff) | |
| parent | 2f3243aebd8df4d9eecaeca04bbff6c7dbfb2142 (diff) | |
Merge git://git.infradead.org/~dwmw2/rbtree-2.6
* git://git.infradead.org/~dwmw2/rbtree-2.6:
[RBTREE] Switch rb_colour() et al to en_US spelling of 'color' for consistency
Update UML kernel/physmem.c to use rb_parent() accessor macro
[RBTREE] Update hrtimers to use rb_parent() accessor macro.
[RBTREE] Add explicit alignment to sizeof(long) for struct rb_node.
[RBTREE] Merge colour and parent fields of struct rb_node.
[RBTREE] Remove dead code in rb_erase()
[RBTREE] Update JFFS2 to use rb_parent() accessor macro.
[RBTREE] Update eventpoll.c to use rb_parent() accessor macro.
[RBTREE] Update key.c to use rb_parent() accessor macro.
[RBTREE] Update ext3 to use rb_parent() accessor macro.
[RBTREE] Change rbtree off-tree marking in I/O schedulers.
[RBTREE] Add accessor macros for colour and parent fields of rb_node
| -rw-r--r-- | arch/um/kernel/physmem.c | 2 | ||||
| -rw-r--r-- | block/as-iosched.c | 5 | ||||
| -rw-r--r-- | block/cfq-iosched.c | 8 | ||||
| -rw-r--r-- | block/deadline-iosched.c | 5 | ||||
| -rw-r--r-- | fs/eventpoll.c | 6 | ||||
| -rw-r--r-- | fs/ext3/dir.c | 2 | ||||
| -rw-r--r-- | fs/jffs2/nodelist.h | 1 | ||||
| -rw-r--r-- | fs/jffs2/readinode.c | 18 | ||||
| -rw-r--r-- | include/linux/hrtimer.h | 2 | ||||
| -rw-r--r-- | include/linux/rbtree.h | 26 | ||||
| -rw-r--r-- | kernel/hrtimer.c | 4 | ||||
| -rw-r--r-- | lib/rbtree.c | 189 | ||||
| -rw-r--r-- | security/keys/key.c | 8 |
13 files changed, 140 insertions, 136 deletions
diff --git a/arch/um/kernel/physmem.c b/arch/um/kernel/physmem.c index fc0f0b085ca7..166cb09cae4c 100644 --- a/arch/um/kernel/physmem.c +++ b/arch/um/kernel/physmem.c | |||
| @@ -69,7 +69,7 @@ static void insert_phys_mapping(struct phys_desc *desc) | |||
| 69 | panic("Physical remapping for %p already present", | 69 | panic("Physical remapping for %p already present", |
| 70 | desc->virt); | 70 | desc->virt); |
| 71 | 71 | ||
| 72 | rb_link_node(&desc->rb, (*n)->rb_parent, n); | 72 | rb_link_node(&desc->rb, rb_parent(*n), n); |
| 73 | rb_insert_color(&desc->rb, &phys_mappings); | 73 | rb_insert_color(&desc->rb, &phys_mappings); |
| 74 | } | 74 | } |
| 75 | 75 | ||
diff --git a/block/as-iosched.c b/block/as-iosched.c index a7caf35ca0c2..0c750393be4a 100644 --- a/block/as-iosched.c +++ b/block/as-iosched.c | |||
| @@ -353,10 +353,9 @@ static struct request *as_find_arq_hash(struct as_data *ad, sector_t offset) | |||
| 353 | /* | 353 | /* |
| 354 | * rb tree support functions | 354 | * rb tree support functions |
| 355 | */ | 355 | */ |
| 356 | #define RB_NONE (2) | ||
| 357 | #define RB_EMPTY(root) ((root)->rb_node == NULL) | 356 | #define RB_EMPTY(root) ((root)->rb_node == NULL) |
| 358 | #define ON_RB(node) ((node)->rb_color != RB_NONE) | 357 | #define ON_RB(node) (rb_parent(node) != node) |
| 359 | #define RB_CLEAR(node) ((node)->rb_color = RB_NONE) | 358 | #define RB_CLEAR(node) (rb_set_parent(node, node)) |
| 360 | #define rb_entry_arq(node) rb_entry((node), struct as_rq, rb_node) | 359 | #define rb_entry_arq(node) rb_entry((node), struct as_rq, rb_node) |
| 361 | #define ARQ_RB_ROOT(ad, arq) (&(ad)->sort_list[(arq)->is_sync]) | 360 | #define ARQ_RB_ROOT(ad, arq) (&(ad)->sort_list[(arq)->is_sync]) |
| 362 | #define rq_rb_key(rq) (rq)->sector | 361 | #define rq_rb_key(rq) (rq)->sector |
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index 052b17487625..6200d9b9af28 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c | |||
| @@ -60,14 +60,9 @@ static DEFINE_SPINLOCK(cfq_exit_lock); | |||
| 60 | /* | 60 | /* |
| 61 | * rb-tree defines | 61 | * rb-tree defines |
| 62 | */ | 62 | */ |
| 63 | #define RB_NONE (2) | ||
| 64 | #define RB_EMPTY(node) ((node)->rb_node == NULL) | 63 | #define RB_EMPTY(node) ((node)->rb_node == NULL) |
| 65 | #define RB_CLEAR_COLOR(node) (node)->rb_color = RB_NONE | ||
| 66 | #define RB_CLEAR(node) do { \ | 64 | #define RB_CLEAR(node) do { \ |
| 67 | (node)->rb_parent = NULL; \ | 65 | memset(node, 0, sizeof(*node)); \ |
| 68 | RB_CLEAR_COLOR((node)); \ | ||
| 69 | (node)->rb_right = NULL; \ | ||
| 70 | (node)->rb_left = NULL; \ | ||
| 71 | } while (0) | 66 | } while (0) |
| 72 | #define RB_CLEAR_ROOT(root) ((root)->rb_node = NULL) | 67 | #define RB_CLEAR_ROOT(root) ((root)->rb_node = NULL) |
| 73 | #define rb_entry_crq(node) rb_entry((node), struct cfq_rq, rb_node) | 68 | #define rb_entry_crq(node) rb_entry((node), struct cfq_rq, rb_node) |
| @@ -567,7 +562,6 @@ static inline void cfq_del_crq_rb(struct cfq_rq *crq) | |||
| 567 | cfq_update_next_crq(crq); | 562 | cfq_update_next_crq(crq); |
| 568 | 563 | ||
| 569 | rb_erase(&crq->rb_node, &cfqq->sort_list); | 564 | rb_erase(&crq->rb_node, &cfqq->sort_list); |
| 570 | RB_CLEAR_COLOR(&crq->rb_node); | ||
| 571 | 565 | ||
| 572 | if (cfq_cfqq_on_rr(cfqq) && RB_EMPTY(&cfqq->sort_list)) | 566 | if (cfq_cfqq_on_rr(cfqq) && RB_EMPTY(&cfqq->sort_list)) |
| 573 | cfq_del_cfqq_rr(cfqd, cfqq); | 567 | cfq_del_cfqq_rr(cfqd, cfqq); |
diff --git a/block/deadline-iosched.c b/block/deadline-iosched.c index 3bd0415a9828..c94de8e12fbf 100644 --- a/block/deadline-iosched.c +++ b/block/deadline-iosched.c | |||
| @@ -165,10 +165,9 @@ deadline_find_drq_hash(struct deadline_data *dd, sector_t offset) | |||
| 165 | /* | 165 | /* |
| 166 | * rb tree support functions | 166 | * rb tree support functions |
| 167 | */ | 167 | */ |
| 168 | #define RB_NONE (2) | ||
| 169 | #define RB_EMPTY(root) ((root)->rb_node == NULL) | 168 | #define RB_EMPTY(root) ((root)->rb_node == NULL) |
| 170 | #define ON_RB(node) ((node)->rb_color != RB_NONE) | 169 | #define ON_RB(node) (rb_parent(node) != node) |
| 171 | #define RB_CLEAR(node) ((node)->rb_color = RB_NONE) | 170 | #define RB_CLEAR(node) (rb_set_parent(node, node)) |
| 172 | #define rb_entry_drq(node) rb_entry((node), struct deadline_rq, rb_node) | 171 | #define rb_entry_drq(node) rb_entry((node), struct deadline_rq, rb_node) |
| 173 | #define DRQ_RB_ROOT(dd, drq) (&(dd)->sort_list[rq_data_dir((drq)->request)]) | 172 | #define DRQ_RB_ROOT(dd, drq) (&(dd)->sort_list[rq_data_dir((drq)->request)]) |
| 174 | #define rq_rb_key(rq) (rq)->sector | 173 | #define rq_rb_key(rq) (rq)->sector |
diff --git a/fs/eventpoll.c b/fs/eventpoll.c index 1b4491cdd115..2695337d4d64 100644 --- a/fs/eventpoll.c +++ b/fs/eventpoll.c | |||
| @@ -337,20 +337,20 @@ static inline int ep_cmp_ffd(struct epoll_filefd *p1, | |||
| 337 | /* Special initialization for the rb-tree node to detect linkage */ | 337 | /* Special initialization for the rb-tree node to detect linkage */ |
| 338 | static inline void ep_rb_initnode(struct rb_node *n) | 338 | static inline void ep_rb_initnode(struct rb_node *n) |
| 339 | { | 339 | { |
| 340 | n->rb_parent = n; | 340 | rb_set_parent(n, n); |
| 341 | } | 341 | } |
| 342 | 342 | ||
| 343 | /* Removes a node from the rb-tree and marks it for a fast is-linked check */ | 343 | /* Removes a node from the rb-tree and marks it for a fast is-linked check */ |
| 344 | static inline void ep_rb_erase(struct rb_node *n, struct rb_root *r) | 344 | static inline void ep_rb_erase(struct rb_node *n, struct rb_root *r) |
| 345 | { | 345 | { |
| 346 | rb_erase(n, r); | 346 | rb_erase(n, r); |
| 347 | n->rb_parent = n; | 347 | rb_set_parent(n, n); |
| 348 | } | 348 | } |
| 349 | 349 | ||
| 350 | /* Fast check to verify that the item is linked to the main rb-tree */ | 350 | /* Fast check to verify that the item is linked to the main rb-tree */ |
| 351 | static inline int ep_rb_linked(struct rb_node *n) | 351 | static inline int ep_rb_linked(struct rb_node *n) |
| 352 | { | 352 | { |
| 353 | return n->rb_parent != n; | 353 | return rb_parent(n) != n; |
| 354 | } | 354 | } |
| 355 | 355 | ||
| 356 | /* | 356 | /* |
diff --git a/fs/ext3/dir.c b/fs/ext3/dir.c index f37528ed222e..fbb0d4ed07d4 100644 --- a/fs/ext3/dir.c +++ b/fs/ext3/dir.c | |||
| @@ -284,7 +284,7 @@ static void free_rb_tree_fname(struct rb_root *root) | |||
| 284 | * beginning of the loop and try to free the parent | 284 | * beginning of the loop and try to free the parent |
| 285 | * node. | 285 | * node. |
| 286 | */ | 286 | */ |
| 287 | parent = n->rb_parent; | 287 | parent = rb_parent(n); |
| 288 | fname = rb_entry(n, struct fname, rb_hash); | 288 | fname = rb_entry(n, struct fname, rb_hash); |
| 289 | while (fname) { | 289 | while (fname) { |
| 290 | struct fname * old = fname; | 290 | struct fname * old = fname; |
diff --git a/fs/jffs2/nodelist.h b/fs/jffs2/nodelist.h index 7ad8ee043880..b16c60bbcf6e 100644 --- a/fs/jffs2/nodelist.h +++ b/fs/jffs2/nodelist.h | |||
| @@ -315,7 +315,6 @@ static inline struct jffs2_node_frag *frag_last(struct rb_root *root) | |||
| 315 | return rb_entry(node, struct jffs2_node_frag, rb); | 315 | return rb_entry(node, struct jffs2_node_frag, rb); |
| 316 | } | 316 | } |
| 317 | 317 | ||
| 318 | #define rb_parent(rb) ((rb)->rb_parent) | ||
| 319 | #define frag_next(frag) rb_entry(rb_next(&(frag)->rb), struct jffs2_node_frag, rb) | 318 | #define frag_next(frag) rb_entry(rb_next(&(frag)->rb), struct jffs2_node_frag, rb) |
| 320 | #define frag_prev(frag) rb_entry(rb_prev(&(frag)->rb), struct jffs2_node_frag, rb) | 319 | #define frag_prev(frag) rb_entry(rb_prev(&(frag)->rb), struct jffs2_node_frag, rb) |
| 321 | #define frag_parent(frag) rb_entry(rb_parent(&(frag)->rb), struct jffs2_node_frag, rb) | 320 | #define frag_parent(frag) rb_entry(rb_parent(&(frag)->rb), struct jffs2_node_frag, rb) |
diff --git a/fs/jffs2/readinode.c b/fs/jffs2/readinode.c index 5ea4faafa2d3..5fec012b02ed 100644 --- a/fs/jffs2/readinode.c +++ b/fs/jffs2/readinode.c | |||
| @@ -66,7 +66,7 @@ static void jffs2_free_tmp_dnode_info_list(struct rb_root *list) | |||
| 66 | jffs2_free_full_dnode(tn->fn); | 66 | jffs2_free_full_dnode(tn->fn); |
| 67 | jffs2_free_tmp_dnode_info(tn); | 67 | jffs2_free_tmp_dnode_info(tn); |
| 68 | 68 | ||
| 69 | this = this->rb_parent; | 69 | this = rb_parent(this); |
| 70 | if (!this) | 70 | if (!this) |
| 71 | break; | 71 | break; |
| 72 | 72 | ||
| @@ -708,12 +708,12 @@ static int jffs2_do_read_inode_internal(struct jffs2_sb_info *c, | |||
| 708 | jffs2_mark_node_obsolete(c, fn->raw); | 708 | jffs2_mark_node_obsolete(c, fn->raw); |
| 709 | 709 | ||
| 710 | BUG_ON(rb->rb_left); | 710 | BUG_ON(rb->rb_left); |
| 711 | if (rb->rb_parent && rb->rb_parent->rb_left == rb) { | 711 | if (rb_parent(rb) && rb_parent(rb)->rb_left == rb) { |
| 712 | /* We were then left-hand child of our parent. We need | 712 | /* We were then left-hand child of our parent. We need |
| 713 | * to move our own right-hand child into our place. */ | 713 | * to move our own right-hand child into our place. */ |
| 714 | repl_rb = rb->rb_right; | 714 | repl_rb = rb->rb_right; |
| 715 | if (repl_rb) | 715 | if (repl_rb) |
| 716 | repl_rb->rb_parent = rb->rb_parent; | 716 | rb_set_parent(repl_rb, rb_parent(rb)); |
