diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index bfe04afa62771d5f201e76bef6f0f0ec7ec5d088..707fccc5279b94db672a703e62ad1c37d9ffda4a 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -590,8 +590,10 @@ static noinline void compress_file_range(struct inode *inode, PAGE_SET_WRITEBACK | page_error_op | PAGE_END_WRITEBACK); - btrfs_free_reserved_data_space_noquota(inode, start, - end - start + 1); + if (ret == 0) + btrfs_free_reserved_data_space_noquota(inode, + start, + end - start + 1); goto free_pages_out; } }