Lines Matching refs:root
62 struct btrfs_root *root; member
291 static struct rb_node *tree_insert(struct rb_root *root, u64 bytenr, in tree_insert() argument
294 struct rb_node **p = &root->rb_node; in tree_insert()
311 rb_insert_color(node, root); in tree_insert()
315 static struct rb_node *tree_search(struct rb_root *root, u64 bytenr) in tree_search() argument
317 struct rb_node *n = root->rb_node; in tree_search()
339 if (bnode->root) in backref_tree_panic()
340 fs_info = bnode->root->fs_info; in backref_tree_panic()
530 static int should_ignore_root(struct btrfs_root *root) in should_ignore_root() argument
534 if (!test_bit(BTRFS_ROOT_REF_COWS, &root->state)) in should_ignore_root()
537 reloc_root = root->reloc_root; in should_ignore_root()
542 root->fs_info->running_transaction->transid - 1) in should_ignore_root()
560 struct btrfs_root *root = NULL; in find_reloc_root() local
566 root = (struct btrfs_root *)node->data; in find_reloc_root()
569 return root; in find_reloc_root()
608 struct btrfs_root *root; in find_tree_root() local
614 root = read_fs_root(rc->extent_root->fs_info, root_objectid); in find_tree_root()
615 BUG_ON(IS_ERR(root)); in find_tree_root()
617 if (test_bit(BTRFS_ROOT_REF_COWS, &root->state) && in find_tree_root()
618 generation != btrfs_root_generation(&root->root_item)) in find_tree_root()
621 return root; in find_tree_root()
691 struct btrfs_root *root; local
835 root = find_tree_root(rc, eb, ref0);
836 if (root && !should_ignore_root(root))
837 cur->root = root;
855 root = find_reloc_root(rc, cur->bytenr);
856 ASSERT(root);
857 cur->root = root;
897 root = read_fs_root(rc->extent_root->fs_info, key.offset);
898 if (IS_ERR(root)) {
899 err = PTR_ERR(root);
903 if (!test_bit(BTRFS_ROOT_REF_COWS, &root->state))
906 if (btrfs_root_level(&root->root_item) == cur->level) {
908 ASSERT(btrfs_root_bytenr(&root->root_item) ==
910 if (should_ignore_root(root))
913 cur->root = root;
926 ret = btrfs_search_slot(NULL, root, node_key, path2, 0, 0);
938 btrfs_err(root->fs_info,
940 cur->bytenr, level - 1, root->objectid,
950 ASSERT(btrfs_root_bytenr(&root->root_item) ==
952 if (should_ignore_root(root))
955 lower->root = root;
978 &root->state))
985 if (btrfs_block_can_be_shared(root, eb))
1255 new_node->root = dest;
1298 static int __must_check __add_reloc_root(struct btrfs_root *root) argument
1300 struct btrfs_fs_info *fs_info = root->fs_info;
1309 node->bytenr = root->node->start;
1310 node->data = root;
1322 list_add_tail(&root->root_list, &rc->reloc_roots);
1330 static void __del_reloc_root(struct btrfs_root *root) argument
1332 struct btrfs_fs_info *fs_info = root->fs_info;
1337 if (rc && root->node) {
1340 root->node->start);
1348 BUG_ON((struct btrfs_root *)node->data != root);
1352 list_del_init(&root->root_list);
1361 static int __update_reloc_root(struct btrfs_root *root, u64 new_bytenr) argument
1363 struct btrfs_fs_info *fs_info = root->fs_info;
1370 root->node->start);
1379 BUG_ON((struct btrfs_root *)node->data != root);
1392 struct btrfs_root *root, u64 objectid) argument
1394 struct btrfs_fs_info *fs_info = root->fs_info;
1408 if (root->root_key.objectid == objectid) {
1412 ret = btrfs_copy_root(trans, root, root->commit_root, &eb,
1423 commit_root_gen = btrfs_header_generation(root->commit_root);
1424 btrfs_set_root_last_snapshot(&root->root_item, commit_root_gen);
1433 ret = btrfs_copy_root(trans, root, root->node, &eb,
1438 memcpy(root_item, &root->root_item, sizeof(*root_item));
1443 if (root->root_key.objectid == objectid) {
1469 struct btrfs_root *root) argument
1471 struct btrfs_fs_info *fs_info = root->fs_info;
1478 if (root->reloc_root) {
1479 reloc_root = root->reloc_root;
1485 root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID)
1493 reloc_root = create_reloc_root(trans, root, root->root_key.objectid);
1499 root->reloc_root = reloc_root;
1507 struct btrfs_root *root) argument
1509 struct btrfs_fs_info *fs_info = root->fs_info;
1514 if (!root->reloc_root)
1517 reloc_root = root->reloc_root;
1522 root->reloc_root = NULL;
1544 static struct inode *find_next_inode(struct btrfs_root *root, u64 objectid) argument
1551 spin_lock(&root->inode_lock);
1553 node = root->inode_tree.rb_node;
1580 spin_unlock(&root->inode_lock);
1585 if (cond_resched_lock(&root->inode_lock))
1590 spin_unlock(&root->inode_lock);
1609 struct btrfs_root *root = BTRFS_I(reloc_inode)->root; local
1620 ret = btrfs_lookup_file_extent(NULL, root, path,
1657 struct btrfs_root *root, argument
1660 struct btrfs_fs_info *fs_info = root->fs_info;
1679 if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID)
1705 if (root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID) {
1707 inode = find_next_inode(root, key.objectid);
1711 inode = find_next_inode(root, key.objectid);
1989 int walk_up_reloc_tree(struct btrfs_root *root, struct btrfs_path *path, argument
1997 last_snapshot = btrfs_root_last_snapshot(&root->root_item);
2026 int walk_down_reloc_tree(struct btrfs_root *root, struct btrfs_path *path, argument
2029 struct btrfs_fs_info *fs_info = root->fs_info;
2037 last_snapshot = btrfs_root_last_snapshot(&root->root_item);
2078 static int invalidate_extent_cache(struct btrfs_root *root, argument
2082 struct btrfs_fs_info *fs_info = root->fs_info;
2096 inode = find_next_inode(root, objectid);
2170 struct btrfs_root *root) argument
2193 reloc_root = root->reloc_root;
2225 ret = btrfs_block_rsv_refill(root, rc->block_rsv, min_reserved,
2231 trans = btrfs_start_transaction(root, 0);
2254 ret = replace_path(trans, root, reloc_root, path,
2288 invalidate_extent_cache(root, &key, &next_key);
2295 leaf = btrfs_lock_root_node(root);
2296 ret = btrfs_cow_block(trans, root, leaf, NULL, 0, &leaf);
2309 btrfs_update_reloc_root(trans, root);
2318 invalidate_extent_cache(root, &key, &next_key);
2326 struct btrfs_root *root = rc->extent_root; local
2327 struct btrfs_fs_info *fs_info = root->fs_info;
2342 ret = btrfs_block_rsv_add(root, rc->block_rsv, num_bytes,
2372 root = read_fs_root(fs_info, reloc_root->root_key.offset);
2373 BUG_ON(IS_ERR(root));
2374 BUG_ON(root->reloc_root != reloc_root);
2382 btrfs_update_reloc_root(trans, root);
2416 struct btrfs_root *root; local
2422 root = rc->extent_root;
2440 root = read_fs_root(fs_info,
2442 BUG_ON(IS_ERR(root));
2443 BUG_ON(root->reloc_root != reloc_root);
2445 ret = merge_reloc_root(rc, root);
2501 struct btrfs_root *root; local
2506 root = read_fs_root(fs_info, reloc_root->root_key.offset);
2507 BUG_ON(IS_ERR(root));
2508 BUG_ON(root->reloc_root != reloc_root);
2510 return btrfs_record_root_in_trans(trans, root);
2520 struct btrfs_root *root; local
2527 root = next->root;
2528 BUG_ON(!root);
2529 BUG_ON(!test_bit(BTRFS_ROOT_REF_COWS, &root->state));
2531 if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID) {
2532 record_reloc_root_in_trans(trans, root);
2536 btrfs_record_root_in_trans(trans, root);
2537 root = root->reloc_root;
2539 if (next->new_bytenr != root->node->start) {
2542 next->new_bytenr = root->node->start;
2543 next->root = root;
2551 root = NULL;
2556 if (!root)
2567 return root;
2580 struct btrfs_root *root; local
2589 root = next->root;
2590 BUG_ON(!root);
2593 if (!test_bit(BTRFS_ROOT_REF_COWS, &root->state))
2594 return root;
2596 if (root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID)
2597 fs_root = root;
2650 struct btrfs_root *root = rc->extent_root; local
2651 struct btrfs_fs_info *fs_info = root->fs_info;
2666 ret = btrfs_block_rsv_refill(root, rc->block_rsv, num_bytes,
2704 struct btrfs_root *root; local
2721 root = select_reloc_root(trans, rc, upper, edges);
2722 BUG_ON(!root);
2737 ret = btrfs_search_slot(trans, root, key, path, 0, 1);
2769 btrfs_err(root->fs_info,
2781 blocksize = root->fs_info->nodesize;
2796 ret = btrfs_cow_block(trans, root, eb, upper->eb,
2812 ret = btrfs_inc_extent_ref(trans, root->fs_info,
2819 ret = btrfs_drop_subtree(trans, root, eb, upper->eb);
2974 struct btrfs_root *root; local
2981 root = select_one_root(node);
2982 if (root == ERR_PTR(-ENOENT)) {
2987 if (!root || test_bit(BTRFS_ROOT_REF_COWS, &root->state)) {
2993 if (root) {
2994 if (test_bit(BTRFS_ROOT_REF_COWS, &root->state)) {
2997 btrfs_record_root_in_trans(trans, root);
2998 root = root->reloc_root;
2999 node->new_bytenr = root->node->start;
3000 node->root = root;
3004 ret = btrfs_search_slot(trans, root, key, path, 0, 1);
3536 struct btrfs_root *root = fs_info->tree_root; local
3547 inode = btrfs_iget(fs_info->sb, &key, root, NULL);
3560 trans = btrfs_join_transaction(root);
3588 struct btrfs_root *root; local
3624 root = read_fs_root(fs_info, ref_root);
3625 if (IS_ERR(root)) {
3626 err = PTR_ERR(root);
3639 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0);
3665 ret = btrfs_next_leaf(root, path);
4207 struct btrfs_root *root, u64 objectid) argument
4218 ret = btrfs_insert_empty_inode(trans, root, path, objectid);
4246 struct btrfs_root *root; local
4251 root = read_fs_root(fs_info, BTRFS_DATA_RELOC_TREE_OBJECTID);
4252 if (IS_ERR(root))
4253 return ERR_CAST(root);
4255 trans = btrfs_start_transaction(root, 6);
4259 err = btrfs_find_free_objectid(root, &objectid);
4263 err = __insert_orphan_inode(trans, root, objectid);
4269 inode = btrfs_iget(fs_info->sb, &key, root, NULL);
4450 static noinline_for_stack int mark_garbage_root(struct btrfs_root *root) argument
4452 struct btrfs_fs_info *fs_info = root->fs_info;
4460 memset(&root->root_item.drop_progress, 0,
4461 sizeof(root->root_item.drop_progress));
4462 root->root_item.drop_level = 0;
4463 btrfs_set_root_refs(&root->root_item, 0);
4465 &root->root_key, &root->root_item);
4479 int btrfs_recover_relocation(struct btrfs_root *root) argument
4481 struct btrfs_fs_info *fs_info = root->fs_info;
4522 reloc_root = btrfs_read_fs_root(root, &key);
4684 struct btrfs_root *root, struct extent_buffer *buf, argument
4687 struct btrfs_fs_info *fs_info = root->fs_info;
4699 root->root_key.objectid == BTRFS_DATA_RELOC_TREE_OBJECTID);
4701 if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID) {
4702 if (buf == root->node)
4703 __update_reloc_root(root, cow->start);
4708 btrfs_root_last_snapshot(&root->root_item))
4711 if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID &&
4738 ret = replace_file_extents(trans, rc, root, cow);
4749 struct btrfs_root *root; local
4752 root = pending->root;
4753 if (!root->reloc_root)
4756 rc = root->fs_info->reloc_ctl;
4760 root = root->reloc_root;
4761 BUG_ON(btrfs_root_refs(&root->root_item) == 0);
4782 struct btrfs_root *root = pending->root; local
4788 if (!root->reloc_root)
4791 rc = root->fs_info->reloc_ctl;
4803 reloc_root = create_reloc_root(trans, root->reloc_root,
4813 ret = clone_backref_node(trans, rc, root, reloc_root);