btrfs: tree-checker: use table values for stripe checks

There are hardcoded values in several checks regarding chunks and stripe
constraints. We have that defined in the raid table and ought to use it.

Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
David Sterba 2021-07-26 14:15:15 +02:00
parent 809d6902b3
commit 0ac6e06b6c

View File

@ -873,13 +873,18 @@ int btrfs_check_chunk_valid(struct extent_buffer *leaf,
} }
} }
if (unlikely((type & BTRFS_BLOCK_GROUP_RAID10 && sub_stripes != 2) || if (unlikely((type & BTRFS_BLOCK_GROUP_RAID10 &&
(type & BTRFS_BLOCK_GROUP_RAID1 && num_stripes != 2) || sub_stripes != btrfs_raid_array[BTRFS_RAID_RAID10].sub_stripes) ||
(type & BTRFS_BLOCK_GROUP_RAID5 && num_stripes < 2) || (type & BTRFS_BLOCK_GROUP_RAID1 &&
(type & BTRFS_BLOCK_GROUP_RAID6 && num_stripes < 3) || num_stripes != btrfs_raid_array[BTRFS_RAID_RAID1].devs_min) ||
(type & BTRFS_BLOCK_GROUP_DUP && num_stripes != 2) || (type & BTRFS_BLOCK_GROUP_RAID5 &&
num_stripes < btrfs_raid_array[BTRFS_RAID_RAID5].devs_min) ||
(type & BTRFS_BLOCK_GROUP_RAID6 &&
num_stripes < btrfs_raid_array[BTRFS_RAID_RAID6].devs_min) ||
(type & BTRFS_BLOCK_GROUP_DUP &&
num_stripes != btrfs_raid_array[BTRFS_RAID_DUP].dev_stripes) ||
((type & BTRFS_BLOCK_GROUP_PROFILE_MASK) == 0 && ((type & BTRFS_BLOCK_GROUP_PROFILE_MASK) == 0 &&
num_stripes != 1))) { num_stripes != btrfs_raid_array[BTRFS_RAID_SINGLE].dev_stripes))) {
chunk_err(leaf, chunk, logical, chunk_err(leaf, chunk, logical,
"invalid num_stripes:sub_stripes %u:%u for profile %llu", "invalid num_stripes:sub_stripes %u:%u for profile %llu",
num_stripes, sub_stripes, num_stripes, sub_stripes,