mirror of https://gitee.com/openkylin/linux.git
Btrfs: clean up for find_first_extent_bit()
find_first_extent_bit() and find_first_extent_bit_state() share most of the code, and we can just make the former call the latter. Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com> Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
ded91f0814
commit
69261c4b6a
|
@ -1031,46 +1031,6 @@ static int set_range_writeback(struct extent_io_tree *tree, u64 start, u64 end)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* find the first offset in the io tree with 'bits' set. zero is
|
|
||||||
* returned if we find something, and *start_ret and *end_ret are
|
|
||||||
* set to reflect the state struct that was found.
|
|
||||||
*
|
|
||||||
* If nothing was found, 1 is returned, < 0 on error
|
|
||||||
*/
|
|
||||||
int find_first_extent_bit(struct extent_io_tree *tree, u64 start,
|
|
||||||
u64 *start_ret, u64 *end_ret, int bits)
|
|
||||||
{
|
|
||||||
struct rb_node *node;
|
|
||||||
struct extent_state *state;
|
|
||||||
int ret = 1;
|
|
||||||
|
|
||||||
spin_lock(&tree->lock);
|
|
||||||
/*
|
|
||||||
* this search will find all the extents that end after
|
|
||||||
* our range starts.
|
|
||||||
*/
|
|
||||||
node = tree_search(tree, start);
|
|
||||||
if (!node)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
while (1) {
|
|
||||||
state = rb_entry(node, struct extent_state, rb_node);
|
|
||||||
if (state->end >= start && (state->state & bits)) {
|
|
||||||
*start_ret = state->start;
|
|
||||||
*end_ret = state->end;
|
|
||||||
ret = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
node = rb_next(node);
|
|
||||||
if (!node)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
out:
|
|
||||||
spin_unlock(&tree->lock);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* find the first state struct with 'bits' set after 'start', and
|
/* find the first state struct with 'bits' set after 'start', and
|
||||||
* return it. tree->lock must be held. NULL will returned if
|
* return it. tree->lock must be held. NULL will returned if
|
||||||
* nothing was found after 'start'
|
* nothing was found after 'start'
|
||||||
|
@ -1102,6 +1062,30 @@ struct extent_state *find_first_extent_bit_state(struct extent_io_tree *tree,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* find the first offset in the io tree with 'bits' set. zero is
|
||||||
|
* returned if we find something, and *start_ret and *end_ret are
|
||||||
|
* set to reflect the state struct that was found.
|
||||||
|
*
|
||||||
|
* If nothing was found, 1 is returned, < 0 on error
|
||||||
|
*/
|
||||||
|
int find_first_extent_bit(struct extent_io_tree *tree, u64 start,
|
||||||
|
u64 *start_ret, u64 *end_ret, int bits)
|
||||||
|
{
|
||||||
|
struct extent_state *state;
|
||||||
|
int ret = 1;
|
||||||
|
|
||||||
|
spin_lock(&tree->lock);
|
||||||
|
state = find_first_extent_bit_state(tree, start, bits);
|
||||||
|
if (state) {
|
||||||
|
*start_ret = state->start;
|
||||||
|
*end_ret = state->end;
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
spin_unlock(&tree->lock);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* find a contiguous range of bytes in the file marked as delalloc, not
|
* find a contiguous range of bytes in the file marked as delalloc, not
|
||||||
* more than 'max_bytes'. start and end are used to return the range,
|
* more than 'max_bytes'. start and end are used to return the range,
|
||||||
|
|
Loading…
Reference in New Issue