> The following commit:
>
> "btrfs-progs: fsck: remove unfriendly BUG_ON() for searching tree failure"
> f495a2ac66116f0a1b15e73380c8cbca6e0a4ca0
>
> introduced a regression, detected through xfstests/btrfs/054, where
> previously a negative return value (-1) was used to mean a particular
> root didn't had any parent root, and now, after that change, a negative
> value is also used to mean that an error happened. That change also made
> the only caller of is_child_root() interpret any negative return value
> as an error and therefore incorrectly made the caller leave with an
> error, instead of continuing.
>
> This affects only the 3.17 release candidates (3.16 and older releases
> don't have this issue).
>
> Signed-off-by: Filipe Manana <fdmanana@xxxxxxxx>
Thanks for Fixing this, Filipe!
Reviewed-by: Wang Shilong <wangshilong1991@xxxxxxxxx>
> ---
>
> V2: Made it return 2 (instead of -1) when the root child_root_id doesn't
> have any parent roots, in order to behave exactly like the code
> pre-commit f495a2ac66116f0a1b15e73380c8cbca6e0a4ca0.
>
> cmds-check.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/cmds-check.c b/cmds-check.c
> index 99d1a94..310eb2a 100644
> --- a/cmds-check.c
> +++ b/cmds-check.c
> @@ -895,6 +895,14 @@ static int leave_shared_node(struct btrfs_root *root,
> return 0;
> }
>
> +/*
> + * Returns:
> + * < 0 - on error
> + * 1 - if the root with id child_root_id is a child of root parent_root_id
> + * 0 - if the root child_root_id isn't a child of the root parent_root_id but
> + * has other root(s) as parent(s)
> + * 2 - if the root child_root_id doesn't have any parent roots
> + */
> static int is_child_root(struct btrfs_root *root, u64 parent_root_id,
> u64 child_root_id)
> {
> @@ -952,7 +960,7 @@ out:
> btrfs_release_path(&path);
> if (ret < 0)
> return ret;
> - return has_parent? 0 : -1;
> + return has_parent ? 0 : 2;
> }
>
> static int process_dir_item(struct btrfs_root *root,
> --
> 1.9.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
Best Regards,
Wang Shilong
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html