[2/6] btrfs: move block_group_item::flags to block group
diff mbox series

Message ID 6d9dc41164cbe9197375c845f26a5707dfcc4734.1571848791.git.dsterba@suse.com
State New
Headers show
Series
  • Block group structure cleanups
Related show

Commit Message

David Sterba Oct. 23, 2019, 4:48 p.m. UTC
The flags are read from the item that's embedded to block group struct,
but the item will be removed. Use the ::flags after read and before
write.

Signed-off-by: David Sterba <dsterba@suse.com>
---
 fs/btrfs/block-group.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Johannes Thumshirn Oct. 24, 2019, 8:30 a.m. UTC | #1
Looks good,
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>

Patch
diff mbox series

diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c
index 4da5e0f6cb82..52e2a05c8345 100644
--- a/fs/btrfs/block-group.c
+++ b/fs/btrfs/block-group.c
@@ -1755,7 +1755,7 @@  int btrfs_read_block_groups(struct btrfs_fs_info *info)
 		/* Duplicate as the item is still partially used */
 		memcpy(&cache->item, &bgi, sizeof(bgi));
 		cache->used = btrfs_block_group_used(&bgi);
-		cache->flags = btrfs_block_group_flags(&cache->item);
+		cache->flags = btrfs_block_group_flags(&bgi);
 		if (!mixed &&
 		    ((cache->flags & BTRFS_BLOCK_GROUP_METADATA) &&
 		    (cache->flags & BTRFS_BLOCK_GROUP_DATA))) {
@@ -1885,6 +1885,7 @@  void btrfs_create_pending_block_groups(struct btrfs_trans_handle *trans)
 		 */
 		memcpy(&item, &block_group->item, sizeof(item));
 		btrfs_set_block_group_used(&item, block_group->used);
+		btrfs_set_block_group_flags(&item, block_group->flags);
 		memcpy(&key, &block_group->key, sizeof(key));
 		spin_unlock(&block_group->lock);
 
@@ -1920,8 +1921,6 @@  int btrfs_make_block_group(struct btrfs_trans_handle *trans, u64 bytes_used,
 	cache->used = bytes_used;
 	btrfs_set_block_group_chunk_objectid(&cache->item,
 					     BTRFS_FIRST_CHUNK_TREE_OBJECTID);
-	btrfs_set_block_group_flags(&cache->item, type);
-
 	cache->flags = type;
 	cache->last_byte_to_unpin = (u64)-1;
 	cache->cached = BTRFS_CACHE_FINISHED;
@@ -2140,6 +2139,7 @@  static int write_one_cache_group(struct btrfs_trans_handle *trans,
 	/* 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_flags(&bgi, cache->flags);
 	write_extent_buffer(leaf, &bgi, bi, sizeof(bgi));
 	btrfs_mark_buffer_dirty(leaf);
 fail: