Commit 12c9cdda authored by David Sterba's avatar David Sterba

btrfs: open code rbtree search in split_state

Preparatory work to remove tree_insert from extent_io.c, the rbtree
search loop is a known and simple so it can be open coded.
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 1c10702e
...@@ -607,7 +607,8 @@ static int insert_state(struct extent_io_tree *tree, ...@@ -607,7 +607,8 @@ static int insert_state(struct extent_io_tree *tree,
static int split_state(struct extent_io_tree *tree, struct extent_state *orig, static int split_state(struct extent_io_tree *tree, struct extent_state *orig,
struct extent_state *prealloc, u64 split) struct extent_state *prealloc, u64 split)
{ {
struct rb_node *node; struct rb_node *parent = NULL;
struct rb_node **node;
if (tree->private_data && is_data_inode(tree->private_data)) if (tree->private_data && is_data_inode(tree->private_data))
btrfs_split_delalloc_extent(tree->private_data, orig, split); btrfs_split_delalloc_extent(tree->private_data, orig, split);
...@@ -617,12 +618,27 @@ static int split_state(struct extent_io_tree *tree, struct extent_state *orig, ...@@ -617,12 +618,27 @@ static int split_state(struct extent_io_tree *tree, struct extent_state *orig,
prealloc->state = orig->state; prealloc->state = orig->state;
orig->start = split; orig->start = split;
node = tree_insert(&tree->state, &orig->rb_node, prealloc->end, parent = &orig->rb_node;
&prealloc->rb_node, NULL, NULL); node = &parent;
if (node) { while (*node) {
struct tree_entry *entry;
parent = *node;
entry = rb_entry(parent, struct tree_entry, rb_node);
if (prealloc->end < entry->start) {
node = &(*node)->rb_left;
} else if (prealloc->end > entry->end) {
node = &(*node)->rb_right;
} else {
free_extent_state(prealloc); free_extent_state(prealloc);
return -EEXIST; return -EEXIST;
} }
}
rb_link_node(&prealloc->rb_node, parent, node);
rb_insert_color(&prealloc->rb_node, &tree->state);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment