Lines Matching refs:root

41 #include "root-tree.h"
75 struct btrfs_root *root = btrfs_extent_root(fs_info, start);
87 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0);
299 * - Objectid of the subvolume root
436 struct btrfs_root *root = btrfs_extent_root(trans->fs_info, bytenr);
456 ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
472 ret = btrfs_next_leaf(root, path);
512 struct btrfs_root *root = btrfs_extent_root(trans->fs_info, bytenr);
531 ret = btrfs_insert_empty_item(trans, root, path, &key, size);
557 ret = btrfs_insert_empty_item(trans, root, path, &key,
586 struct btrfs_root *root,
620 ret = btrfs_del_item(trans, root, path);
677 struct btrfs_root *root = btrfs_extent_root(trans->fs_info, bytenr);
690 ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
701 struct btrfs_root *root = btrfs_extent_root(trans->fs_info, bytenr);
714 ret = btrfs_insert_empty_item(trans, root, path, &key, 0);
779 struct btrfs_root *root = btrfs_extent_root(fs_info, bytenr);
818 ret = btrfs_search_slot(trans, root, &key, path, extra_size, 1);
895 "overrun extent record at slot %d while looking for inline extent for root %llu owner %llu offset %llu parent %llu",
948 BTRFS_MAX_EXTENT_ITEM_SIZE(root)) {
1223 struct btrfs_root *root,
1235 ret = remove_extent_data_ref(trans, root, path, refs_to_drop);
1237 ret = btrfs_del_item(trans, root, path);
1461 * @root_objectid: The id of the root where this modification has originated,
1558 ref_root = ref->root;
1605 struct btrfs_root *root;
1635 root = btrfs_extent_root(fs_info, key.objectid);
1637 ret = btrfs_search_slot(trans, root, &key, path, 0, 1);
1707 ref_root = ref->root;
2094 static u64 find_middle(struct rb_root *root)
2096 struct rb_node *n = root->rb_node;
2102 n = rb_first(root);
2107 n = rb_last(root);
2112 n = root->rb_node;
2164 delayed_refs->run_delayed_start = find_middle(&delayed_refs->root);
2220 static noinline int check_delayed_ref(struct btrfs_root *root,
2232 spin_lock(&root->fs_info->trans_lock);
2233 cur_trans = root->fs_info->running_transaction;
2236 spin_unlock(&root->fs_info->trans_lock);
2293 if (data_ref->root != root->root_key.objectid ||
2306 static noinline int check_committed_ref(struct btrfs_root *root,
2311 struct btrfs_fs_info *fs_info = root->fs_info;
2357 btrfs_root_last_snapshot(&root->root_item)))
2371 root->root_key.objectid ||
2381 int btrfs_cross_ref_exist(struct btrfs_root *root, u64 objectid, u64 offset,
2387 ret = check_committed_ref(root, path, objectid,
2392 ret = check_delayed_ref(root, path, objectid, offset, bytenr);
2397 if (btrfs_is_data_reloc_root(root))
2403 struct btrfs_root *root,
2407 struct btrfs_fs_info *fs_info = root->fs_info;
2429 if (!test_bit(BTRFS_ROOT_SHAREABLE, &root->state) && level == 0)
2460 key.offset, root->root_key.objectid,
2474 root->root_key.objectid, for_reloc);
2488 int btrfs_inc_ref(struct btrfs_trans_handle *trans, struct btrfs_root *root,
2491 return __btrfs_mod_ref(trans, root, buf, full_backref, 1);
2494 int btrfs_dec_ref(struct btrfs_trans_handle *trans, struct btrfs_root *root,
2497 return __btrfs_mod_ref(trans, root, buf, full_backref, 0);
2500 static u64 get_alloc_profile_by_root(struct btrfs_root *root, int data)
2502 struct btrfs_fs_info *fs_info = root->fs_info;
2508 else if (root == fs_info->chunk_root)
2903 * extent data backref root FS_TREE objectid 258 offset 0 count 1
2904 * extent data backref root FS_TREE objectid 257 offset 0 count 1
2919 * extent data backref root FS_TREE objectid 258 offset 0 count 1
2929 * extent data backref root FS_TREE objectid 866 offset 0 count 1
3094 "unable to find ref byte nr %llu parent %llu root %llu owner %llu offset %llu slot %d",
3325 * existed in a completely different root. For example if it
3326 * was part of root A, then was reallocated to root B, and we
3327 * are doing a btrfs_old_search_slot(root b), we could replay
3328 * operations that happened when the block was part of root A,
3332 * node or root points to this extent buffer, so if after this
3987 struct btrfs_root *root = fs_info->chunk_root;
4032 trans = btrfs_join_transaction(root);
4219 static noinline int find_free_extent(struct btrfs_root *root,
4223 struct btrfs_fs_info *fs_info = root->fs_info;
4256 trace_find_free_extent(root, ffe_ctl);
4307 trace_find_free_extent_search_loop(root, ffe_ctl);
4359 trace_find_free_extent_have_block_group(root, ffe_ctl, block_group);
4477 * @root - The root that will contain this extent
4518 int btrfs_reserve_extent(struct btrfs_root *root, u64 ram_bytes,
4523 struct btrfs_fs_info *fs_info = root->fs_info;
4528 bool for_treelog = (root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID);
4529 bool for_data_reloc = (btrfs_is_data_reloc_root(root) && is_data);
4531 flags = get_alloc_profile_by_root(root, is_data);
4545 ret = find_free_extent(root, ins, &ffe_ctl);
4763 btrfs_set_extent_inline_ref_offset(leaf, iref, ref->root);
4773 struct btrfs_root *root, u64 owner,
4779 BUG_ON(root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID);
4783 btrfs_init_data_ref(&generic_ref, root->root_key.objectid, owner,
4785 btrfs_ref_tree_mod(root->fs_info, &generic_ref);
4836 btrfs_init_new_buffer(struct btrfs_trans_handle *trans, struct btrfs_root *root,
4840 struct btrfs_fs_info *fs_info = root->fs_info;
4866 * hold the lock on the original fs root and then search for the reloc
4867 * root. At that point we need to make sure any reloc root buffers are
4872 !test_bit(BTRFS_ROOT_RESET_LOCKDEP_CLASS, &root->state))
4900 if (root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID) {
4901 buf->log_index = root->log_transid % 2;
4907 set_extent_bit(&root->dirty_log_pages, buf->start,
4911 set_extent_bit(&root->dirty_log_pages, buf->start,
4928 struct btrfs_root *root,
4935 struct btrfs_fs_info *fs_info = root->fs_info;
4948 buf = btrfs_init_new_buffer(trans, root, root->alloc_bytenr,
4951 root->alloc_bytenr += blocksize;
4956 block_rsv = btrfs_use_block_rsv(trans, root, blocksize);
4960 ret = btrfs_reserve_extent(root, blocksize, blocksize, blocksize,
4965 buf = btrfs_init_new_buffer(trans, root, ins.objectid, level,
4997 root->root_key.objectid, false);
5037 struct btrfs_root *root,
5041 struct btrfs_fs_info *fs_info = root->fs_info;
5077 generation <= root->root_key.offset)
5097 generation <= root->root_key.offset)
5125 struct btrfs_root *root,
5129 struct btrfs_fs_info *fs_info = root->fs_info;
5136 btrfs_header_owner(eb) != root->root_key.objectid)
5171 ret = btrfs_inc_ref(trans, root, eb, 1);
5173 ret = btrfs_dec_ref(trans, root, eb, 0);
5192 * This is used to verify a ref exists for this root to deal with a bug where we
5196 struct btrfs_root *root, u64 bytenr, u64 parent,
5208 root->fs_info->nodesize, parent,
5209 root->root_key.objectid, level, 0);
5232 struct btrfs_root *root,
5236 struct btrfs_fs_info *fs_info = root->fs_info;
5257 generation <= root->root_key.offset) {
5266 check.owner_root = root->root_key.objectid;
5274 root->root_key.objectid, level - 1);
5302 generation <= root->root_key.offset)
5329 reada_walk_down(trans, root, wc, path);
5343 btrfs_err(root->fs_info, "mismatched level");
5361 ASSERT(root->root_key.objectid ==
5363 if (root->root_key.objectid !=
5365 btrfs_err(root->fs_info,
5380 ret = check_ref_exists(trans, root, bytenr, parent,
5395 if (root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID &&
5417 btrfs_init_tree_ref(&ref, level - 1, root->root_key.objectid,
5447 struct btrfs_root *root,
5451 struct btrfs_fs_info *fs_info = root->fs_info;
5504 ret = btrfs_dec_ref(trans, root, eb, 1);
5506 ret = btrfs_dec_ref(trans, root, eb, 0);
5508 if (is_fstree(root->root_key.objectid)) {
5525 if (eb == root->node) {
5528 else if (root->root_key.objectid != btrfs_header_owner(eb))
5533 else if (root->root_key.objectid !=
5538 btrfs_free_tree_block(trans, btrfs_root_id(root), eb, parent,
5547 btrfs_header_owner(eb), root->root_key.objectid);
5552 struct btrfs_root *root,
5561 ret = walk_down_proc(trans, root, path, wc, lookup_info);
5572 ret = do_walk_down(trans, root, path, wc, &lookup_info);
5584 struct btrfs_root *root,
5599 ret = walk_up_proc(trans, root, path, wc);
5631 int btrfs_drop_snapshot(struct btrfs_root *root, int update_ref, int for_reloc)
5633 const bool is_reloc_root = (root->root_key.objectid ==
5635 struct btrfs_fs_info *fs_info = root->fs_info;
5639 struct btrfs_root_item *root_item = &root->root_item;
5648 btrfs_debug(fs_info, "Drop subvolume %llu", root->root_key.objectid);
5683 * dropped as we unlock the root node and parent nodes as we walk down
5688 set_bit(BTRFS_ROOT_DELETING, &root->state);
5689 unfinished_drop = test_bit(BTRFS_ROOT_UNFINISHED_DROP, &root->state);
5692 level = btrfs_header_level(root->node);
5693 path->nodes[level] = btrfs_lock_root_node(root);
5706 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0);
5720 level = btrfs_header_level(root->node);
5745 wc->restarted = test_bit(BTRFS_ROOT_DEAD_TREE, &root->state);
5755 ret = walk_down_tree(trans, root, path, wc);
5762 ret = walk_up_tree(trans, root, path, wc, BTRFS_MAX_LEVEL);
5788 &root->root_key,
5826 ret = btrfs_del_root(trans, &root->root_key);
5834 ret = btrfs_find_root(tree_root, &root->root_key, path,
5847 root->root_key.objectid);
5856 btrfs_qgroup_convert_reserved_meta(root, INT_MAX);
5857 btrfs_qgroup_free_meta_all_pertrans(root);
5859 if (test_bit(BTRFS_ROOT_IN_RADIX, &root->state))
5860 btrfs_add_dropped_root(trans, root);
5862 btrfs_put_root(root);
5874 * We were an unfinished drop root, check to see if there are any
5882 * need to make sure to add it back to the dead root list so that we
5888 btrfs_add_dead_root(root);
5899 struct btrfs_root *root,
5903 struct btrfs_fs_info *fs_info = root->fs_info;
5911 BUG_ON(root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID);
5945 wret = walk_down_tree(trans, root, path, wc);
5951 wret = walk_up_tree(trans, root, path, wc, parent_level);
5985 * transaction and hold the commit root sem. We only need to hold