提交 d49a2ddb 编写于 作者: Q Qu Wenruo 提交者: David Sterba

btrfs: block-group: Reuse the item key from caller of read_one_block_group()

For read_one_block_group(), its only caller has already got the item key
to search next block group item.

So we can use that key directly without doing our own convertion on
stack.

Also, since that key used in btrfs_read_block_groups() is vital for
block group item search, add 'const' keyword for that parameter to
prevent read_one_block_group() to modify it.
Signed-off-by: NQu Wenruo <wqu@suse.com>
Reviewed-by: NDavid Sterba <dsterba@suse.com>
Signed-off-by: NDavid Sterba <dsterba@suse.com>
上级 ffb9e0f0
...@@ -1688,21 +1688,20 @@ static int check_chunk_block_group_mappings(struct btrfs_fs_info *fs_info) ...@@ -1688,21 +1688,20 @@ static int check_chunk_block_group_mappings(struct btrfs_fs_info *fs_info)
static int read_one_block_group(struct btrfs_fs_info *info, static int read_one_block_group(struct btrfs_fs_info *info,
struct btrfs_path *path, struct btrfs_path *path,
const struct btrfs_key *key,
int need_clear) int need_clear)
{ {
struct extent_buffer *leaf = path->nodes[0]; struct extent_buffer *leaf = path->nodes[0];
struct btrfs_block_group_cache *cache; struct btrfs_block_group_cache *cache;
struct btrfs_space_info *space_info; struct btrfs_space_info *space_info;
struct btrfs_key key;
struct btrfs_block_group_item bgi; struct btrfs_block_group_item bgi;
const bool mixed = btrfs_fs_incompat(info, MIXED_GROUPS); const bool mixed = btrfs_fs_incompat(info, MIXED_GROUPS);
int slot = path->slots[0]; int slot = path->slots[0];
int ret; int ret;
btrfs_item_key_to_cpu(leaf, &key, slot); ASSERT(key->type == BTRFS_BLOCK_GROUP_ITEM_KEY);
ASSERT(key.type == BTRFS_BLOCK_GROUP_ITEM_KEY);
cache = btrfs_create_block_group_cache(info, key.objectid, key.offset); cache = btrfs_create_block_group_cache(info, key->objectid, key->offset);
if (!cache) if (!cache)
return -ENOMEM; return -ENOMEM;
...@@ -1751,15 +1750,15 @@ static int read_one_block_group(struct btrfs_fs_info *info, ...@@ -1751,15 +1750,15 @@ static int read_one_block_group(struct btrfs_fs_info *info,
* are empty, and we can just add all the space in and be done with it. * are empty, and we can just add all the space in and be done with it.
* This saves us _a_lot_ of time, particularly in the full case. * This saves us _a_lot_ of time, particularly in the full case.
*/ */
if (key.offset == cache->used) { if (key->offset == cache->used) {
cache->last_byte_to_unpin = (u64)-1; cache->last_byte_to_unpin = (u64)-1;
cache->cached = BTRFS_CACHE_FINISHED; cache->cached = BTRFS_CACHE_FINISHED;
btrfs_free_excluded_extents(cache); btrfs_free_excluded_extents(cache);
} else if (cache->used == 0) { } else if (cache->used == 0) {
cache->last_byte_to_unpin = (u64)-1; cache->last_byte_to_unpin = (u64)-1;
cache->cached = BTRFS_CACHE_FINISHED; cache->cached = BTRFS_CACHE_FINISHED;
add_new_free_space(cache, key.objectid, add_new_free_space(cache, key->objectid,
key.objectid + key.offset); key->objectid + key->offset);
btrfs_free_excluded_extents(cache); btrfs_free_excluded_extents(cache);
} }
...@@ -1769,7 +1768,7 @@ static int read_one_block_group(struct btrfs_fs_info *info, ...@@ -1769,7 +1768,7 @@ static int read_one_block_group(struct btrfs_fs_info *info,
goto error; goto error;
} }
trace_btrfs_add_block_group(info, cache, 0); trace_btrfs_add_block_group(info, cache, 0);
btrfs_update_space_info(info, cache->flags, key.offset, btrfs_update_space_info(info, cache->flags, key->offset,
cache->used, cache->bytes_super, &space_info); cache->used, cache->bytes_super, &space_info);
cache->space_info = space_info; cache->space_info = space_info;
...@@ -1822,7 +1821,7 @@ int btrfs_read_block_groups(struct btrfs_fs_info *info) ...@@ -1822,7 +1821,7 @@ int btrfs_read_block_groups(struct btrfs_fs_info *info)
goto error; goto error;
btrfs_item_key_to_cpu(path->nodes[0], &key, path->slots[0]); btrfs_item_key_to_cpu(path->nodes[0], &key, path->slots[0]);
ret = read_one_block_group(info, path, need_clear); ret = read_one_block_group(info, path, &key, need_clear);
if (ret < 0) if (ret < 0)
goto error; goto error;
key.objectid += key.offset; key.objectid += key.offset;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册