Commit 1d8f69f4 authored by Mark Harmstone's avatar Mark Harmstone Committed by David Sterba
Browse files

btrfs: fix missing fields in superblock backup with BLOCK_GROUP_TREE



When the BLOCK_GROUP_TREE compat_ro flag is set, the extent root and
csum root fields are getting missed.

This is because EXTENT_TREE_V2 treated these differently, and when
they were split off this special-casing was mistakenly assigned to
BGT rather than the rump EXTENT_TREE_V2. There's no reason why the
existence of the block group tree should mean that we don't record the
details of the last commit's extent root and csum root.

Fix the code in backup_super_roots() so that the correct check gets
made.

Fixes: 1c56ab99 ("btrfs: separate BLOCK_GROUP_TREE compat RO flag from EXTENT_TREE_V2")
Reviewed-by: default avatarQu Wenruo <wqu@suse.com>
Signed-off-by: default avatarMark Harmstone <mark@harmstone.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 1972f44c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1661,7 +1661,7 @@ static void backup_super_roots(struct btrfs_fs_info *info)
	btrfs_set_backup_chunk_root_level(root_backup,
			       btrfs_header_level(info->chunk_root->node));

	if (!btrfs_fs_compat_ro(info, BLOCK_GROUP_TREE)) {
	if (!btrfs_fs_incompat(info, EXTENT_TREE_V2)) {
		struct btrfs_root *extent_root = btrfs_extent_root(info, 0);
		struct btrfs_root *csum_root = btrfs_csum_root(info, 0);