On Mon, Aug 5, 2019 at 3:47 PM Nikolay Borisov <nbori...@suse.com> wrote:
>
> Correctly handle failure cases when adding an ordered extents in case
> of REGULAR or PREALLOC extents.
>
> Signed-off-by: Nikolay Borisov <nbori...@suse.com>

Reviewed-by: Filipe Manana <fdman...@suse.com>

It's correct, but:

> ---
>  fs/btrfs/inode.c | 16 +++++++++++++---
>  1 file changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
> index 6c3f9f3a7ed1..b935c301ca72 100644
> --- a/fs/btrfs/inode.c
> +++ b/fs/btrfs/inode.c
> @@ -1569,16 +1569,26 @@ static noinline int run_delalloc_nocow(struct inode 
> *inode,
>                                                        disk_bytenr, num_bytes,
>                                                        num_bytes,
>                                                        
> BTRFS_ORDERED_PREALLOC);
> +                       if (nocow)
> +                               btrfs_dec_nocow_writers(fs_info, disk_bytenr);
> +                       if (ret) {
> +                               btrfs_drop_extent_cache(BTRFS_I(inode),
> +                                                       cur_offset,
> +                                                       cur_offset + 
> num_bytes - 1,
> +                                                       0);
> +                               goto error;
> +                       }
>                 } else {
>                         ret = btrfs_add_ordered_extent(inode, cur_offset,
>                                                        disk_bytenr, num_bytes,
>                                                        num_bytes,
>                                                        BTRFS_ORDERED_NOCOW);
> +                       if (nocow)
> +                               btrfs_dec_nocow_writers(fs_info, disk_bytenr);
> +                       if (ret)
> +                               goto error;

We are now duplicating some error handling. Could be done like before,
outside the if branches.

>                 }
>
> -               if (nocow)
> -                       btrfs_dec_nocow_writers(fs_info, disk_bytenr);
> -               BUG_ON(ret); /* -ENOMEM */

Just replacing the BUG_ON(ret) with "if (ret) goto error;".

>
>                 if (root->root_key.objectid ==
>                     BTRFS_DATA_RELOC_TREE_OBJECTID)
> --
> 2.17.1
>


-- 
Filipe David Manana,

“Whether you think you can, or you think you can't — you're right.”

Reply via email to