Re: [PATCH 1/8] btrfs: Make get_state_failrec return failrec directly

Josef Bacik
2020-07-02T13:07:56Z

On 7/2/20 8:23 AM, Nikolay Borisov wrote:
> Only failure that get_state_failrec can get is if there is no failurec
> for the given address. There is no reason why the function should return
> a status code and use a separate parameter for returning the actual
> failure rec (if one is found). Simplify it by making the return type
> a pointer and return ERR_PTR value in case of errors.
>
> Signed-off-by: Nikolay Borisov <nborisov@suse.com>
> ---
> fs/btrfs/extent-io-tree.h | 4 ++--
> fs/btrfs/extent_io.c | 23 ++++++++++++-----------
> 2 files changed, 14 insertions(+), 13 deletions(-)
>
> diff --git a/fs/btrfs/extent-io-tree.h b/fs/btrfs/extent-io-tree.h
> index b6561455b3c4..62eef5b1dfc6 100644
> --- a/fs/btrfs/extent-io-tree.h
> +++ b/fs/btrfs/extent-io-tree.h
> @@ -233,8 +233,8 @@ bool btrfs_find_delalloc_range(struct extent_io_tree *tree, u64 *start,
> struct extent_state **cached_state);
>
> /* This should be reworked in the future and put elsewhere. */
> -int get_state_failrec(struct extent_io_tree *tree, u64 start,
> - struct io_failure_record **failrec);
> +struct io_failure_record *get_state_failrec(struct extent_io_tree *tree,
> + u64 start);
> int set_state_failrec(struct extent_io_tree *tree, u64 start,
> struct io_failure_record *failrec);
> void btrfs_free_io_failure_record(struct btrfs_inode *inode, u64 start,
> diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
> index 8a7e9da74b87..6f0891ad353b 100644
> --- a/fs/btrfs/extent_io.c
> +++ b/fs/btrfs/extent_io.c
> @@ -2121,12 +2121,12 @@ int set_state_failrec(struct extent_io_tree *tree, u64 start,
> return ret;
> }
>
> -int get_state_failrec(struct extent_io_tree *tree, u64 start,
> - struct io_failure_record **failrec)
> +struct io_failure_record *get_state_failrec(struct extent_io_tree *tree,
> + u64 start)
> {
> struct rb_node *node;
> struct extent_state *state;
> - int ret = 0;
> + struct io_failure_record *failrec;

Seems we can just do

struct io_failure_record *failrec = ERR_PTR(-ENOENT);

here and avoid the extra stuff below, as we only ever return -ENOENT on failure.
Thanks,

Josef