btrfs-progs: sync block group item accessors from kernel

Signed-off-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Qu Wenruo 2020-05-01 14:52:16 +08:00 committed by David Sterba
parent 2a1823875c
commit 877f512c55
8 changed files with 43 additions and 43 deletions

View File

@ -5242,7 +5242,7 @@ btrfs_new_block_group_record(struct extent_buffer *leaf, struct btrfs_key *key,
rec->offset = key->offset; rec->offset = key->offset;
ptr = btrfs_item_ptr(leaf, slot, struct btrfs_block_group_item); ptr = btrfs_item_ptr(leaf, slot, struct btrfs_block_group_item);
rec->flags = btrfs_disk_block_group_flags(leaf, ptr); rec->flags = btrfs_block_group_flags(leaf, ptr);
INIT_LIST_HEAD(&rec->list); INIT_LIST_HEAD(&rec->list);
@ -9171,10 +9171,10 @@ again:
if (!cache) if (!cache)
break; break;
start = cache->key.objectid + cache->key.offset; start = cache->key.objectid + cache->key.offset;
btrfs_set_block_group_used(&bgi, cache->used); btrfs_set_stack_block_group_used(&bgi, cache->used);
btrfs_set_block_group_chunk_objectid(&bgi, btrfs_set_stack_block_group_chunk_objectid(&bgi,
BTRFS_FIRST_CHUNK_TREE_OBJECTID); BTRFS_FIRST_CHUNK_TREE_OBJECTID);
btrfs_set_block_group_flags(&bgi, cache->flags); btrfs_set_stack_block_group_flags(&bgi, cache->flags);
ret = btrfs_insert_item(trans, fs_info->extent_root, ret = btrfs_insert_item(trans, fs_info->extent_root,
&cache->key, &bgi, sizeof(bgi)); &cache->key, &bgi, sizeof(bgi));
if (ret) { if (ret) {

View File

@ -301,7 +301,7 @@ static int modify_block_groups_cache(struct btrfs_fs_info *fs_info, u64 flags,
bi = btrfs_item_ptr(eb, slot, struct btrfs_block_group_item); bi = btrfs_item_ptr(eb, slot, struct btrfs_block_group_item);
read_extent_buffer(eb, &bg_item, (unsigned long)bi, read_extent_buffer(eb, &bg_item, (unsigned long)bi,
sizeof(bg_item)); sizeof(bg_item));
if (btrfs_block_group_flags(&bg_item) & flags) if (btrfs_stack_block_group_flags(&bg_item) & flags)
modify_block_group_cache(fs_info, bg_cache, cache); modify_block_group_cache(fs_info, bg_cache, cache);
ret = btrfs_next_item(root, &path); ret = btrfs_next_item(root, &path);
@ -460,7 +460,7 @@ static int is_chunk_almost_full(struct btrfs_fs_info *fs_info, u64 start)
total = key.offset; total = key.offset;
bi = btrfs_item_ptr(eb, slot, struct btrfs_block_group_item); bi = btrfs_item_ptr(eb, slot, struct btrfs_block_group_item);
read_extent_buffer(eb, &bg_item, (unsigned long)bi, sizeof(bg_item)); read_extent_buffer(eb, &bg_item, (unsigned long)bi, sizeof(bg_item));
used = btrfs_block_group_used(&bg_item); used = btrfs_stack_block_group_used(&bg_item);
/* /*
* if the free space in the chunk is less than %10 of total, * if the free space in the chunk is less than %10 of total,
@ -3561,8 +3561,8 @@ static int check_block_group_item(struct btrfs_fs_info *fs_info,
btrfs_item_key_to_cpu(eb, &bg_key, slot); btrfs_item_key_to_cpu(eb, &bg_key, slot);
bi = btrfs_item_ptr(eb, slot, struct btrfs_block_group_item); bi = btrfs_item_ptr(eb, slot, struct btrfs_block_group_item);
read_extent_buffer(eb, &bg_item, (unsigned long)bi, sizeof(bg_item)); read_extent_buffer(eb, &bg_item, (unsigned long)bi, sizeof(bg_item));
used = btrfs_block_group_used(&bg_item); used = btrfs_stack_block_group_used(&bg_item);
bg_flags = btrfs_block_group_flags(&bg_item); bg_flags = btrfs_stack_block_group_flags(&bg_item);
chunk_key.objectid = BTRFS_FIRST_CHUNK_TREE_OBJECTID; chunk_key.objectid = BTRFS_FIRST_CHUNK_TREE_OBJECTID;
chunk_key.type = BTRFS_CHUNK_ITEM_KEY; chunk_key.type = BTRFS_CHUNK_ITEM_KEY;
@ -4559,11 +4559,11 @@ static int check_chunk_item(struct btrfs_fs_info *fs_info,
struct btrfs_block_group_item); struct btrfs_block_group_item);
read_extent_buffer(leaf, &bg_item, (unsigned long)bi, read_extent_buffer(leaf, &bg_item, (unsigned long)bi,
sizeof(bg_item)); sizeof(bg_item));
if (btrfs_block_group_flags(&bg_item) != type) { if (btrfs_stack_block_group_flags(&bg_item) != type) {
error( error(
"chunk[%llu %llu) related block group item flags mismatch, wanted: %llu, have: %llu", "chunk[%llu %llu) related block group item flags mismatch, wanted: %llu, have: %llu",
chunk_key.offset, chunk_end, type, chunk_key.offset, chunk_end, type,
btrfs_block_group_flags(&bg_item)); btrfs_stack_block_group_flags(&bg_item));
err |= REFERENCER_MISSING; err |= REFERENCER_MISSING;
} }
} }

View File

@ -635,12 +635,12 @@ bg_check:
l = path.nodes[0]; l = path.nodes[0];
slot = path.slots[0]; slot = path.slots[0];
bg_ptr = btrfs_item_ptr(l, slot, struct btrfs_block_group_item); bg_ptr = btrfs_item_ptr(l, slot, struct btrfs_block_group_item);
if (chunk->type_flags != btrfs_disk_block_group_flags(l, bg_ptr)) { if (chunk->type_flags != btrfs_block_group_flags(l, bg_ptr)) {
if (rc->verbose) if (rc->verbose)
fprintf(stderr, fprintf(stderr,
"Chunk[%llu, %llu]'s type(%llu) is different with Block Group's type(%llu)\n", "Chunk[%llu, %llu]'s type(%llu) is different with Block Group's type(%llu)\n",
chunk->offset, chunk->length, chunk->type_flags, chunk->offset, chunk->length, chunk->type_flags,
btrfs_disk_block_group_flags(l, bg_ptr)); btrfs_block_group_flags(l, bg_ptr));
btrfs_release_path(&path); btrfs_release_path(&path);
return -ENOENT; return -ENOENT;
} }
@ -1358,9 +1358,9 @@ static int __insert_block_group(struct btrfs_trans_handle *trans,
struct btrfs_key key; struct btrfs_key key;
int ret = 0; int ret = 0;
btrfs_set_block_group_used(&bg_item, used); btrfs_set_stack_block_group_used(&bg_item, used);
btrfs_set_block_group_chunk_objectid(&bg_item, used); btrfs_set_stack_block_group_chunk_objectid(&bg_item, used);
btrfs_set_block_group_flags(&bg_item, chunk_rec->type_flags); btrfs_set_stack_block_group_flags(&bg_item, chunk_rec->type_flags);
key.objectid = chunk_rec->offset; key.objectid = chunk_rec->offset;
key.type = BTRFS_BLOCK_GROUP_ITEM_KEY; key.type = BTRFS_BLOCK_GROUP_ITEM_KEY;
key.offset = chunk_rec->length; key.offset = chunk_rec->length;

View File

@ -679,9 +679,9 @@ static void insert_temp_block_group(struct extent_buffer *buf,
btrfs_set_item_offset(buf, btrfs_item_nr(*slot), *itemoff); btrfs_set_item_offset(buf, btrfs_item_nr(*slot), *itemoff);
btrfs_set_item_size(buf, btrfs_item_nr(*slot), sizeof(bgi)); btrfs_set_item_size(buf, btrfs_item_nr(*slot), sizeof(bgi));
btrfs_set_block_group_flags(&bgi, flag); btrfs_set_stack_block_group_flags(&bgi, flag);
btrfs_set_block_group_used(&bgi, used); btrfs_set_stack_block_group_used(&bgi, used);
btrfs_set_block_group_chunk_objectid(&bgi, btrfs_set_stack_block_group_chunk_objectid(&bgi,
BTRFS_FIRST_CHUNK_TREE_OBJECTID); BTRFS_FIRST_CHUNK_TREE_OBJECTID);
write_extent_buffer(buf, &bgi, btrfs_item_ptr_offset(buf, *slot), write_extent_buffer(buf, &bgi, btrfs_item_ptr_offset(buf, *slot),
sizeof(bgi)); sizeof(bgi));

12
ctree.h
View File

@ -1639,18 +1639,18 @@ static inline void btrfs_set_stripe_devid_nr(struct extent_buffer *eb,
} }
/* struct btrfs_block_group_item */ /* struct btrfs_block_group_item */
BTRFS_SETGET_STACK_FUNCS(block_group_used, struct btrfs_block_group_item, BTRFS_SETGET_STACK_FUNCS(stack_block_group_used, struct btrfs_block_group_item,
used, 64); used, 64);
BTRFS_SETGET_FUNCS(disk_block_group_used, struct btrfs_block_group_item, BTRFS_SETGET_FUNCS(block_group_used, struct btrfs_block_group_item,
used, 64); used, 64);
BTRFS_SETGET_STACK_FUNCS(block_group_chunk_objectid, BTRFS_SETGET_STACK_FUNCS(stack_block_group_chunk_objectid,
struct btrfs_block_group_item, chunk_objectid, 64); struct btrfs_block_group_item, chunk_objectid, 64);
BTRFS_SETGET_FUNCS(disk_block_group_chunk_objectid, BTRFS_SETGET_FUNCS(block_group_chunk_objectid,
struct btrfs_block_group_item, chunk_objectid, 64); struct btrfs_block_group_item, chunk_objectid, 64);
BTRFS_SETGET_FUNCS(disk_block_group_flags, BTRFS_SETGET_FUNCS(block_group_flags,
struct btrfs_block_group_item, flags, 64); struct btrfs_block_group_item, flags, 64);
BTRFS_SETGET_STACK_FUNCS(block_group_flags, BTRFS_SETGET_STACK_FUNCS(stack_block_group_flags,
struct btrfs_block_group_item, flags, 64); struct btrfs_block_group_item, flags, 64);
/* struct btrfs_free_space_info */ /* struct btrfs_free_space_info */

View File

@ -1541,9 +1541,10 @@ static int write_one_cache_group(struct btrfs_trans_handle *trans,
leaf = path->nodes[0]; leaf = path->nodes[0];
bi = btrfs_item_ptr_offset(leaf, path->slots[0]); bi = btrfs_item_ptr_offset(leaf, path->slots[0]);
btrfs_set_block_group_used(&bgi, cache->used); btrfs_set_stack_block_group_used(&bgi, cache->used);
btrfs_set_block_group_flags(&bgi, cache->flags); btrfs_set_stack_block_group_flags(&bgi, cache->flags);
btrfs_set_block_group_chunk_objectid(&bgi, BTRFS_FIRST_CHUNK_TREE_OBJECTID); btrfs_set_stack_block_group_chunk_objectid(&bgi,
BTRFS_FIRST_CHUNK_TREE_OBJECTID);
write_extent_buffer(leaf, &bgi, bi, sizeof(bgi)); write_extent_buffer(leaf, &bgi, bi, sizeof(bgi));
btrfs_mark_buffer_dirty(leaf); btrfs_mark_buffer_dirty(leaf);
btrfs_release_path(path); btrfs_release_path(path);
@ -2657,8 +2658,8 @@ static int read_one_block_group(struct btrfs_fs_info *fs_info,
memcpy(&cache->key, &key, sizeof(key)); memcpy(&cache->key, &key, sizeof(key));
cache->cached = 0; cache->cached = 0;
cache->pinned = 0; cache->pinned = 0;
cache->flags = btrfs_block_group_flags(&bgi); cache->flags = btrfs_stack_block_group_flags(&bgi);
cache->used = btrfs_block_group_used(&bgi); cache->used = btrfs_stack_block_group_used(&bgi);
INIT_LIST_HEAD(&cache->dirty_list); INIT_LIST_HEAD(&cache->dirty_list);
set_avail_alloc_bits(fs_info, cache->flags); set_avail_alloc_bits(fs_info, cache->flags);
@ -2764,9 +2765,9 @@ int btrfs_make_block_group(struct btrfs_trans_handle *trans,
cache = btrfs_add_block_group(fs_info, bytes_used, type, chunk_offset, cache = btrfs_add_block_group(fs_info, bytes_used, type, chunk_offset,
size); size);
btrfs_set_block_group_used(&bgi, cache->used); btrfs_set_stack_block_group_used(&bgi, cache->used);
btrfs_set_block_group_flags(&bgi, cache->flags); btrfs_set_stack_block_group_flags(&bgi, cache->flags);
btrfs_set_block_group_chunk_objectid(&bgi, btrfs_set_stack_block_group_chunk_objectid(&bgi,
BTRFS_FIRST_CHUNK_TREE_OBJECTID); BTRFS_FIRST_CHUNK_TREE_OBJECTID);
ret = btrfs_insert_item(trans, extent_root, &cache->key, &bgi, ret = btrfs_insert_item(trans, extent_root, &cache->key, &bgi,
sizeof(bgi)); sizeof(bgi));
@ -2850,9 +2851,9 @@ int btrfs_make_block_groups(struct btrfs_trans_handle *trans,
cache = btrfs_lookup_block_group(fs_info, cur_start); cache = btrfs_lookup_block_group(fs_info, cur_start);
BUG_ON(!cache); BUG_ON(!cache);
btrfs_set_block_group_used(&bgi, cache->used); btrfs_set_stack_block_group_used(&bgi, cache->used);
btrfs_set_block_group_flags(&bgi, cache->flags); btrfs_set_stack_block_group_flags(&bgi, cache->flags);
btrfs_set_block_group_chunk_objectid(&bgi, btrfs_set_stack_block_group_chunk_objectid(&bgi,
BTRFS_FIRST_CHUNK_TREE_OBJECTID); BTRFS_FIRST_CHUNK_TREE_OBJECTID);
ret = btrfs_insert_item(trans, extent_root, &cache->key, &bgi, ret = btrfs_insert_item(trans, extent_root, &cache->key, &bgi,
sizeof(bgi)); sizeof(bgi));
@ -3172,7 +3173,7 @@ int btrfs_free_block_group(struct btrfs_trans_handle *trans,
bgi = btrfs_item_ptr(path->nodes[0], path->slots[0], bgi = btrfs_item_ptr(path->nodes[0], path->slots[0],
struct btrfs_block_group_item); struct btrfs_block_group_item);
if (btrfs_disk_block_group_used(path->nodes[0], bgi)) { if (btrfs_block_group_used(path->nodes[0], bgi)) {
fprintf(stderr, fprintf(stderr,
"WARNING: block group [%llu,%llu) is not empty\n", "WARNING: block group [%llu,%llu) is not empty\n",
bytenr, bytenr + len); bytenr, bytenr + len);

View File

@ -520,10 +520,10 @@ static int is_temp_block_group(struct extent_buffer *node,
u64 data_profile, u64 meta_profile, u64 data_profile, u64 meta_profile,
u64 sys_profile) u64 sys_profile)
{ {
u64 flag = btrfs_disk_block_group_flags(node, bgi); u64 flag = btrfs_block_group_flags(node, bgi);
u64 flag_type = flag & BTRFS_BLOCK_GROUP_TYPE_MASK; u64 flag_type = flag & BTRFS_BLOCK_GROUP_TYPE_MASK;
u64 flag_profile = flag & BTRFS_BLOCK_GROUP_PROFILE_MASK; u64 flag_profile = flag & BTRFS_BLOCK_GROUP_PROFILE_MASK;
u64 used = btrfs_disk_block_group_used(node, bgi); u64 used = btrfs_block_group_used(node, bgi);
/* /*
* Chunks meets all the following conditions is a temp chunk * Chunks meets all the following conditions is a temp chunk
@ -642,8 +642,7 @@ static int cleanup_temp_chunks(struct btrfs_fs_info *fs_info,
if (is_temp_block_group(path.nodes[0], bgi, if (is_temp_block_group(path.nodes[0], bgi,
data_profile, meta_profile, data_profile, meta_profile,
sys_profile)) { sys_profile)) {
u64 flags = btrfs_disk_block_group_flags(path.nodes[0], u64 flags = btrfs_block_group_flags(path.nodes[0], bgi);
bgi);
ret = btrfs_free_block_group(trans, fs_info, ret = btrfs_free_block_group(trans, fs_info,
found_key.objectid, found_key.offset); found_key.objectid, found_key.offset);

View File

@ -1019,10 +1019,10 @@ static void print_block_group_item(struct extent_buffer *eb,
read_extent_buffer(eb, &bg_item, (unsigned long)bgi, sizeof(bg_item)); read_extent_buffer(eb, &bg_item, (unsigned long)bgi, sizeof(bg_item));
memset(flags_str, 0, sizeof(flags_str)); memset(flags_str, 0, sizeof(flags_str));
bg_flags_to_str(btrfs_block_group_flags(&bg_item), flags_str); bg_flags_to_str(btrfs_stack_block_group_flags(&bg_item), flags_str);
printf("\t\tblock group used %llu chunk_objectid %llu flags %s\n", printf("\t\tblock group used %llu chunk_objectid %llu flags %s\n",
(unsigned long long)btrfs_block_group_used(&bg_item), btrfs_stack_block_group_used(&bg_item),
(unsigned long long)btrfs_block_group_chunk_objectid(&bg_item), btrfs_stack_block_group_chunk_objectid(&bg_item),
flags_str); flags_str);
} }