From e96c0125b80207677ea5367743fa69a2950acb48 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Mon, 12 Mar 2018 14:13:38 -0700 Subject: [PATCH] Rename struct rb_node into struct fio_rb_node This patch avoids that building fio fails as follows on NetBSD systems: CC crc/test.o In file included from crc/../iolog.h:4, from crc/../stat.h:4, from crc/../thread_options.h:7, from crc/../fio.h:18, from crc/test.c:5: crc/../lib/rbtree.h:101: error: redefinition of 'struct rb_node' Makefile:336: recipe for target 'crc/test.o' failed gmake: *** [crc/test.o] Error 1 Signed-off-by: Bart Van Assche --- iolog.c | 4 ++-- iolog.h | 2 +- lib/rbtree.c | 49 +++++++++++++++++++++++++------------------------ lib/rbtree.h | 37 +++++++++++++++++++------------------ t/dedupe.c | 6 +++--- verify.c | 2 +- 6 files changed, 51 insertions(+), 49 deletions(-) diff --git a/iolog.c b/iolog.c index fc3dade3..7d5a136c 100644 --- a/iolog.c +++ b/iolog.c @@ -184,7 +184,7 @@ int read_iolog_get(struct thread_data *td, struct io_u *io_u) void prune_io_piece_log(struct thread_data *td) { struct io_piece *ipo; - struct rb_node *n; + struct fio_rb_node *n; while ((n = rb_first(&td->io_hist_tree)) != NULL) { ipo = rb_entry(n, struct io_piece, rb_node); @@ -208,7 +208,7 @@ void prune_io_piece_log(struct thread_data *td) */ void log_io_piece(struct thread_data *td, struct io_u *io_u) { - struct rb_node **p, *parent; + struct fio_rb_node **p, *parent; struct io_piece *ipo, *__ipo; ipo = malloc(sizeof(struct io_piece)); diff --git a/iolog.h b/iolog.h index 22666174..70981f99 100644 --- a/iolog.h +++ b/iolog.h @@ -199,7 +199,7 @@ enum { */ struct io_piece { union { - struct rb_node rb_node; + struct fio_rb_node rb_node; struct flist_head list; }; struct flist_head trim_list; diff --git a/lib/rbtree.c b/lib/rbtree.c index 00a5a90b..6f0feae3 100644 --- a/lib/rbtree.c +++ b/lib/rbtree.c @@ -22,10 +22,10 @@ #include "rbtree.h" -static void __rb_rotate_left(struct rb_node *node, struct rb_root *root) +static void __rb_rotate_left(struct fio_rb_node *node, struct rb_root *root) { - struct rb_node *right = node->rb_right; - struct rb_node *parent = rb_parent(node); + struct fio_rb_node *right = node->rb_right; + struct fio_rb_node *parent = rb_parent(node); if ((node->rb_right = right->rb_left)) rb_set_parent(right->rb_left, node); @@ -45,10 +45,10 @@ static void __rb_rotate_left(struct rb_node *node, struct rb_root *root) rb_set_parent(node, right); } -static void __rb_rotate_right(struct rb_node *node, struct rb_root *root) +static void __rb_rotate_right(struct fio_rb_node *node, struct rb_root *root) { - struct rb_node *left = node->rb_left; - struct rb_node *parent = rb_parent(node); + struct fio_rb_node *left = node->rb_left; + struct fio_rb_node *parent = rb_parent(node); if ((node->rb_left = left->rb_right)) rb_set_parent(left->rb_right, node); @@ -68,9 +68,9 @@ static void __rb_rotate_right(struct rb_node *node, struct rb_root *root) rb_set_parent(node, left); } -void rb_insert_color(struct rb_node *node, struct rb_root *root) +void rb_insert_color(struct fio_rb_node *node, struct rb_root *root) { - struct rb_node *parent, *gparent; + struct fio_rb_node *parent, *gparent; while ((parent = rb_parent(node)) && rb_is_red(parent)) { @@ -79,7 +79,7 @@ void rb_insert_color(struct rb_node *node, struct rb_root *root) if (parent == gparent->rb_left) { { - register struct rb_node *uncle = gparent->rb_right; + register struct fio_rb_node *uncle = gparent->rb_right; if (uncle && rb_is_red(uncle)) { rb_set_black(uncle); @@ -92,7 +92,7 @@ void rb_insert_color(struct rb_node *node, struct rb_root *root) if (parent->rb_right == node) { - register struct rb_node *tmp; + register struct fio_rb_node *tmp; __rb_rotate_left(parent, root); tmp = parent; parent = node; @@ -104,7 +104,7 @@ void rb_insert_color(struct rb_node *node, struct rb_root *root) __rb_rotate_right(gparent, root); } else { { - register struct rb_node *uncle = gparent->rb_left; + register struct fio_rb_node *uncle = gparent->rb_left; if (uncle && rb_is_red(uncle)) { rb_set_black(uncle); @@ -117,7 +117,7 @@ void rb_insert_color(struct rb_node *node, struct rb_root *root) if (parent->rb_left == node) { - register struct rb_node *tmp; + register struct fio_rb_node *tmp; __rb_rotate_right(parent, root); tmp = parent; parent = node; @@ -133,10 +133,11 @@ void rb_insert_color(struct rb_node *node, struct rb_root *root) rb_set_black(root->rb_node); } -static void __rb_erase_color(struct rb_node *node, struct rb_node *parent, +static void __rb_erase_color(struct fio_rb_node *node, + struct fio_rb_node *parent, struct rb_root *root) { - struct rb_node *other; + struct fio_rb_node *other; while ((!node || rb_is_black(node)) && node != root->rb_node) { @@ -161,7 +162,7 @@ static void __rb_erase_color(struct rb_node *node, struct rb_node *parent, { if (!other->rb_right || rb_is_black(other->rb_right)) { - struct rb_node *o_left; + struct fio_rb_node *o_left; if ((o_left = other->rb_left)) rb_set_black(o_left); rb_set_red(other); @@ -198,7 +199,7 @@ static void __rb_erase_color(struct rb_node *node, struct rb_node *parent, { if (!other->rb_left || rb_is_black(other->rb_left)) { - register struct rb_node *o_right; + register struct fio_rb_node *o_right; if ((o_right = other->rb_right)) rb_set_black(o_right); rb_set_red(other); @@ -219,9 +220,9 @@ static void __rb_erase_color(struct rb_node *node, struct rb_node *parent, rb_set_black(node); } -void rb_erase(struct rb_node *node, struct rb_root *root) +void rb_erase(struct fio_rb_node *node, struct rb_root *root) { - struct rb_node *child, *parent; + struct fio_rb_node *child, *parent; int color; if (!node->rb_left) @@ -230,7 +231,7 @@ void rb_erase(struct rb_node *node, struct rb_root *root) child = node->rb_left; else { - struct rb_node *old = node, *left; + struct fio_rb_node *old = node, *left; node = node->rb_right; while ((left = node->rb_left) != NULL) @@ -289,9 +290,9 @@ void rb_erase(struct rb_node *node, struct rb_root *root) /* * This function returns the first node (in sort order) of the tree. */ -struct rb_node *rb_first(struct rb_root *root) +struct fio_rb_node *rb_first(struct rb_root *root) { - struct rb_node *n; + struct fio_rb_node *n; n = root->rb_node; if (!n) @@ -301,9 +302,9 @@ struct rb_node *rb_first(struct rb_root *root) return n; } -struct rb_node *rb_next(const struct rb_node *node) +struct fio_rb_node *rb_next(const struct fio_rb_node *node) { - struct rb_node *parent; + struct fio_rb_node *parent; if (RB_EMPTY_NODE(node)) return NULL; @@ -316,7 +317,7 @@ struct rb_node *rb_next(const struct rb_node *node) node = node->rb_right; while (node->rb_left) node=node->rb_left; - return (struct rb_node *)node; + return (struct fio_rb_node *)node; } /* diff --git a/lib/rbtree.h b/lib/rbtree.h index f31fc56d..82ab97a3 100644 --- a/lib/rbtree.h +++ b/lib/rbtree.h @@ -34,7 +34,7 @@ static inline struct page * rb_search_page_cache(struct inode * inode, unsigned long offset) { - struct rb_node * n = inode->i_rb_page_cache.rb_node; + struct fio_rb_node * n = inode->i_rb_page_cache.rb_node; struct page * page; while (n) @@ -53,10 +53,10 @@ static inline struct page * rb_search_page_cache(struct inode * inode, static inline struct page * __rb_insert_page_cache(struct inode * inode, unsigned long offset, - struct rb_node * node) + struct fio_rb_node * node) { - struct rb_node ** p = &inode->i_rb_page_cache.rb_node; - struct rb_node * parent = NULL; + struct fio_rb_node ** p = &inode->i_rb_page_cache.rb_node; + struct fio_rb_node * parent = NULL; struct page * page; while (*p) @@ -79,7 +79,7 @@ static inline struct page * __rb_insert_page_cache(struct inode * inode, static inline struct page * rb_insert_page_cache(struct inode * inode, unsigned long offset, - struct rb_node * node) + struct fio_rb_node * node) { struct page * ret; if ((ret = __rb_insert_page_cache(inode, offset, node))) @@ -97,34 +97,34 @@ static inline struct page * rb_insert_page_cache(struct inode * inode, #include #include -struct rb_node +struct fio_rb_node { intptr_t rb_parent_color; #define RB_RED 0 #define RB_BLACK 1 - struct rb_node *rb_right; - struct rb_node *rb_left; + struct fio_rb_node *rb_right; + struct fio_rb_node *rb_left; } __attribute__((aligned(sizeof(long)))); /* The alignment might seem pointless, but allegedly CRIS needs it */ struct rb_root { - struct rb_node *rb_node; + struct fio_rb_node *rb_node; }; -#define rb_parent(r) ((struct rb_node *)((r)->rb_parent_color & ~3)) +#define rb_parent(r) ((struct fio_rb_node *)((r)->rb_parent_color & ~3)) #define rb_color(r) ((r)->rb_parent_color & 1) #define rb_is_red(r) (!rb_color(r)) #define rb_is_black(r) rb_color(r) #define rb_set_red(r) do { (r)->rb_parent_color &= ~1; } while (0) #define rb_set_black(r) do { (r)->rb_parent_color |= 1; } while (0) -static inline void rb_set_parent(struct rb_node *rb, struct rb_node *p) +static inline void rb_set_parent(struct fio_rb_node *rb, struct fio_rb_node *p) { rb->rb_parent_color = (rb->rb_parent_color & 3) | (uintptr_t)p; } -static inline void rb_set_color(struct rb_node *rb, int color) +static inline void rb_set_color(struct fio_rb_node *rb, int color) { rb->rb_parent_color = (rb->rb_parent_color & ~1) | color; } @@ -136,15 +136,16 @@ static inline void rb_set_color(struct rb_node *rb, int color) #define RB_EMPTY_NODE(node) (rb_parent(node) == node) #define RB_CLEAR_NODE(node) (rb_set_parent(node, node)) -extern void rb_insert_color(struct rb_node *, struct rb_root *); -extern void rb_erase(struct rb_node *, struct rb_root *); +extern void rb_insert_color(struct fio_rb_node *, struct rb_root *); +extern void rb_erase(struct fio_rb_node *, struct rb_root *); /* Find logical next and previous nodes in a tree */ -extern struct rb_node *rb_first(struct rb_root *); -extern struct rb_node *rb_next(const struct rb_node *); +extern struct fio_rb_node *rb_first(struct rb_root *); +extern struct fio_rb_node *rb_next(const struct fio_rb_node *); -static inline void rb_link_node(struct rb_node * node, struct rb_node * parent, - struct rb_node ** rb_link) +static inline void rb_link_node(struct fio_rb_node * node, + struct fio_rb_node * parent, + struct fio_rb_node ** rb_link) { node->rb_parent_color = (uintptr_t)parent; node->rb_left = node->rb_right = NULL; diff --git a/t/dedupe.c b/t/dedupe.c index c3b837f7..9a50821e 100644 --- a/t/dedupe.c +++ b/t/dedupe.c @@ -49,7 +49,7 @@ struct extent { }; struct chunk { - struct rb_node rb_node; + struct fio_rb_node rb_node; uint64_t count; uint32_t hash[MD5_HASH_WORDS]; struct flist_head extent_list[0]; @@ -194,7 +194,7 @@ static struct chunk *alloc_chunk(void) static void insert_chunk(struct item *i) { - struct rb_node **p, *parent; + struct fio_rb_node **p, *parent; struct chunk *c; int diff; @@ -497,7 +497,7 @@ static void show_stat(uint64_t nextents, uint64_t nchunks) static void iter_rb_tree(uint64_t *nextents, uint64_t *nchunks) { - struct rb_node *n; + struct fio_rb_node *n; *nchunks = *nextents = 0; diff --git a/verify.c b/verify.c index d070f331..17af3bb9 100644 --- a/verify.c +++ b/verify.c @@ -1307,7 +1307,7 @@ int get_next_verify(struct thread_data *td, struct io_u *io_u) return 0; if (!RB_EMPTY_ROOT(&td->io_hist_tree)) { - struct rb_node *n = rb_first(&td->io_hist_tree); + struct fio_rb_node *n = rb_first(&td->io_hist_tree); ipo = rb_entry(n, struct io_piece, rb_node); -- 2.25.1