Lines Matching refs:path

104 static int find_next_key(struct btrfs_path *path, int level,
385 struct btrfs_path *path; in caching_thread() local
398 path = btrfs_alloc_path(); in caching_thread()
399 if (!path) in caching_thread()
410 path->skip_locking = 1; in caching_thread()
411 path->search_commit_root = 1; in caching_thread()
412 path->reada = 1; in caching_thread()
423 ret = btrfs_search_slot(NULL, extent_root, &key, path, 0, 0); in caching_thread()
427 leaf = path->nodes[0]; in caching_thread()
436 if (path->slots[0] < nritems) { in caching_thread()
437 btrfs_item_key_to_cpu(leaf, &key, path->slots[0]); in caching_thread()
439 ret = find_next_key(path, 0, &key); in caching_thread()
446 btrfs_release_path(path); in caching_thread()
453 ret = btrfs_next_leaf(extent_root, path); in caching_thread()
458 leaf = path->nodes[0]; in caching_thread()
469 btrfs_release_path(path); in caching_thread()
474 path->slots[0]++; in caching_thread()
498 path->slots[0]++; in caching_thread()
513 btrfs_free_path(path); in caching_thread()
719 struct btrfs_path *path; in btrfs_lookup_data_extent() local
721 path = btrfs_alloc_path(); in btrfs_lookup_data_extent()
722 if (!path) in btrfs_lookup_data_extent()
728 ret = btrfs_search_slot(NULL, root->fs_info->extent_root, &key, path, in btrfs_lookup_data_extent()
730 btrfs_free_path(path); in btrfs_lookup_data_extent()
749 struct btrfs_path *path; in btrfs_lookup_extent_info() local
767 path = btrfs_alloc_path(); in btrfs_lookup_extent_info()
768 if (!path) in btrfs_lookup_extent_info()
772 path->skip_locking = 1; in btrfs_lookup_extent_info()
773 path->search_commit_root = 1; in btrfs_lookup_extent_info()
785 &key, path, 0, 0); in btrfs_lookup_extent_info()
790 if (path->slots[0]) { in btrfs_lookup_extent_info()
791 path->slots[0]--; in btrfs_lookup_extent_info()
792 btrfs_item_key_to_cpu(path->nodes[0], &key, in btrfs_lookup_extent_info()
793 path->slots[0]); in btrfs_lookup_extent_info()
802 leaf = path->nodes[0]; in btrfs_lookup_extent_info()
803 item_size = btrfs_item_size_nr(leaf, path->slots[0]); in btrfs_lookup_extent_info()
805 ei = btrfs_item_ptr(leaf, path->slots[0], in btrfs_lookup_extent_info()
813 ei0 = btrfs_item_ptr(leaf, path->slots[0], in btrfs_lookup_extent_info()
840 btrfs_release_path(path); in btrfs_lookup_extent_info()
869 btrfs_free_path(path); in btrfs_lookup_extent_info()
982 struct btrfs_path *path, in convert_extent_item_v0() argument
996 leaf = path->nodes[0]; in convert_extent_item_v0()
997 BUG_ON(btrfs_item_size_nr(leaf, path->slots[0]) != sizeof(*ei0)); in convert_extent_item_v0()
999 btrfs_item_key_to_cpu(leaf, &key, path->slots[0]); in convert_extent_item_v0()
1000 ei0 = btrfs_item_ptr(leaf, path->slots[0], in convert_extent_item_v0()
1006 if (path->slots[0] >= btrfs_header_nritems(leaf)) { in convert_extent_item_v0()
1007 ret = btrfs_next_leaf(root, path); in convert_extent_item_v0()
1011 leaf = path->nodes[0]; in convert_extent_item_v0()
1014 path->slots[0]); in convert_extent_item_v0()
1017 path->slots[0]++; in convert_extent_item_v0()
1020 ref0 = btrfs_item_ptr(leaf, path->slots[0], in convert_extent_item_v0()
1026 btrfs_release_path(path); in convert_extent_item_v0()
1032 ret = btrfs_search_slot(trans, root, &key, path, in convert_extent_item_v0()
1038 btrfs_extend_item(root, path, new_size); in convert_extent_item_v0()
1040 leaf = path->nodes[0]; in convert_extent_item_v0()
1041 item = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_extent_item); in convert_extent_item_v0()
1098 struct btrfs_path *path, in lookup_extent_data_ref() argument
1122 ret = btrfs_search_slot(trans, root, &key, path, -1, 1); in lookup_extent_data_ref()
1133 btrfs_release_path(path); in lookup_extent_data_ref()
1134 ret = btrfs_search_slot(trans, root, &key, path, -1, 1); in lookup_extent_data_ref()
1145 leaf = path->nodes[0]; in lookup_extent_data_ref()
1148 if (path->slots[0] >= nritems) { in lookup_extent_data_ref()
1149 ret = btrfs_next_leaf(root, path); in lookup_extent_data_ref()
1155 leaf = path->nodes[0]; in lookup_extent_data_ref()
1160 btrfs_item_key_to_cpu(leaf, &key, path->slots[0]); in lookup_extent_data_ref()
1165 ref = btrfs_item_ptr(leaf, path->slots[0], in lookup_extent_data_ref()
1171 btrfs_release_path(path); in lookup_extent_data_ref()
1177 path->slots[0]++; in lookup_extent_data_ref()
1185 struct btrfs_path *path, in insert_extent_data_ref() argument
1208 ret = btrfs_insert_empty_item(trans, root, path, &key, size); in insert_extent_data_ref()
1212 leaf = path->nodes[0]; in insert_extent_data_ref()
1215 ref = btrfs_item_ptr(leaf, path->slots[0], in insert_extent_data_ref()
1227 ref = btrfs_item_ptr(leaf, path->slots[0], in insert_extent_data_ref()
1232 btrfs_release_path(path); in insert_extent_data_ref()
1234 ret = btrfs_insert_empty_item(trans, root, path, &key, in insert_extent_data_ref()
1239 leaf = path->nodes[0]; in insert_extent_data_ref()
1241 ref = btrfs_item_ptr(leaf, path->slots[0], in insert_extent_data_ref()
1258 btrfs_release_path(path); in insert_extent_data_ref()
1264 struct btrfs_path *path, in remove_extent_data_ref() argument
1274 leaf = path->nodes[0]; in remove_extent_data_ref()
1275 btrfs_item_key_to_cpu(leaf, &key, path->slots[0]); in remove_extent_data_ref()
1278 ref1 = btrfs_item_ptr(leaf, path->slots[0], in remove_extent_data_ref()
1282 ref2 = btrfs_item_ptr(leaf, path->slots[0], in remove_extent_data_ref()
1288 ref0 = btrfs_item_ptr(leaf, path->slots[0], in remove_extent_data_ref()
1300 ret = btrfs_del_item(trans, root, path); in remove_extent_data_ref()
1310 ref0 = btrfs_item_ptr(leaf, path->slots[0], in remove_extent_data_ref()
1321 struct btrfs_path *path, in extent_data_ref_count() argument
1330 leaf = path->nodes[0]; in extent_data_ref_count()
1331 btrfs_item_key_to_cpu(leaf, &key, path->slots[0]); in extent_data_ref_count()
1342 ref1 = btrfs_item_ptr(leaf, path->slots[0], in extent_data_ref_count()
1346 ref2 = btrfs_item_ptr(leaf, path->slots[0], in extent_data_ref_count()
1352 ref0 = btrfs_item_ptr(leaf, path->slots[0], in extent_data_ref_count()
1364 struct btrfs_path *path, in lookup_tree_block_ref() argument
1380 ret = btrfs_search_slot(trans, root, &key, path, -1, 1); in lookup_tree_block_ref()
1385 btrfs_release_path(path); in lookup_tree_block_ref()
1387 ret = btrfs_search_slot(trans, root, &key, path, -1, 1); in lookup_tree_block_ref()
1397 struct btrfs_path *path, in insert_tree_block_ref() argument
1413 ret = btrfs_insert_empty_item(trans, root, path, &key, 0); in insert_tree_block_ref()
1414 btrfs_release_path(path); in insert_tree_block_ref()
1435 static int find_next_key(struct btrfs_path *path, int level, in find_next_key() argument
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()
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()
1472 struct btrfs_path *path, in lookup_inline_extent_backref() argument
1501 path->keep_locks = 1; in lookup_inline_extent_backref()
1515 ret = btrfs_search_slot(trans, root, &key, path, extra_size, 1); in lookup_inline_extent_backref()
1527 if (path->slots[0]) { in lookup_inline_extent_backref()
1528 path->slots[0]--; in lookup_inline_extent_backref()
1529 btrfs_item_key_to_cpu(path->nodes[0], &key, in lookup_inline_extent_backref()
1530 path->slots[0]); in lookup_inline_extent_backref()
1540 btrfs_release_path(path); in lookup_inline_extent_backref()
1553 leaf = path->nodes[0]; in lookup_inline_extent_backref()
1554 item_size = btrfs_item_size_nr(leaf, path->slots[0]); in lookup_inline_extent_backref()
1561 ret = convert_extent_item_v0(trans, root, path, owner, in lookup_inline_extent_backref()
1567 leaf = path->nodes[0]; in lookup_inline_extent_backref()
1568 item_size = btrfs_item_size_nr(leaf, path->slots[0]); in lookup_inline_extent_backref()
1573 ei = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_extent_item); in lookup_inline_extent_backref()
1643 if (find_next_key(path, 0, &key) == 0 && in lookup_inline_extent_backref()
1653 path->keep_locks = 0; in lookup_inline_extent_backref()
1654 btrfs_unlock_up_safe(path, 1); in lookup_inline_extent_backref()
1664 struct btrfs_path *path, in setup_inline_extent_backref() argument
1679 leaf = path->nodes[0]; in setup_inline_extent_backref()
1680 ei = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_extent_item); in setup_inline_extent_backref()
1686 btrfs_extend_item(root, path, size); in setup_inline_extent_backref()
1688 ei = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_extent_item); in setup_inline_extent_backref()
1696 end = (unsigned long)ei + btrfs_item_size_nr(leaf, path->slots[0]); in setup_inline_extent_backref()
1725 struct btrfs_path *path, in lookup_extent_backref() argument
1732 ret = lookup_inline_extent_backref(trans, root, path, ref_ret, in lookup_extent_backref()
1738 btrfs_release_path(path); in lookup_extent_backref()
1742 ret = lookup_tree_block_ref(trans, root, path, bytenr, parent, in lookup_extent_backref()
1745 ret = lookup_extent_data_ref(trans, root, path, bytenr, parent, in lookup_extent_backref()
1756 struct btrfs_path *path, in update_inline_extent_backref() argument
1773 leaf = path->nodes[0]; in update_inline_extent_backref()
1774 ei = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_extent_item); in update_inline_extent_backref()
1806 item_size = btrfs_item_size_nr(leaf, path->slots[0]); in update_inline_extent_backref()
1813 btrfs_truncate_item(root, path, item_size, 1); in update_inline_extent_backref()
1821 struct btrfs_path *path, in insert_inline_extent_backref() argument
1830 ret = lookup_inline_extent_backref(trans, root, path, &iref, in insert_inline_extent_backref()
1835 update_inline_extent_backref(root, path, iref, in insert_inline_extent_backref()
1838 setup_inline_extent_backref(root, path, iref, parent, in insert_inline_extent_backref()
1848 struct btrfs_path *path, in insert_extent_backref() argument
1855 ret = insert_tree_block_ref(trans, root, path, bytenr, in insert_extent_backref()
1858 ret = insert_extent_data_ref(trans, root, path, bytenr, in insert_extent_backref()
1867 struct btrfs_path *path, in remove_extent_backref() argument
1875 update_inline_extent_backref(root, path, iref, in remove_extent_backref()
1878 ret = remove_extent_data_ref(trans, root, path, refs_to_drop, in remove_extent_backref()
1882 ret = btrfs_del_item(trans, root, path); in remove_extent_backref()
1977 struct btrfs_path *path; in __btrfs_inc_extent_ref() local
1985 path = btrfs_alloc_path(); in __btrfs_inc_extent_ref()
1986 if (!path) in __btrfs_inc_extent_ref()
1992 path->reada = 1; in __btrfs_inc_extent_ref()
1993 path->leave_spinning = 1; in __btrfs_inc_extent_ref()
1995 ret = insert_inline_extent_backref(trans, fs_info->extent_root, path, in __btrfs_inc_extent_ref()
2007 leaf = path->nodes[0]; in __btrfs_inc_extent_ref()
2008 btrfs_item_key_to_cpu(leaf, &key, path->slots[0]); in __btrfs_inc_extent_ref()
2009 item = btrfs_item_ptr(leaf, path->slots[0], in __btrfs_inc_extent_ref()
2013 btrfs_release_path(path); in __btrfs_inc_extent_ref()
2025 leaf = path->nodes[0]; in __btrfs_inc_extent_ref()
2026 btrfs_item_key_to_cpu(leaf, &key, path->slots[0]); in __btrfs_inc_extent_ref()
2027 item = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_extent_item); in __btrfs_inc_extent_ref()
2036 btrfs_release_path(path); in __btrfs_inc_extent_ref()
2045 path->reada = 1; in __btrfs_inc_extent_ref()
2046 path->leave_spinning = 1; in __btrfs_inc_extent_ref()
2049 path, bytenr, parent, root_objectid, in __btrfs_inc_extent_ref()
2054 btrfs_free_path(path); in __btrfs_inc_extent_ref()
2131 struct btrfs_path *path; in run_delayed_extent_op() local
2145 path = btrfs_alloc_path(); in run_delayed_extent_op()
2146 if (!path) in run_delayed_extent_op()
2160 path->reada = 1; in run_delayed_extent_op()
2161 path->leave_spinning = 1; in run_delayed_extent_op()
2163 path, 0, 1); in run_delayed_extent_op()
2170 if (path->slots[0] > 0) { in run_delayed_extent_op()
2171 path->slots[0]--; in run_delayed_extent_op()
2172 btrfs_item_key_to_cpu(path->nodes[0], &key, in run_delayed_extent_op()
2173 path->slots[0]); in run_delayed_extent_op()
2180 btrfs_release_path(path); in run_delayed_extent_op()
2194 leaf = path->nodes[0]; in run_delayed_extent_op()
2195 item_size = btrfs_item_size_nr(leaf, path->slots[0]); in run_delayed_extent_op()
2199 path, (u64)-1, 0); in run_delayed_extent_op()
2204 leaf = path->nodes[0]; in run_delayed_extent_op()
2205 item_size = btrfs_item_size_nr(leaf, path->slots[0]); in run_delayed_extent_op()
2209 ei = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_extent_item); in run_delayed_extent_op()
2214 btrfs_free_path(path); in run_delayed_extent_op()
2901 struct btrfs_path *path, in check_delayed_ref() argument
2923 btrfs_release_path(path); in check_delayed_ref()
2968 struct btrfs_path *path, in check_committed_ref() argument
2984 ret = btrfs_search_slot(NULL, extent_root, &key, path, 0, 0); in check_committed_ref()
2990 if (path->slots[0] == 0) in check_committed_ref()
2993 path->slots[0]--; in check_committed_ref()
2994 leaf = path->nodes[0]; in check_committed_ref()
2995 btrfs_item_key_to_cpu(leaf, &key, path->slots[0]); in check_committed_ref()
3001 item_size = btrfs_item_size_nr(leaf, path->slots[0]); in check_committed_ref()
3008 ei = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_extent_item); in check_committed_ref()
3041 struct btrfs_path *path; in btrfs_cross_ref_exist() local
3045 path = btrfs_alloc_path(); in btrfs_cross_ref_exist()
3046 if (!path) in btrfs_cross_ref_exist()
3050 ret = check_committed_ref(trans, root, path, objectid, in btrfs_cross_ref_exist()
3055 ret2 = check_delayed_ref(trans, root, path, objectid, in btrfs_cross_ref_exist()
3067 btrfs_free_path(path); in btrfs_cross_ref_exist()
3162 struct btrfs_path *path, in write_one_cache_group() argument
3170 ret = btrfs_search_slot(trans, extent_root, &cache->key, path, 0, 1); in write_one_cache_group()
3177 leaf = path->nodes[0]; in write_one_cache_group()
3178 bi = btrfs_item_ptr_offset(leaf, path->slots[0]); in write_one_cache_group()
3182 btrfs_release_path(path); in write_one_cache_group()
3219 struct btrfs_path *path) in cache_save_setup() argument
3243 inode = lookup_free_space_inode(root, block_group, path); in cache_save_setup()
3246 btrfs_release_path(path); in cache_save_setup()
3257 ret = create_free_space_inode(root, trans, block_group, path); in cache_save_setup()
3345 btrfs_release_path(path); in cache_save_setup()
3361 struct btrfs_path *path; in btrfs_setup_space_cache() local
3367 path = btrfs_alloc_path(); in btrfs_setup_space_cache()
3368 if (!path) in btrfs_setup_space_cache()
3375 cache_save_setup(cache, trans, path); in btrfs_setup_space_cache()
3378 btrfs_free_path(path); in btrfs_setup_space_cache()
3401 struct btrfs_path *path = NULL; in btrfs_start_dirty_block_groups() local
3422 if (!path) { in btrfs_start_dirty_block_groups()
3423 path = btrfs_alloc_path(); in btrfs_start_dirty_block_groups()
3424 if (!path) in btrfs_start_dirty_block_groups()
3446 &cache->io_ctl, path, in btrfs_start_dirty_block_groups()
3466 cache_save_setup(cache, trans, path); in btrfs_start_dirty_block_groups()
3470 ret = btrfs_write_out_cache(root, trans, cache, path); in btrfs_start_dirty_block_groups()
3489 ret = write_one_cache_group(trans, root, path, cache); in btrfs_start_dirty_block_groups()
3550 btrfs_free_path(path); in btrfs_start_dirty_block_groups()
3561 struct btrfs_path *path; in btrfs_write_dirty_block_groups() local
3565 path = btrfs_alloc_path(); in btrfs_write_dirty_block_groups()
3566 if (!path) in btrfs_write_dirty_block_groups()
3588 &cache->io_ctl, path, in btrfs_write_dirty_block_groups()
3600 cache_save_setup(cache, trans, path); in btrfs_write_dirty_block_groups()
3607 ret = btrfs_write_out_cache(root, trans, cache, path); in btrfs_write_dirty_block_groups()
3621 ret = write_one_cache_group(trans, root, path, cache); in btrfs_write_dirty_block_groups()
3636 &cache->io_ctl, path, cache->key.objectid); in btrfs_write_dirty_block_groups()
3640 btrfs_free_path(path); in btrfs_write_dirty_block_groups()
6108 struct btrfs_path *path; in __btrfs_free_extent() local
6129 path = btrfs_alloc_path(); in __btrfs_free_extent()
6130 if (!path) in __btrfs_free_extent()
6133 path->reada = 1; in __btrfs_free_extent()
6134 path->leave_spinning = 1; in __btrfs_free_extent()
6142 ret = lookup_extent_backref(trans, extent_root, path, &iref, in __btrfs_free_extent()
6147 extent_slot = path->slots[0]; in __btrfs_free_extent()
6149 btrfs_item_key_to_cpu(path->nodes[0], &key, in __btrfs_free_extent()
6163 if (path->slots[0] - extent_slot > 5) in __btrfs_free_extent()
6168 item_size = btrfs_item_size_nr(path->nodes[0], extent_slot); in __btrfs_free_extent()
6174 ret = remove_extent_backref(trans, extent_root, path, in __btrfs_free_extent()
6181 btrfs_release_path(path); in __btrfs_free_extent()
6182 path->leave_spinning = 1; in __btrfs_free_extent()
6194 &key, path, -1, 1); in __btrfs_free_extent()
6195 if (ret > 0 && skinny_metadata && path->slots[0]) { in __btrfs_free_extent()
6200 path->slots[0]--; in __btrfs_free_extent()
6201 btrfs_item_key_to_cpu(path->nodes[0], &key, in __btrfs_free_extent()
6202 path->slots[0]); in __btrfs_free_extent()
6214 btrfs_release_path(path); in __btrfs_free_extent()
6216 &key, path, -1, 1); in __btrfs_free_extent()
6224 path->nodes[0]); in __btrfs_free_extent()
6230 extent_slot = path->slots[0]; in __btrfs_free_extent()
6233 btrfs_print_leaf(extent_root, path->nodes[0]); in __btrfs_free_extent()
6245 leaf = path->nodes[0]; in __btrfs_free_extent()
6249 BUG_ON(found_extent || extent_slot != path->slots[0]); in __btrfs_free_extent()
6250 ret = convert_extent_item_v0(trans, extent_root, path, in __btrfs_free_extent()
6257 btrfs_release_path(path); in __btrfs_free_extent()
6258 path->leave_spinning = 1; in __btrfs_free_extent()
6264 ret = btrfs_search_slot(trans, extent_root, &key, path, in __btrfs_free_extent()
6269 btrfs_print_leaf(extent_root, path->nodes[0]); in __btrfs_free_extent()
6276 extent_slot = path->slots[0]; in __btrfs_free_extent()
6277 leaf = path->nodes[0]; in __btrfs_free_extent()
6317 ret = remove_extent_backref(trans, extent_root, path, in __btrfs_free_extent()
6330 extent_data_ref_count(root, path, iref)); in __btrfs_free_extent()
6332 BUG_ON(path->slots[0] != extent_slot); in __btrfs_free_extent()
6334 BUG_ON(path->slots[0] != extent_slot + 1); in __btrfs_free_extent()
6335 path->slots[0] = extent_slot; in __btrfs_free_extent()
6341 ret = btrfs_del_items(trans, extent_root, path, path->slots[0], in __btrfs_free_extent()
6347 btrfs_release_path(path); in __btrfs_free_extent()
6363 btrfs_release_path(path); in __btrfs_free_extent()
6378 btrfs_free_path(path); in __btrfs_free_extent()
7261 struct btrfs_path *path; in alloc_reserved_file_extent() local
7273 path = btrfs_alloc_path(); in alloc_reserved_file_extent()
7274 if (!path) in alloc_reserved_file_extent()
7277 path->leave_spinning = 1; in alloc_reserved_file_extent()
7278 ret = btrfs_insert_empty_item(trans, fs_info->extent_root, path, in alloc_reserved_file_extent()
7281 btrfs_free_path(path); in alloc_reserved_file_extent()
7285 leaf = path->nodes[0]; in alloc_reserved_file_extent()
7286 extent_item = btrfs_item_ptr(leaf, path->slots[0], in alloc_reserved_file_extent()
7309 btrfs_mark_buffer_dirty(path->nodes[0]); in alloc_reserved_file_extent()
7310 btrfs_free_path(path); in alloc_reserved_file_extent()
7341 struct btrfs_path *path; in alloc_reserved_tree_block() local
7351 path = btrfs_alloc_path(); in alloc_reserved_tree_block()
7352 if (!path) { in alloc_reserved_tree_block()
7358 path->leave_spinning = 1; in alloc_reserved_tree_block()
7359 ret = btrfs_insert_empty_item(trans, fs_info->extent_root, path, in alloc_reserved_tree_block()
7362 btrfs_free_path(path); in alloc_reserved_tree_block()
7368 leaf = path->nodes[0]; in alloc_reserved_tree_block()
7369 extent_item = btrfs_item_ptr(leaf, path->slots[0], in alloc_reserved_tree_block()
7398 btrfs_free_path(path); in alloc_reserved_tree_block()
7686 struct btrfs_path *path) in reada_walk_down() argument
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()
7818 struct btrfs_path *path, int root_level) in adjust_slots_upwards() argument
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()
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()
7858 eb = path->nodes[root_level]; in adjust_slots_upwards()
7859 if (path->slots[root_level] >= btrfs_header_nritems(eb)) in adjust_slots_upwards()
7877 struct btrfs_path *path = NULL; in account_shared_subtree() local
7896 path = btrfs_alloc_path(); in account_shared_subtree()
7897 if (!path) in account_shared_subtree()
7910 path->nodes[root_level] = root_eb; in account_shared_subtree()
7911 path->slots[root_level] = 0; in account_shared_subtree()
7912 path->locks[root_level] = 0; /* so release_path doesn't try to unlock */ 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()
7953 ret = account_leaf_items(trans, root, path->nodes[level]); in account_shared_subtree()
7958 ret = adjust_slots_upwards(root, path, root_level); in account_shared_subtree()
7971 btrfs_free_path(path); in account_shared_subtree()
7986 struct btrfs_path *path, in walk_down_proc() argument
7990 struct extent_buffer *eb = path->nodes[level]; in walk_down_proc()
8005 BUG_ON(!path->locks[level]); 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()
8029 BUG_ON(!path->locks[level]); 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()
8067 struct btrfs_path *path, in do_walk_down() argument
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()
8134 btrfs_node_key_to_cpu(path->nodes[level], &key, in do_walk_down()
8135 path->slots[level]); in do_walk_down()
8158 reada_walk_down(trans, root, wc, path); 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()
8182 parent = path->nodes[level]->start; in do_walk_down()
8185 btrfs_header_owner(path->nodes[level])); in do_walk_down()
8223 struct btrfs_path *path, in walk_up_proc() argument
8228 struct extent_buffer *eb = path->nodes[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()
8253 path->locks[level] = BTRFS_WRITE_LOCK_BLOCKING; 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()
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()
8292 if (!path->locks[level] && in walk_up_proc()
8296 path->locks[level] = BTRFS_WRITE_LOCK_BLOCKING; 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()
8324 struct btrfs_path *path, in walk_down_tree() argument
8332 ret = walk_down_proc(trans, root, path, wc, lookup_info); in walk_down_tree()
8339 if (path->slots[level] >= in walk_down_tree()
8340 btrfs_header_nritems(path->nodes[level])) in walk_down_tree()
8343 ret = do_walk_down(trans, root, path, wc, &lookup_info); in walk_down_tree()
8345 path->slots[level]++; in walk_down_tree()
8356 struct btrfs_path *path, in walk_up_tree() argument
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()
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()
8370 ret = walk_up_proc(trans, root, path, wc); 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()
8404 struct btrfs_path *path; in btrfs_drop_snapshot() local
8417 path = btrfs_alloc_path(); in btrfs_drop_snapshot()
8418 if (!path) { in btrfs_drop_snapshot()
8425 btrfs_free_path(path); 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()
8454 path->lowest_level = level; in btrfs_drop_snapshot()
8455 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in btrfs_drop_snapshot()
8456 path->lowest_level = 0; in btrfs_drop_snapshot()
8467 btrfs_unlock_up_safe(path, 0); 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()
8488 btrfs_tree_unlock(path->nodes[level]); in btrfs_drop_snapshot()
8489 path->locks[level] = 0; in btrfs_drop_snapshot()
8505 ret = walk_down_tree(trans, root, path, wc); in btrfs_drop_snapshot()
8511 ret = walk_up_tree(trans, root, path, wc, BTRFS_MAX_LEVEL); in btrfs_drop_snapshot()
8524 btrfs_node_key(path->nodes[level], in btrfs_drop_snapshot()
8526 path->slots[level]); in btrfs_drop_snapshot()
8576 btrfs_release_path(path); in btrfs_drop_snapshot()
8587 ret = btrfs_find_root(tree_root, &root->root_key, path, in btrfs_drop_snapshot()
8624 btrfs_free_path(path); in btrfs_drop_snapshot()
8651 struct btrfs_path *path; in btrfs_drop_subtree() local
8660 path = btrfs_alloc_path(); in btrfs_drop_subtree()
8661 if (!path) in btrfs_drop_subtree()
8666 btrfs_free_path(path); in btrfs_drop_subtree()
8673 path->nodes[parent_level] = parent; in btrfs_drop_subtree()
8674 path->slots[parent_level] = btrfs_header_nritems(parent); 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()
8693 wret = walk_down_tree(trans, root, path, wc); in btrfs_drop_subtree()
8699 wret = walk_up_tree(trans, root, path, wc, parent_level); in btrfs_drop_subtree()
8707 btrfs_free_path(path); in btrfs_drop_subtree()
9082 struct btrfs_path *path, struct btrfs_key *key) in find_first_block_group() argument
9089 ret = btrfs_search_slot(NULL, root, key, path, 0, 0); in find_first_block_group()
9094 slot = path->slots[0]; in find_first_block_group()
9095 leaf = path->nodes[0]; in find_first_block_group()
9097 ret = btrfs_next_leaf(root, path); in find_first_block_group()
9111 path->slots[0]++; in find_first_block_group()
9324 struct btrfs_path *path; in btrfs_read_block_groups() local
9339 path = btrfs_alloc_path(); in btrfs_read_block_groups()
9340 if (!path) in btrfs_read_block_groups()
9342 path->reada = 1; in btrfs_read_block_groups()
9352 ret = find_first_block_group(root, path, &key); in btrfs_read_block_groups()
9358 leaf = path->nodes[0]; in btrfs_read_block_groups()
9359 btrfs_item_key_to_cpu(leaf, &found_key, path->slots[0]); in btrfs_read_block_groups()
9384 btrfs_item_ptr_offset(leaf, path->slots[0]), in btrfs_read_block_groups()
9389 btrfs_release_path(path); in btrfs_read_block_groups()
9496 btrfs_free_path(path); in btrfs_read_block_groups()
9624 struct btrfs_path *path; in btrfs_remove_block_group() local
9673 path = btrfs_alloc_path(); in btrfs_remove_block_group()
9674 if (!path) { in btrfs_remove_block_group()
9683 inode = lookup_free_space_inode(tree_root, block_group, path); in btrfs_remove_block_group()
9698 &block_group->io_ctl, path, in btrfs_remove_block_group()
9736 ret = btrfs_search_slot(trans, tree_root, &key, path, -1, 1); in btrfs_remove_block_group()
9740 btrfs_release_path(path); in btrfs_remove_block_group()
9742 ret = btrfs_del_item(trans, tree_root, path); in btrfs_remove_block_group()
9745 btrfs_release_path(path); in btrfs_remove_block_group()
9898 ret = btrfs_search_slot(trans, root, &key, path, -1, 1); in btrfs_remove_block_group()
9904 ret = btrfs_del_item(trans, root, path); in btrfs_remove_block_group()
9906 btrfs_free_path(path); in btrfs_remove_block_group()