Lines Matching defs:path
200 * walk down backref nodes to find start of next reference path
463 struct btrfs_path *path;
473 path = btrfs_alloc_path();
474 if (!path) {
490 ret = btrfs_backref_add_tree_node(cache, path, iter, node_key,
519 btrfs_free_path(path);
998 struct btrfs_path *path;
1003 path = btrfs_alloc_path();
1004 if (!path)
1008 ret = btrfs_lookup_file_extent(NULL, root, path,
1017 leaf = path->nodes[0];
1018 fi = btrfs_item_ptr(leaf, path->slots[0],
1034 btrfs_free_path(path);
1168 struct btrfs_path *path, int level)
1173 btrfs_node_key(path->nodes[level], &key2, path->slots[level]);
1189 struct btrfs_path *path, struct btrfs_key *next_key,
1213 slot = path->slots[lowest_level];
1214 btrfs_node_key_to_cpu(path->nodes[lowest_level], &key, slot);
1261 eb = path->nodes[level];
1263 path->slots[level]);
1265 path->slots[level]);
1277 memcmp_node_keys(parent, slot, path, level)) {
1316 btrfs_node_key_to_cpu(path->nodes[level], &key,
1317 path->slots[level]);
1318 btrfs_release_path(path);
1320 path->lowest_level = level;
1321 ret = btrfs_search_slot(trans, src, &key, path, 0, 1);
1322 path->lowest_level = 0;
1341 path->nodes[level], path->slots[level],
1352 btrfs_set_node_blockptr(path->nodes[level],
1353 path->slots[level], old_bytenr);
1354 btrfs_set_node_ptr_generation(path->nodes[level],
1355 path->slots[level], old_ptr_gen);
1356 btrfs_mark_buffer_dirty(path->nodes[level]);
1359 blocksize, path->nodes[level]->start);
1372 blocksize, path->nodes[level]->start);
1385 btrfs_unlock_up_safe(path, 0);
1399 int walk_up_reloc_tree(struct btrfs_root *root, struct btrfs_path *path,
1410 free_extent_buffer(path->nodes[i]);
1411 path->nodes[i] = NULL;
1414 for (i = *level; i < BTRFS_MAX_LEVEL && path->nodes[i]; i++) {
1415 eb = path->nodes[i];
1417 while (path->slots[i] + 1 < nritems) {
1418 path->slots[i]++;
1419 if (btrfs_node_ptr_generation(eb, path->slots[i]) <=
1426 free_extent_buffer(path->nodes[i]);
1427 path->nodes[i] = NULL;
1436 int walk_down_reloc_tree(struct btrfs_root *root, struct btrfs_path *path,
1452 eb = path->nodes[i];
1454 while (path->slots[i] < nritems) {
1455 ptr_gen = btrfs_node_ptr_generation(eb, path->slots[i]);
1458 path->slots[i]++;
1460 if (path->slots[i] >= nritems) {
1471 bytenr = btrfs_node_blockptr(eb, path->slots[i]);
1472 btrfs_node_key_to_cpu(eb, &first_key, path->slots[i]);
1482 path->nodes[i - 1] = eb;
1483 path->slots[i - 1] = 0;
1561 static int find_next_key(struct btrfs_path *path, int level,
1566 if (!path->nodes[level])
1568 if (path->slots[level] + 1 <
1569 btrfs_header_nritems(path->nodes[level])) {
1570 btrfs_node_key_to_cpu(path->nodes[level], key,
1571 path->slots[level] + 1);
1667 struct btrfs_path *path;
1677 path = btrfs_alloc_path();
1678 if (!path)
1680 path->reada = READA_FORWARD;
1688 path->nodes[level] = reloc_root->node;
1689 path->slots[level] = 0;
1695 path->lowest_level = level;
1696 ret = btrfs_search_slot(NULL, reloc_root, &key, path, 0, 0);
1697 path->lowest_level = 0;
1699 btrfs_free_path(path);
1703 btrfs_node_key_to_cpu(path->nodes[level], &next_key,
1704 path->slots[level]);
1707 btrfs_unlock_up_safe(path, 0);
1752 ret = walk_down_reloc_tree(reloc_root, path, &level);
1760 if (!find_next_key(path, level, &key) &&
1764 ret = replace_path(trans, rc, root, reloc_root, path,
1774 btrfs_node_key_to_cpu(path->nodes[level], &key,
1775 path->slots[level]);
1779 ret = walk_up_reloc_tree(reloc_root, path, &level);
1788 btrfs_node_key(path->nodes[level], &root_item->drop_progress,
1789 path->slots[level]);
1813 btrfs_free_path(path);
2083 /* setup backref node path for btrfs_reloc_cow_block */
2085 rc->backref_cache.path[next->level] = next;
2224 struct btrfs_path *path, int lowest)
2241 path->lowest_level = node->level + 1;
2242 rc->backref_cache.path[node->level] = node;
2269 ret = btrfs_search_slot(trans, root, key, path, 0, 1);
2276 btrfs_release_path(path);
2281 upper->eb = path->nodes[upper->level];
2282 path->nodes[upper->level] = NULL;
2284 BUG_ON(upper->eb != path->nodes[upper->level]);
2288 path->locks[upper->level] = 0;
2290 slot = path->slots[upper->level];
2291 btrfs_release_path(path);
2376 path->lowest_level = 0;
2384 struct btrfs_path *path)
2389 return do_relocation(trans, rc, node, &key, path, 0);
2394 struct btrfs_path *path, int err)
2410 ret = link_to_upper(trans, rc, node, path);
2491 struct btrfs_path *path)
2526 path->lowest_level = node->level;
2527 ret = btrfs_search_slot(trans, root, key, path, 0, 1);
2528 btrfs_release_path(path);
2535 ret = do_relocation(trans, rc, node, key, path, 1);
2552 struct btrfs_path *path;
2558 path = btrfs_alloc_path();
2559 if (!path) {
2589 path);
2596 err = finish_pending_nodes(trans, rc, path, err);
2599 btrfs_free_path(path);
2863 struct btrfs_path *path,
2875 eb = path->nodes[0];
2876 item_size = btrfs_item_size_nr(eb, path->slots[0]);
2880 ei = btrfs_item_ptr(eb, path->slots[0],
2897 btrfs_release_path(path);
2927 struct btrfs_path *path;
2938 path = btrfs_alloc_path();
2939 if (!path)
2951 path->search_commit_root = 1;
2952 path->skip_locking = 1;
2953 ret = btrfs_search_slot(NULL, rc->extent_root, &key, path, 0, 0);
2958 if (path->slots[0]) {
2959 path->slots[0]--;
2960 btrfs_item_key_to_cpu(path->nodes[0], &key,
2961 path->slots[0]);
2971 btrfs_release_path(path);
2977 btrfs_print_leaf(path->nodes[0]);
2986 ret = add_tree_block(rc, &key, path, blocks);
2988 btrfs_free_path(path);
3077 struct btrfs_path *path,
3087 btrfs_release_path(path);
3121 int find_next_extent(struct reloc_control *rc, struct btrfs_path *path,
3142 path->search_commit_root = 1;
3143 path->skip_locking = 1;
3144 ret = btrfs_search_slot(NULL, rc->extent_root, &key, path,
3149 leaf = path->nodes[0];
3150 if (path->slots[0] >= btrfs_header_nritems(leaf)) {
3151 ret = btrfs_next_leaf(rc->extent_root, path);
3154 leaf = path->nodes[0];
3157 btrfs_item_key_to_cpu(leaf, &key, path->slots[0]);
3165 path->slots[0]++;
3171 path->slots[0]++;
3178 path->slots[0]++;
3187 btrfs_release_path(path);
3199 btrfs_release_path(path);
3287 struct btrfs_path *path;
3295 path = btrfs_alloc_path();
3296 if (!path)
3298 path->reada = READA_FORWARD;
3329 ret = find_next_extent(rc, path, &key);
3337 ei = btrfs_item_ptr(path->nodes[0], path->slots[0],
3339 item_size = btrfs_item_size_nr(path->nodes[0], path->slots[0]);
3341 flags = btrfs_extent_flags(path->nodes[0], ei);
3354 ret = add_tree_block(rc, &key, path, &blocks);
3357 ret = add_data_references(rc, &key, path, &blocks);
3359 btrfs_release_path(path);
3407 btrfs_release_path(path);
3458 btrfs_free_path(path);
3465 struct btrfs_path *path;
3470 path = btrfs_alloc_path();
3471 if (!path)
3474 ret = btrfs_insert_empty_inode(trans, root, path, objectid);
3478 leaf = path->nodes[0];
3479 item = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_inode_item);
3488 btrfs_free_path(path);
3599 struct btrfs_path *path;
3629 path = btrfs_alloc_path();
3630 if (!path) {
3635 inode = lookup_free_space_inode(rc->block_group, path);
3636 btrfs_free_path(path);
3750 struct btrfs_path *path;
3757 path = btrfs_alloc_path();
3758 if (!path)
3760 path->reada = READA_BACK;
3768 path, 0, 0);
3774 if (path->slots[0] == 0)
3776 path->slots[0]--;
3778 leaf = path->nodes[0];
3779 btrfs_item_key_to_cpu(leaf, &key, path->slots[0]);
3780 btrfs_release_path(path);
3819 btrfs_release_path(path);
3892 btrfs_free_path(path);
3982 node = rc->backref_cache.path[level];