Commit 18addf9e authored by Mark Harmstone's avatar Mark Harmstone Committed by David Sterba
Browse files

btrfs: tree-checker: check remap-tree flags in btrfs_check_chunk_valid()



Add a check to btrfs_check_chunk_valid() that the METADATA_REMAP and
REMAPPED flags are only set if the REMAP_TREE incompat flag is also set.

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 da08c02b
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -999,6 +999,20 @@ int btrfs_check_chunk_valid(const struct btrfs_fs_info *fs_info,
		}
	}

	if (unlikely((type & BTRFS_BLOCK_GROUP_METADATA_REMAP) &&
		     !(features & BTRFS_FEATURE_INCOMPAT_REMAP_TREE))) {
		chunk_err(fs_info, leaf, chunk, logical,
		"METADATA_REMAP chunk type without REMAP_TREE incompat bit");
		return -EUCLEAN;
	}

	if (unlikely(remapped &&
		     !(features & BTRFS_FEATURE_INCOMPAT_REMAP_TREE))) {
		chunk_err(fs_info, leaf, chunk, logical,
		"REMAPPED chunk flag without REMAP_TREE incompat bit");
		return -EUCLEAN;
	}

	if (!remapped &&
	    !valid_stripe_count(type & BTRFS_BLOCK_GROUP_PROFILE_MASK,
				num_stripes, sub_stripes)) {