On 2019/9/12 下午3:53, Filipe Manana wrote: > On Thu, Sep 12, 2019 at 2:31 AM Qu Wenruo <w...@suse.com> wrote: >> >> Commit bc42bda22345 ("btrfs: qgroup: Fix qgroup reserved space underflow by >> only freeing reserved ranges") is freeing wrong range in >> BTRFS_I()->io_failure_tree, which should be BTRFS_I()->io_tree. > > I think you meant wrong tree and not wrong range, since the code > doesn't change the range, only the target tree.
Right, wrong tree. > > Also, for the sake of completeness, and no matter how obvious you > think it is, can you explicitly mention what's the consequence? I > presume it's a qgroup reserved space leak or underflow. Yes, qgroup reserved space leak for some error path. I'll enhance the comment, and also craft a test case for it. Thanks, Qu > > Thanks. > >> >> Just fix it. >> >> Reported-by: Josef Bacik <jo...@toxicpanda.com> >> Fixes: bc42bda22345 ("btrfs: qgroup: Fix qgroup reserved space underflow by >> only freeing reserved ranges") >> Signed-off-by: Qu Wenruo <w...@suse.com> >> --- >> fs/btrfs/qgroup.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c >> index 2891b57b9e1e..64bdc3e3652d 100644 >> --- a/fs/btrfs/qgroup.c >> +++ b/fs/btrfs/qgroup.c >> @@ -3492,7 +3492,7 @@ static int qgroup_free_reserved_data(struct inode >> *inode, >> * EXTENT_QGROUP_RESERVED, we won't double free. >> * So not need to rush. >> */ >> - ret = >> clear_record_extent_bits(&BTRFS_I(inode)->io_failure_tree, >> + ret = clear_record_extent_bits(&BTRFS_I(inode)->io_tree, >> free_start, free_start + free_len - 1, >> EXTENT_QGROUP_RESERVED, &changeset); >> if (ret < 0) >> -- >> 2.23.0 >> > >
signature.asc
Description: OpenPGP digital signature