btrfs-progs: Fix a bug in chunk item extra check and allow degraded chunk.
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>
This commit is contained in:
parent
f146c40c65
commit
4643934109
11
volumes.c
11
volumes.c
|
@ -1649,12 +1649,11 @@ static int read_one_chunk(struct btrfs_root *root, struct btrfs_key *key,
|
|||
/*
|
||||
* 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,
|
||||
|
|
Loading…
Reference in New Issue