Lines Matching defs:upper
3028 INIT_LIST_HEAD(&node->upper);
3051 * upper edges and any uncached nodes in the path.
3059 struct btrfs_backref_node *upper;
3066 while (!list_empty(&node->upper)) {
3067 edge = list_entry(node->upper.next, struct btrfs_backref_edge,
3069 upper = edge->node[UPPER];
3078 if (list_empty(&upper->lower)) {
3079 list_add_tail(&upper->lower, &cache->leaves);
3080 upper->lowest = 1;
3137 struct btrfs_backref_node *upper;
3170 upper = btrfs_backref_alloc_node(cache, ref_key->offset,
3172 if (!upper) {
3178 * Backrefs for the upper level block isn't cached, add the
3184 upper = rb_entry(rb_node, struct btrfs_backref_node, rb_node);
3185 ASSERT(upper->checked);
3188 btrfs_backref_link_edge(edge, cur, upper, LINK_LOWER);
3213 struct btrfs_backref_node *upper;
3304 upper = btrfs_backref_alloc_node(cache, eb->start,
3306 if (!upper) {
3312 upper->owner = btrfs_header_owner(eb);
3314 upper->cowonly = 1;
3321 upper->checked = 0;
3323 upper->checked = 1;
3330 if (!upper->checked && need_check) {
3335 if (upper->checked)
3340 upper = rb_entry(rb_node, struct btrfs_backref_node,
3342 ASSERT(upper->checked);
3344 if (!upper->owner)
3345 upper->owner = btrfs_header_owner(eb);
3347 btrfs_backref_link_edge(edge, lower, upper, LINK_LOWER);
3353 lower = upper;
3354 upper = NULL;
3364 * NOTE: Even if the function returned 0, @cur is not yet cached as its upper
3402 if (!list_empty(&cur->upper)) {
3407 ASSERT(list_is_singular(&cur->upper));
3408 edge = list_entry(cur->upper.next, struct btrfs_backref_edge,
3413 * Add the upper level block to pending list if we need check
3520 list_for_each_entry(edge, &start->upper, list[LOWER])
3524 struct btrfs_backref_node *upper;
3530 upper = edge->node[UPPER];
3534 if (upper->detached) {
3539 if (list_empty(&lower->upper))
3547 * So if we have upper->rb_node populated, this means a cache
3548 * hit. We only need to link the edge, as @upper and all its
3551 if (!RB_EMPTY_NODE(&upper->rb_node)) {
3552 if (upper->lowest) {
3553 list_del_init(&upper->lower);
3554 upper->lowest = 0;
3557 list_add_tail(&edge->list[UPPER], &upper->lower);
3562 if (!upper->checked) {
3568 if (start->cowonly != upper->cowonly) {
3574 if (!upper->cowonly) {
3575 rb_node = rb_simple_insert(&cache->rb_root, upper->bytenr,
3576 &upper->rb_node);
3579 upper->bytenr, -EEXIST);
3584 list_add_tail(&edge->list[UPPER], &upper->lower);
3588 * to finish the upper linkage
3590 list_for_each_entry(edge, &upper->upper, list[LOWER])
3600 struct btrfs_backref_node *upper;
3614 upper = edge->node[UPPER];
3618 * Lower is no longer linked to any upper backref nodes and
3621 if (list_empty(&lower->upper) &&
3625 if (!RB_EMPTY_NODE(&upper->rb_node))
3628 /* Add this guy's upper edges to the list to process */
3629 list_for_each_entry(edge, &upper->upper, list[LOWER])
3632 if (list_empty(&upper->upper))
3633 list_add(&upper->list, &cache->useless_node);