On Wed, Jul 04, 2018 at 03:42:30PM +0300, Nikolay Borisov wrote: > On 4.07.2018 13:16, Gu Jinxiang wrote: > > Reported in https://bugzilla.kernel.org/show_bug.cgi?id=199839, > > which has a invalid chunk, not return error opportunlly. > > > > Add chunk type check in btrfs_check_chunk_valid, > > to make error be returned in advance. > > > > Reported-by: Xu Wen <wen...@gatech.edu> > > Signed-off-by: Gu Jinxiang <g...@cn.fujitsu.com> > > Reviewed-by: Qu Wenruo <w...@suse.com> > > --- > > changelog: > > v3: > > deal with comment by Nikolay Borisov, change the error message > > more appropriate. > > > > v2: > > deal with comment by Qu, add precise check for chunk type. > > > > fs/btrfs/volumes.c | 29 +++++++++++++++++++++++++++++ > > 1 file changed, 29 insertions(+) > > > > diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c > > index b33bf29130b6..deea169cc276 100644 > > --- a/fs/btrfs/volumes.c > > +++ b/fs/btrfs/volumes.c > > @@ -6401,6 +6401,8 @@ static int btrfs_check_chunk_valid(struct > > btrfs_fs_info *fs_info, > > u16 num_stripes; > > u16 sub_stripes; > > u64 type; > > + u64 features; > > + int mixed = 0; > > > > length = btrfs_chunk_length(leaf, chunk); > > stripe_len = btrfs_chunk_stripe_len(leaf, chunk); > > @@ -6439,6 +6441,33 @@ static int btrfs_check_chunk_valid(struct > > btrfs_fs_info *fs_info, > > btrfs_chunk_type(leaf, chunk)); > > return -EIO; > > } > > + > > + if (!(type & BTRFS_BLOCK_GROUP_TYPE_MASK)) { > > + btrfs_err(fs_info, "missing chunk type flag: %llu", type); > > + return -EIO; > > + } > > + > > + if ((type & BTRFS_BLOCK_GROUP_SYSTEM) && > > + (type & (BTRFS_BLOCK_GROUP_METADATA | BTRFS_BLOCK_GROUP_DATA))) { > > + btrfs_err(fs_info, > > +"system chunk type, meanwhile with metadata or data chunk type flag: %llu", > > + type); > > That's rather cumbersomely worded, why not simply "Invalid chunk type > detected"
Updated. -- 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