Skip to content

Commit

Permalink
Rename struct rb_node into struct fio_rb_node
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
KAGA-KOKO committed Mar 12, 2018
1 parent 8955680 commit e96c012
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 49 deletions.
4 changes: 2 additions & 2 deletions iolog.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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));
Expand Down
2 changes: 1 addition & 1 deletion iolog.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
49 changes: 25 additions & 24 deletions lib/rbtree.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);
Expand All @@ -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))
{
Expand All @@ -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);
Expand All @@ -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;
Expand All @@ -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);
Expand All @@ -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;
Expand All @@ -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)
{
Expand All @@ -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);
Expand Down Expand Up @@ -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);
Expand All @@ -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)
Expand All @@ -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)
Expand Down Expand Up @@ -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)
Expand All @@ -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;
Expand All @@ -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;
}

/*
Expand Down
37 changes: 19 additions & 18 deletions lib/rbtree.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand All @@ -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)))
Expand All @@ -97,34 +97,34 @@ static inline struct page * rb_insert_page_cache(struct inode * inode,
#include <stdlib.h>
#include <inttypes.h>

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;
}
Expand All @@ -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;
Expand Down
6 changes: 3 additions & 3 deletions t/dedupe.c
Original file line number Diff line number Diff line change
Expand Up @@ -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];
Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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;

Expand Down
2 changes: 1 addition & 1 deletion verify.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down

0 comments on commit e96c012

Please sign in to comment.