On 14/02/2020 09:14, Qu Wenruo wrote:
> @@ -677,9 +635,6 @@ struct backref_node *build_backref_tree(struct reloc_control *rc,
> struct backref_node *exist = NULL;
> struct backref_edge *edge;
> struct rb_node *rb_node;
> - struct btrfs_key key;
> - unsigned long end;
> - unsigned long ptr;
> LIST_HEAD(list); /* Pending edge list, upper node needs to be checked */
> LIST_HEAD(useless);
> int cowonly;
> @@ -687,14 +642,14 @@ struct backref_node *build_backref_tree(struct reloc_control *rc,
> int err = 0;
> bool need_check = true;
>
> - path1 = btrfs_alloc_path();
> - path2 = btrfs_alloc_path();
> - if (!path1 || !path2) {
> + iterator = btrfs_backref_iterator_alloc(rc->extent_root->fs_info,
> + GFP_NOFS);
btrfs_backref_iterator_alloc() can fail and I don't see where a
iterator == NULL condition is handled.