For DUP profile, the num_stripes should be 2 not 1.
This causes btrfs offline tool fails on valid image.
Also, num_stripes check is too restrict for btrfsck self test,
as there is some image in degraded mode, so modify it to allow degraded
chunk.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
/*
* Device number check against profile
*/
- if ((map->type & BTRFS_BLOCK_GROUP_RAID10 && num_stripes < 4 &&
- map->sub_stripes < 2) ||
- (map->type & BTRFS_BLOCK_GROUP_RAID1 && num_stripes < 2) ||
- (map->type & BTRFS_BLOCK_GROUP_RAID5 && num_stripes < 3) ||
- (map->type & BTRFS_BLOCK_GROUP_RAID6 && num_stripes < 4) ||
- (map->type & BTRFS_BLOCK_GROUP_DUP && num_stripes != 1) ||
+ if ((map->type & BTRFS_BLOCK_GROUP_RAID10 && map->sub_stripes == 0) ||
+ (map->type & BTRFS_BLOCK_GROUP_RAID1 && num_stripes < 1) ||
+ (map->type & BTRFS_BLOCK_GROUP_RAID5 && num_stripes < 2) ||
+ (map->type & BTRFS_BLOCK_GROUP_RAID6 && num_stripes < 3) ||
+ (map->type & BTRFS_BLOCK_GROUP_DUP && num_stripes > 2) ||
((map->type & BTRFS_BLOCK_GROUP_PROFILE_MASK) == 0 &&
num_stripes != 1)) {
fprintf(stderr,