btrfs-progs: make the find extent buffer helpers take fs_info
This is a cleanup patch to make syncing the btrfs kernel code into btrfs-progs easier. In btrfs-progs we have an extra cache in the extent_io_tree that's exclusively used for the extent buffer tracking. In order to untangle this dependency start passing around the fs_info to search for extent_buffers, and then have the helpers use the appropriate structure to find the extent buffer. Signed-off-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
d729048be6
commit
af30cf2e3e
|
@ -227,8 +227,7 @@ static int csum_tree_block(struct btrfs_fs_info *fs_info,
|
|||
struct extent_buffer *btrfs_find_tree_block(struct btrfs_fs_info *fs_info,
|
||||
u64 bytenr, u32 blocksize)
|
||||
{
|
||||
return find_extent_buffer(&fs_info->extent_cache,
|
||||
bytenr, blocksize);
|
||||
return find_extent_buffer(fs_info, bytenr, blocksize);
|
||||
}
|
||||
|
||||
struct extent_buffer* btrfs_find_create_tree_block(
|
||||
|
|
|
@ -683,9 +683,10 @@ void free_extent_buffer_nocache(struct extent_buffer *eb)
|
|||
free_extent_buffer_internal(eb, 1);
|
||||
}
|
||||
|
||||
struct extent_buffer *find_extent_buffer(struct extent_io_tree *tree,
|
||||
struct extent_buffer *find_extent_buffer(struct btrfs_fs_info *fs_info,
|
||||
u64 bytenr, u32 blocksize)
|
||||
{
|
||||
struct extent_io_tree *tree = &fs_info->extent_cache;
|
||||
struct extent_buffer *eb = NULL;
|
||||
struct cache_extent *cache;
|
||||
|
||||
|
@ -699,9 +700,10 @@ struct extent_buffer *find_extent_buffer(struct extent_io_tree *tree,
|
|||
return eb;
|
||||
}
|
||||
|
||||
struct extent_buffer *find_first_extent_buffer(struct extent_io_tree *tree,
|
||||
struct extent_buffer *find_first_extent_buffer(struct btrfs_fs_info *fs_info,
|
||||
u64 start)
|
||||
{
|
||||
struct extent_io_tree *tree = &fs_info->extent_cache;
|
||||
struct extent_buffer *eb = NULL;
|
||||
struct cache_extent *cache;
|
||||
|
||||
|
|
|
@ -129,9 +129,9 @@ static inline int extent_buffer_uptodate(struct extent_buffer *eb)
|
|||
|
||||
int set_state_private(struct extent_io_tree *tree, u64 start, u64 xprivate);
|
||||
int get_state_private(struct extent_io_tree *tree, u64 start, u64 *xprivate);
|
||||
struct extent_buffer *find_extent_buffer(struct extent_io_tree *tree,
|
||||
struct extent_buffer *find_extent_buffer(struct btrfs_fs_info *fs_info,
|
||||
u64 bytenr, u32 blocksize);
|
||||
struct extent_buffer *find_first_extent_buffer(struct extent_io_tree *tree,
|
||||
struct extent_buffer *find_first_extent_buffer(struct btrfs_fs_info *fs_info,
|
||||
u64 start);
|
||||
struct extent_buffer *alloc_extent_buffer(struct btrfs_fs_info *fs_info,
|
||||
u64 bytenr, u32 blocksize);
|
||||
|
|
|
@ -150,7 +150,7 @@ again:
|
|||
goto again;
|
||||
|
||||
while(start <= end) {
|
||||
eb = find_first_extent_buffer(tree, start);
|
||||
eb = find_first_extent_buffer(fs_info, start);
|
||||
BUG_ON(!eb || eb->start != start);
|
||||
ret = write_tree_block(trans, fs_info, eb);
|
||||
if (ret < 0) {
|
||||
|
@ -180,7 +180,7 @@ cleanup:
|
|||
break;
|
||||
|
||||
while (start <= end) {
|
||||
eb = find_first_extent_buffer(tree, start);
|
||||
eb = find_first_extent_buffer(fs_info, start);
|
||||
BUG_ON(!eb || eb->start != start);
|
||||
start += eb->len;
|
||||
clear_extent_buffer_dirty(eb);
|
||||
|
|
Loading…
Reference in a new issue