Lines Matching refs:level

99 				     int level, struct btrfs_key *ins,
104 static int find_next_key(struct btrfs_path *path, int level,
1435 static int find_next_key(struct btrfs_path *path, int level, in find_next_key() argument
1439 for (; level < BTRFS_MAX_LEVEL; level++) { in find_next_key()
1440 if (!path->nodes[level]) in find_next_key()
1442 if (path->slots[level] + 1 >= in find_next_key()
1443 btrfs_header_nritems(path->nodes[level])) in find_next_key()
1445 if (level == 0) in find_next_key()
1446 btrfs_item_key_to_cpu(path->nodes[level], key, in find_next_key()
1447 path->slots[level] + 1); in find_next_key()
1449 btrfs_node_key_to_cpu(path->nodes[level], key, in find_next_key()
1450 path->slots[level] + 1); in find_next_key()
2153 key.offset = extent_op->level; in run_delayed_extent_op()
2241 ins.offset = ref->level; in run_delayed_tree_ref()
2255 ref->level, &ins, in run_delayed_tree_ref()
2260 ref->level, 0, 1, node->no_quota, in run_delayed_tree_ref()
2265 ref->level, 0, 1, extent_op, in run_delayed_tree_ref()
2877 int level, int is_data) in btrfs_set_disk_extent_flags() argument
2890 extent_op->level = level; in btrfs_set_disk_extent_flags()
3086 int level; in __btrfs_mod_ref() local
3097 level = btrfs_header_level(buf); in __btrfs_mod_ref()
3099 if (!test_bit(BTRFS_ROOT_REF_COWS, &root->state) && level == 0) in __btrfs_mod_ref()
3113 if (level == 0) { in __btrfs_mod_ref()
3137 parent, ref_root, level - 1, 0, in __btrfs_mod_ref()
7333 int level, struct btrfs_key *ins, in alloc_reserved_tree_block() argument
7382 btrfs_set_tree_block_level(leaf, block_info, level); in alloc_reserved_tree_block()
7474 u64 bytenr, int level) in btrfs_init_new_buffer() argument
7482 btrfs_set_buffer_lockdep_class(root->root_key.objectid, buf, level); in btrfs_init_new_buffer()
7583 struct btrfs_disk_key *key, int level, in btrfs_alloc_tree_block() argument
7598 level); in btrfs_alloc_tree_block()
7613 buf = btrfs_init_new_buffer(trans, root, ins.objectid, level); in btrfs_alloc_tree_block()
7643 extent_op->level = level; in btrfs_alloc_tree_block()
7647 parent, root_objectid, level, in btrfs_alloc_tree_block()
7671 int level; member
7700 if (path->slots[wc->level] < wc->reada_slot) { in reada_walk_down()
7709 eb = path->nodes[wc->level]; in reada_walk_down()
7713 for (slot = path->slots[wc->level]; slot < nritems; slot++) { in reada_walk_down()
7721 if (slot == path->slots[wc->level]) in reada_walk_down()
7730 wc->level - 1, 1, &refs, in reada_walk_down()
7741 if (wc->level == 1 && in reada_walk_down()
7753 if (wc->level == 1 && in reada_walk_down()
7820 int level = 0; in adjust_slots_upwards() local
7827 while (level <= root_level) { in adjust_slots_upwards()
7828 eb = path->nodes[level]; in adjust_slots_upwards()
7830 path->slots[level]++; in adjust_slots_upwards()
7831 slot = path->slots[level]; in adjust_slots_upwards()
7832 if (slot >= nr || level == 0) { in adjust_slots_upwards()
7838 if (level != root_level) { in adjust_slots_upwards()
7839 btrfs_tree_unlock_rw(eb, path->locks[level]); in adjust_slots_upwards()
7840 path->locks[level] = 0; in adjust_slots_upwards()
7843 path->nodes[level] = NULL; in adjust_slots_upwards()
7844 path->slots[level] = 0; in adjust_slots_upwards()
7855 level++; in adjust_slots_upwards()
7875 int level; in account_shared_subtree() local
7914 level = root_level; in account_shared_subtree()
7915 while (level >= 0) { in account_shared_subtree()
7916 if (path->nodes[level] == NULL) { in account_shared_subtree()
7923 eb = path->nodes[level + 1]; in account_shared_subtree()
7924 parent_slot = path->slots[level + 1]; in account_shared_subtree()
7934 path->nodes[level] = eb; in account_shared_subtree()
7935 path->slots[level] = 0; in account_shared_subtree()
7939 path->locks[level] = BTRFS_READ_LOCK_BLOCKING; in account_shared_subtree()
7952 if (level == 0) { in account_shared_subtree()
7953 ret = account_leaf_items(trans, root, path->nodes[level]); in account_shared_subtree()
7966 level--; in account_shared_subtree()
7989 int level = wc->level; in walk_down_proc() local
7990 struct extent_buffer *eb = path->nodes[level]; in walk_down_proc()
8003 ((wc->stage == DROP_REFERENCE && wc->refs[level] != 1) || in walk_down_proc()
8004 (wc->stage == UPDATE_BACKREF && !(wc->flags[level] & flag)))) { in walk_down_proc()
8005 BUG_ON(!path->locks[level]); in walk_down_proc()
8007 eb->start, level, 1, in walk_down_proc()
8008 &wc->refs[level], in walk_down_proc()
8009 &wc->flags[level]); in walk_down_proc()
8013 BUG_ON(wc->refs[level] == 0); in walk_down_proc()
8017 if (wc->refs[level] > 1) in walk_down_proc()
8020 if (path->locks[level] && !wc->keep_locks) { in walk_down_proc()
8021 btrfs_tree_unlock_rw(eb, path->locks[level]); in walk_down_proc()
8022 path->locks[level] = 0; in walk_down_proc()
8028 if (!(wc->flags[level] & flag)) { in walk_down_proc()
8029 BUG_ON(!path->locks[level]); in walk_down_proc()
8038 wc->flags[level] |= flag; in walk_down_proc()
8045 if (path->locks[level] && level > 0) { in walk_down_proc()
8046 btrfs_tree_unlock_rw(eb, path->locks[level]); in walk_down_proc()
8047 path->locks[level] = 0; in walk_down_proc()
8076 int level = wc->level; in do_walk_down() local
8081 generation = btrfs_node_ptr_generation(path->nodes[level], in do_walk_down()
8082 path->slots[level]); in do_walk_down()
8094 bytenr = btrfs_node_blockptr(path->nodes[level], path->slots[level]); in do_walk_down()
8103 level - 1); in do_walk_down()
8109 ret = btrfs_lookup_extent_info(trans, root, bytenr, level - 1, 1, in do_walk_down()
8110 &wc->refs[level - 1], in do_walk_down()
8111 &wc->flags[level - 1]); in do_walk_down()
8117 if (unlikely(wc->refs[level - 1] == 0)) { in do_walk_down()
8124 if (wc->refs[level - 1] > 1) { in do_walk_down()
8126 if (level == 1 && in do_walk_down()
8134 btrfs_node_key_to_cpu(path->nodes[level], &key, in do_walk_down()
8135 path->slots[level]); in do_walk_down()
8141 wc->shared_level = level - 1; in do_walk_down()
8144 if (level == 1 && in do_walk_down()
8157 if (reada && level == 1) in do_walk_down()
8168 level--; in do_walk_down()
8169 BUG_ON(level != btrfs_header_level(next)); in do_walk_down()
8170 path->nodes[level] = next; in do_walk_down()
8171 path->slots[level] = 0; in do_walk_down()
8172 path->locks[level] = BTRFS_WRITE_LOCK_BLOCKING; in do_walk_down()
8173 wc->level = level; in do_walk_down()
8174 if (wc->level == 1) in do_walk_down()
8178 wc->refs[level - 1] = 0; in do_walk_down()
8179 wc->flags[level - 1] = 0; in do_walk_down()
8181 if (wc->flags[level] & BTRFS_BLOCK_FLAG_FULL_BACKREF) { in do_walk_down()
8182 parent = path->nodes[level]->start; in do_walk_down()
8185 btrfs_header_owner(path->nodes[level])); in do_walk_down()
8191 generation, level - 1); in do_walk_down()
8200 root->root_key.objectid, level - 1, 0, 0); in do_walk_down()
8227 int level = wc->level; in walk_up_proc() local
8228 struct extent_buffer *eb = path->nodes[level]; in walk_up_proc()
8232 BUG_ON(wc->shared_level < level); in walk_up_proc()
8233 if (level < wc->shared_level) in walk_up_proc()
8236 ret = find_next_key(path, level + 1, &wc->update_progress); in walk_up_proc()
8242 path->slots[level] = 0; in walk_up_proc()
8249 if (!path->locks[level]) { in walk_up_proc()
8250 BUG_ON(level == 0); in walk_up_proc()
8253 path->locks[level] = BTRFS_WRITE_LOCK_BLOCKING; in walk_up_proc()
8256 eb->start, level, 1, in walk_up_proc()
8257 &wc->refs[level], in walk_up_proc()
8258 &wc->flags[level]); in walk_up_proc()
8260 btrfs_tree_unlock_rw(eb, path->locks[level]); in walk_up_proc()
8261 path->locks[level] = 0; in walk_up_proc()
8264 BUG_ON(wc->refs[level] == 0); in walk_up_proc()
8265 if (wc->refs[level] == 1) { in walk_up_proc()
8266 btrfs_tree_unlock_rw(eb, path->locks[level]); in walk_up_proc()
8267 path->locks[level] = 0; in walk_up_proc()
8274 BUG_ON(wc->refs[level] > 1 && !path->locks[level]); in walk_up_proc()
8276 if (wc->refs[level] == 1) { in walk_up_proc()
8277 if (level == 0) { in walk_up_proc()
8278 if (wc->flags[level] & BTRFS_BLOCK_FLAG_FULL_BACKREF) in walk_up_proc()
8292 if (!path->locks[level] && in walk_up_proc()
8296 path->locks[level] = BTRFS_WRITE_LOCK_BLOCKING; in walk_up_proc()
8302 if (wc->flags[level] & BTRFS_BLOCK_FLAG_FULL_BACKREF) in walk_up_proc()
8308 if (wc->flags[level + 1] & BTRFS_BLOCK_FLAG_FULL_BACKREF) in walk_up_proc()
8309 parent = path->nodes[level + 1]->start; in walk_up_proc()
8312 btrfs_header_owner(path->nodes[level + 1])); in walk_up_proc()
8315 btrfs_free_tree_block(trans, root, eb, parent, wc->refs[level] == 1); in walk_up_proc()
8317 wc->refs[level] = 0; in walk_up_proc()
8318 wc->flags[level] = 0; in walk_up_proc()
8327 int level = wc->level; in walk_down_tree() local
8331 while (level >= 0) { in walk_down_tree()
8336 if (level == 0) in walk_down_tree()
8339 if (path->slots[level] >= in walk_down_tree()
8340 btrfs_header_nritems(path->nodes[level])) in walk_down_tree()
8345 path->slots[level]++; in walk_down_tree()
8349 level = wc->level; in walk_down_tree()
8359 int level = wc->level; in walk_up_tree() local
8362 path->slots[level] = btrfs_header_nritems(path->nodes[level]); in walk_up_tree()
8363 while (level < max_level && path->nodes[level]) { in walk_up_tree()
8364 wc->level = level; in walk_up_tree()
8365 if (path->slots[level] + 1 < in walk_up_tree()
8366 btrfs_header_nritems(path->nodes[level])) { in walk_up_tree()
8367 path->slots[level]++; in walk_up_tree()
8374 if (path->locks[level]) { in walk_up_tree()
8375 btrfs_tree_unlock_rw(path->nodes[level], in walk_up_tree()
8376 path->locks[level]); in walk_up_tree()
8377 path->locks[level] = 0; in walk_up_tree()
8379 free_extent_buffer(path->nodes[level]); in walk_up_tree()
8380 path->nodes[level] = NULL; in walk_up_tree()
8381 level++; in walk_up_tree()
8412 int level; in btrfs_drop_snapshot() local
8440 level = btrfs_header_level(root->node); in btrfs_drop_snapshot()
8441 path->nodes[level] = btrfs_lock_root_node(root); in btrfs_drop_snapshot()
8442 btrfs_set_lock_blocking(path->nodes[level]); in btrfs_drop_snapshot()
8443 path->slots[level] = 0; in btrfs_drop_snapshot()
8444 path->locks[level] = BTRFS_WRITE_LOCK_BLOCKING; in btrfs_drop_snapshot()
8452 level = root_item->drop_level; in btrfs_drop_snapshot()
8453 BUG_ON(level == 0); in btrfs_drop_snapshot()
8454 path->lowest_level = level; in btrfs_drop_snapshot()
8469 level = btrfs_header_level(root->node); in btrfs_drop_snapshot()
8471 btrfs_tree_lock(path->nodes[level]); in btrfs_drop_snapshot()
8472 btrfs_set_lock_blocking(path->nodes[level]); in btrfs_drop_snapshot()
8473 path->locks[level] = BTRFS_WRITE_LOCK_BLOCKING; in btrfs_drop_snapshot()
8476 path->nodes[level]->start, in btrfs_drop_snapshot()
8477 level, 1, &wc->refs[level], in btrfs_drop_snapshot()
8478 &wc->flags[level]); in btrfs_drop_snapshot()
8483 BUG_ON(wc->refs[level] == 0); in btrfs_drop_snapshot()
8485 if (level == root_item->drop_level) in btrfs_drop_snapshot()
8488 btrfs_tree_unlock(path->nodes[level]); in btrfs_drop_snapshot()
8489 path->locks[level] = 0; in btrfs_drop_snapshot()
8490 WARN_ON(wc->refs[level] != 1); in btrfs_drop_snapshot()
8491 level--; in btrfs_drop_snapshot()
8495 wc->level = level; in btrfs_drop_snapshot()
8523 level = wc->level; in btrfs_drop_snapshot()
8524 btrfs_node_key(path->nodes[level], in btrfs_drop_snapshot()
8526 path->slots[level]); in btrfs_drop_snapshot()
8527 root_item->drop_level = level; in btrfs_drop_snapshot()
8530 BUG_ON(wc->level == 0); in btrfs_drop_snapshot()
8653 int level; in btrfs_drop_subtree() local
8677 level = btrfs_header_level(node); in btrfs_drop_subtree()
8678 path->nodes[level] = node; in btrfs_drop_subtree()
8679 path->slots[level] = 0; in btrfs_drop_subtree()
8680 path->locks[level] = BTRFS_WRITE_LOCK_BLOCKING; in btrfs_drop_subtree()
8684 wc->level = level; in btrfs_drop_subtree()