chunk type BTRFS_BLOCK_GROUP_METADATA and BTRFS_BLOCK_GROUP_DATA should not be set in a non-mixed chunk at the same time.
Since BTRFS_BLOCK_GROUP_METADATA is 0x4 and BTRFS_BLOCK_GROUP_DATA is 0x1, BTRFS_BLOCK_GROUP_METADATA & BTRFS_BLOCK_GROUP_DATA will be 0x0, so we should judge type is one of them separately. Reported-by: Dan Carpenter <dan.carpen...@oracle.com> Signed-off-by: Gu Jinxiang <g...@cn.fujitsu.com> --- fs/btrfs/volumes.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 3f2f01ad9356..c7d009e45472 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -6384,8 +6384,8 @@ static int btrfs_check_chunk_valid(struct btrfs_fs_info *fs_info, mixed = 1; if (!mixed) { - if (type & - (BTRFS_BLOCK_GROUP_METADATA & BTRFS_BLOCK_GROUP_DATA)) { + if ((type & BTRFS_BLOCK_GROUP_METADATA) && + (type & BTRFS_BLOCK_GROUP_DATA)) { btrfs_err(fs_info, "mixed chunk type in non-mixed mode: %llu", type); return -EIO; -- 2.17.1 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html