Lines Matching refs:upper
3041 INIT_LIST_HEAD(&node->upper); in btrfs_backref_alloc_node()
3111 ASSERT(list_empty(&node->upper)); in btrfs_backref_drop_node()
3136 while (!list_empty(&node->upper)) { in btrfs_backref_cleanup_node()
3137 edge = list_first_entry(&node->upper, struct btrfs_backref_edge, in btrfs_backref_cleanup_node()
3166 struct btrfs_backref_node *upper) in btrfs_backref_link_edge() argument
3168 ASSERT(upper && lower && upper->level == lower->level + 1); in btrfs_backref_link_edge()
3170 edge->node[UPPER] = upper; in btrfs_backref_link_edge()
3171 list_add_tail(&edge->list[LOWER], &lower->upper); in btrfs_backref_link_edge()
3190 struct btrfs_backref_node *upper; in handle_direct_tree_backref() local
3223 upper = btrfs_backref_alloc_node(cache, ref_key->offset, in handle_direct_tree_backref()
3225 if (!upper) { in handle_direct_tree_backref()
3237 upper = rb_entry(rb_node, struct btrfs_backref_node, rb_node); in handle_direct_tree_backref()
3238 ASSERT(upper->checked); in handle_direct_tree_backref()
3241 btrfs_backref_link_edge(edge, cur, upper); in handle_direct_tree_backref()
3266 struct btrfs_backref_node *upper; in handle_indirect_tree_backref() local
3361 upper = btrfs_backref_alloc_node(cache, eb->start, in handle_indirect_tree_backref()
3363 if (!upper) { in handle_indirect_tree_backref()
3369 upper->owner = btrfs_header_owner(eb); in handle_indirect_tree_backref()
3375 btrfs_backref_free_node(cache, upper); in handle_indirect_tree_backref()
3385 upper->checked = 0; in handle_indirect_tree_backref()
3387 upper->checked = 1; in handle_indirect_tree_backref()
3394 if (!upper->checked && need_check) { in handle_indirect_tree_backref()
3399 if (upper->checked) in handle_indirect_tree_backref()
3404 upper = rb_entry(rb_node, struct btrfs_backref_node, in handle_indirect_tree_backref()
3406 ASSERT(upper->checked); in handle_indirect_tree_backref()
3408 if (!upper->owner) in handle_indirect_tree_backref()
3409 upper->owner = btrfs_header_owner(eb); in handle_indirect_tree_backref()
3411 btrfs_backref_link_edge(edge, lower, upper); in handle_indirect_tree_backref()
3417 lower = upper; in handle_indirect_tree_backref()
3418 upper = NULL; in handle_indirect_tree_backref()
3466 if (!list_empty(&cur->upper)) { in btrfs_backref_add_tree_node()
3471 ASSERT(list_is_singular(&cur->upper)); in btrfs_backref_add_tree_node()
3472 edge = list_first_entry(&cur->upper, struct btrfs_backref_edge, in btrfs_backref_add_tree_node()
3578 list_for_each_entry(edge, &start->upper, list[LOWER]) in btrfs_backref_finish_upper_links()
3582 struct btrfs_backref_node *upper; in btrfs_backref_finish_upper_links() local
3588 upper = edge->node[UPPER]; in btrfs_backref_finish_upper_links()
3592 if (upper->detached) { in btrfs_backref_finish_upper_links()
3597 if (list_empty(&lower->upper)) in btrfs_backref_finish_upper_links()
3609 if (!RB_EMPTY_NODE(&upper->rb_node)) { in btrfs_backref_finish_upper_links()
3610 list_add_tail(&edge->list[UPPER], &upper->lower); in btrfs_backref_finish_upper_links()
3615 if (!upper->checked) { in btrfs_backref_finish_upper_links()
3620 rb_node = rb_simple_insert(&cache->rb_root, &upper->simple_node); in btrfs_backref_finish_upper_links()
3622 btrfs_backref_panic(cache->fs_info, upper->bytenr, -EEXIST); in btrfs_backref_finish_upper_links()
3626 list_add_tail(&edge->list[UPPER], &upper->lower); in btrfs_backref_finish_upper_links()
3632 list_for_each_entry(edge, &upper->upper, list[LOWER]) in btrfs_backref_finish_upper_links()
3642 struct btrfs_backref_node *upper; in btrfs_backref_error_cleanup() local
3656 upper = edge->node[UPPER]; in btrfs_backref_error_cleanup()
3663 if (list_empty(&lower->upper) && in btrfs_backref_error_cleanup()
3667 if (!RB_EMPTY_NODE(&upper->rb_node)) in btrfs_backref_error_cleanup()
3671 list_for_each_entry(edge, &upper->upper, list[LOWER]) in btrfs_backref_error_cleanup()
3674 if (list_empty(&upper->upper)) in btrfs_backref_error_cleanup()
3675 list_add(&upper->list, &cache->useless_node); in btrfs_backref_error_cleanup()