On Sat, Nov 17, 2018 at 09:29:27AM +0800, Anand Jain wrote:
> > -                   ret = find_free_dev_extent(trans, device, min_free,
> > -                                              &dev_offset, NULL);
> > -                   if (!ret)
> > +                   if (!find_free_dev_extent(trans, device, min_free,
> > +                                              &dev_offset, NULL))
> 
>   This can return -ENOMEM;
> 
> > @@ -2856,8 +2856,7 @@ static int btrfs_relocate_chunk(struct btrfs_fs_info 
> > *fs_info, u64 chunk_offset)
> >      */
> >     lockdep_assert_held(&fs_info->delete_unused_bgs_mutex);
> >   
> > -   ret = btrfs_can_relocate(fs_info, chunk_offset);
> > -   if (ret)
> > +   if (!btrfs_can_relocate(fs_info, chunk_offset))
> >             return -ENOSPC;
> 
>   And ends up converting -ENOMEM to -ENOSPC.
> 
>   Its better to propagate the accurate error.

Right, converting to bool is obscuring the reason why the functions
fail. Making the code simpler at this cost does not look like a good
idea to me. I'll remove the patch from misc-next for now.

Reply via email to