Message ID | 20191205042921.25316-7-Damenly_Su@gmx.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | unify origanization structure of block group cache | expand |
On 2019/12/5 下午12:29, damenly.su@gmail.com wrote: > From: Su Yue <Damenly_Su@gmx.com> > > The new function btrfs_add_block_group_cache() abstracts the old > set_extent_bits and set_state_private operations. > > Rename the rb tree version to btrfs_add_block_group_cache_kernel(). > > Signed-off-by: Su Yue <Damenly_Su@gmx.com> Reviewed-by: Qu Wenruo <wqu@suse.com> Thanks, Qu > --- > extent-tree.c | 50 ++++++++++++++++++++++++++------------------------ > 1 file changed, 26 insertions(+), 24 deletions(-) > > diff --git a/extent-tree.c b/extent-tree.c > index 274dfe540b1f..ff3db5ca2e0c 100644 > --- a/extent-tree.c > +++ b/extent-tree.c > @@ -164,10 +164,31 @@ err: > return 0; > } > > +static int btrfs_add_block_group_cache(struct btrfs_fs_info *info, > + struct btrfs_block_group_cache *cache, > + int bits) > +{ > + int ret; > + > + ret = set_extent_bits(&info->block_group_cache, cache->key.objectid, > + cache->key.objectid + cache->key.offset - 1, > + bits); > + if (ret) > + return ret; > + > + ret = set_state_private(&info->block_group_cache, cache->key.objectid, > + (unsigned long)cache); > + if (ret) > + clear_extent_bits(&info->block_group_cache, cache->key.objectid, > + cache->key.objectid + cache->key.offset - 1, > + bits); > + return ret; > +} > + > /* > * This adds the block group to the fs_info rb tree for the block group cache > */ > -static int btrfs_add_block_group_cache(struct btrfs_fs_info *info, > +static int btrfs_add_block_group_cache_kernel(struct btrfs_fs_info *info, > struct btrfs_block_group_cache *block_group) > { > struct rb_node **p; > @@ -2769,7 +2790,6 @@ error: > static int read_one_block_group(struct btrfs_fs_info *fs_info, > struct btrfs_path *path) > { > - struct extent_io_tree *block_group_cache = &fs_info->block_group_cache; > struct extent_buffer *leaf = path->nodes[0]; > struct btrfs_space_info *space_info; > struct btrfs_block_group_cache *cache; > @@ -2819,11 +2839,7 @@ static int read_one_block_group(struct btrfs_fs_info *fs_info, > } > cache->space_info = space_info; > > - set_extent_bits(block_group_cache, cache->key.objectid, > - cache->key.objectid + cache->key.offset - 1, > - bit | EXTENT_LOCKED); > - set_state_private(block_group_cache, cache->key.objectid, > - (unsigned long)cache); > + btrfs_add_block_group_cache(fs_info, cache, bit | EXTENT_LOCKED); > return 0; > } > > @@ -2875,9 +2891,6 @@ btrfs_add_block_group(struct btrfs_fs_info *fs_info, u64 bytes_used, u64 type, > int ret; > int bit = 0; > struct btrfs_block_group_cache *cache; > - struct extent_io_tree *block_group_cache; > - > - block_group_cache = &fs_info->block_group_cache; > > cache = kzalloc(sizeof(*cache), GFP_NOFS); > BUG_ON(!cache); > @@ -2894,13 +2907,8 @@ btrfs_add_block_group(struct btrfs_fs_info *fs_info, u64 bytes_used, u64 type, > BUG_ON(ret); > > bit = block_group_state_bits(type); > - ret = set_extent_bits(block_group_cache, chunk_offset, > - chunk_offset + size - 1, > - bit | EXTENT_LOCKED); > - BUG_ON(ret); > > - ret = set_state_private(block_group_cache, chunk_offset, > - (unsigned long)cache); > + ret = btrfs_add_block_group_cache(fs_info, cache, bit | EXTENT_LOCKED); > BUG_ON(ret); > set_avail_alloc_bits(fs_info, type); > > @@ -2950,9 +2958,7 @@ int btrfs_make_block_groups(struct btrfs_trans_handle *trans, > int bit; > struct btrfs_root *extent_root = fs_info->extent_root; > struct btrfs_block_group_cache *cache; > - struct extent_io_tree *block_group_cache; > > - block_group_cache = &fs_info->block_group_cache; > total_bytes = btrfs_super_total_bytes(fs_info->super_copy); > group_align = 64 * fs_info->sectorsize; > > @@ -2996,12 +3002,8 @@ int btrfs_make_block_groups(struct btrfs_trans_handle *trans, > 0, &cache->space_info); > BUG_ON(ret); > set_avail_alloc_bits(fs_info, group_type); > - > - set_extent_bits(block_group_cache, cur_start, > - cur_start + group_size - 1, > - bit | EXTENT_LOCKED); > - set_state_private(block_group_cache, cur_start, > - (unsigned long)cache); > + btrfs_add_block_group_cache(fs_info, cache, > + bit | EXTENT_LOCKED); > cur_start += group_size; > } > /* then insert all the items */ >
diff --git a/extent-tree.c b/extent-tree.c index 274dfe540b1f..ff3db5ca2e0c 100644 --- a/extent-tree.c +++ b/extent-tree.c @@ -164,10 +164,31 @@ err: return 0; } +static int btrfs_add_block_group_cache(struct btrfs_fs_info *info, + struct btrfs_block_group_cache *cache, + int bits) +{ + int ret; + + ret = set_extent_bits(&info->block_group_cache, cache->key.objectid, + cache->key.objectid + cache->key.offset - 1, + bits); + if (ret) + return ret; + + ret = set_state_private(&info->block_group_cache, cache->key.objectid, + (unsigned long)cache); + if (ret) + clear_extent_bits(&info->block_group_cache, cache->key.objectid, + cache->key.objectid + cache->key.offset - 1, + bits); + return ret; +} + /* * This adds the block group to the fs_info rb tree for the block group cache */ -static int btrfs_add_block_group_cache(struct btrfs_fs_info *info, +static int btrfs_add_block_group_cache_kernel(struct btrfs_fs_info *info, struct btrfs_block_group_cache *block_group) { struct rb_node **p; @@ -2769,7 +2790,6 @@ error: static int read_one_block_group(struct btrfs_fs_info *fs_info, struct btrfs_path *path) { - struct extent_io_tree *block_group_cache = &fs_info->block_group_cache; struct extent_buffer *leaf = path->nodes[0]; struct btrfs_space_info *space_info; struct btrfs_block_group_cache *cache; @@ -2819,11 +2839,7 @@ static int read_one_block_group(struct btrfs_fs_info *fs_info, } cache->space_info = space_info; - set_extent_bits(block_group_cache, cache->key.objectid, - cache->key.objectid + cache->key.offset - 1, - bit | EXTENT_LOCKED); - set_state_private(block_group_cache, cache->key.objectid, - (unsigned long)cache); + btrfs_add_block_group_cache(fs_info, cache, bit | EXTENT_LOCKED); return 0; } @@ -2875,9 +2891,6 @@ btrfs_add_block_group(struct btrfs_fs_info *fs_info, u64 bytes_used, u64 type, int ret; int bit = 0; struct btrfs_block_group_cache *cache; - struct extent_io_tree *block_group_cache; - - block_group_cache = &fs_info->block_group_cache; cache = kzalloc(sizeof(*cache), GFP_NOFS); BUG_ON(!cache); @@ -2894,13 +2907,8 @@ btrfs_add_block_group(struct btrfs_fs_info *fs_info, u64 bytes_used, u64 type, BUG_ON(ret); bit = block_group_state_bits(type); - ret = set_extent_bits(block_group_cache, chunk_offset, - chunk_offset + size - 1, - bit | EXTENT_LOCKED); - BUG_ON(ret); - ret = set_state_private(block_group_cache, chunk_offset, - (unsigned long)cache); + ret = btrfs_add_block_group_cache(fs_info, cache, bit | EXTENT_LOCKED); BUG_ON(ret); set_avail_alloc_bits(fs_info, type); @@ -2950,9 +2958,7 @@ int btrfs_make_block_groups(struct btrfs_trans_handle *trans, int bit; struct btrfs_root *extent_root = fs_info->extent_root; struct btrfs_block_group_cache *cache; - struct extent_io_tree *block_group_cache; - block_group_cache = &fs_info->block_group_cache; total_bytes = btrfs_super_total_bytes(fs_info->super_copy); group_align = 64 * fs_info->sectorsize; @@ -2996,12 +3002,8 @@ int btrfs_make_block_groups(struct btrfs_trans_handle *trans, 0, &cache->space_info); BUG_ON(ret); set_avail_alloc_bits(fs_info, group_type); - - set_extent_bits(block_group_cache, cur_start, - cur_start + group_size - 1, - bit | EXTENT_LOCKED); - set_state_private(block_group_cache, cur_start, - (unsigned long)cache); + btrfs_add_block_group_cache(fs_info, cache, + bit | EXTENT_LOCKED); cur_start += group_size; } /* then insert all the items */