mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-18 03:06:43 +00:00
btrfs: remove embedded block_group_cache::item
The members ::used and ::flags are now in the block group cache structure, the last one is chunk_objectid, but that's set to a fixed value and otherwise unused. The item is constructed from a local variable before write, so we can remove the embedded one from block group. Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Reviewed-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
f93c63e547
commit
3d976388da
@ -1752,8 +1752,7 @@ int btrfs_read_block_groups(struct btrfs_fs_info *info)
|
|||||||
read_extent_buffer(leaf, &bgi,
|
read_extent_buffer(leaf, &bgi,
|
||||||
btrfs_item_ptr_offset(leaf, path->slots[0]),
|
btrfs_item_ptr_offset(leaf, path->slots[0]),
|
||||||
sizeof(bgi));
|
sizeof(bgi));
|
||||||
/* Duplicate as the item is still partially used */
|
/* cache::chunk_objectid is unused */
|
||||||
memcpy(&cache->item, &bgi, sizeof(bgi));
|
|
||||||
cache->used = btrfs_block_group_used(&bgi);
|
cache->used = btrfs_block_group_used(&bgi);
|
||||||
cache->flags = btrfs_block_group_flags(&bgi);
|
cache->flags = btrfs_block_group_flags(&bgi);
|
||||||
if (!mixed &&
|
if (!mixed &&
|
||||||
@ -1879,12 +1878,9 @@ void btrfs_create_pending_block_groups(struct btrfs_trans_handle *trans)
|
|||||||
goto next;
|
goto next;
|
||||||
|
|
||||||
spin_lock(&block_group->lock);
|
spin_lock(&block_group->lock);
|
||||||
/*
|
|
||||||
* Copy partially filled item from the cache and ovewrite used
|
|
||||||
* that has the correct value
|
|
||||||
*/
|
|
||||||
memcpy(&item, &block_group->item, sizeof(item));
|
|
||||||
btrfs_set_block_group_used(&item, block_group->used);
|
btrfs_set_block_group_used(&item, block_group->used);
|
||||||
|
btrfs_set_block_group_chunk_objectid(&item,
|
||||||
|
BTRFS_FIRST_CHUNK_TREE_OBJECTID);
|
||||||
btrfs_set_block_group_flags(&item, block_group->flags);
|
btrfs_set_block_group_flags(&item, block_group->flags);
|
||||||
memcpy(&key, &block_group->key, sizeof(key));
|
memcpy(&key, &block_group->key, sizeof(key));
|
||||||
spin_unlock(&block_group->lock);
|
spin_unlock(&block_group->lock);
|
||||||
@ -1919,8 +1915,6 @@ int btrfs_make_block_group(struct btrfs_trans_handle *trans, u64 bytes_used,
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
cache->used = bytes_used;
|
cache->used = bytes_used;
|
||||||
btrfs_set_block_group_chunk_objectid(&cache->item,
|
|
||||||
BTRFS_FIRST_CHUNK_TREE_OBJECTID);
|
|
||||||
cache->flags = type;
|
cache->flags = type;
|
||||||
cache->last_byte_to_unpin = (u64)-1;
|
cache->last_byte_to_unpin = (u64)-1;
|
||||||
cache->cached = BTRFS_CACHE_FINISHED;
|
cache->cached = BTRFS_CACHE_FINISHED;
|
||||||
@ -2136,9 +2130,9 @@ 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]);
|
||||||
/* Partial copy of item, update the rest from memory */
|
|
||||||
memcpy(&bgi, &cache->item, sizeof(bgi));
|
|
||||||
btrfs_set_block_group_used(&bgi, cache->used);
|
btrfs_set_block_group_used(&bgi, cache->used);
|
||||||
|
btrfs_set_block_group_chunk_objectid(&bgi,
|
||||||
|
BTRFS_FIRST_CHUNK_TREE_OBJECTID);
|
||||||
btrfs_set_block_group_flags(&bgi, cache->flags);
|
btrfs_set_block_group_flags(&bgi, cache->flags);
|
||||||
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);
|
||||||
|
@ -44,7 +44,6 @@ struct btrfs_caching_control {
|
|||||||
|
|
||||||
struct btrfs_block_group_cache {
|
struct btrfs_block_group_cache {
|
||||||
struct btrfs_key key;
|
struct btrfs_key key;
|
||||||
struct btrfs_block_group_item item;
|
|
||||||
struct btrfs_fs_info *fs_info;
|
struct btrfs_fs_info *fs_info;
|
||||||
struct inode *inode;
|
struct inode *inode;
|
||||||
spinlock_t lock;
|
spinlock_t lock;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user