Lines Matching refs:reloc_root
295 * trying to access reloc_root
315 if (!root->reloc_root)
322 struct btrfs_root *reloc_root;
331 reloc_root = root->reloc_root;
332 if (!reloc_root)
335 if (btrfs_header_generation(reloc_root->commit_root) ==
540 struct btrfs_root *reloc_root = src->reloc_root;
557 BUG_ON(node->new_bytenr != reloc_root->node->start);
562 reloc_root->commit_root->start);
732 struct btrfs_root *reloc_root;
808 reloc_root = btrfs_read_tree_root(fs_info->tree_root, &root_key);
809 if (IS_ERR(reloc_root)) {
810 ret = PTR_ERR(reloc_root);
813 set_bit(BTRFS_ROOT_SHAREABLE, &reloc_root->state);
814 reloc_root->last_trans = trans->transid;
815 return reloc_root;
828 * The reloc_root comes out of here with two references, one for
829 * root->reloc_root, and another for being on the rc->reloc_roots list.
835 struct btrfs_root *reloc_root;
859 if (root->reloc_root) {
860 reloc_root = root->reloc_root;
861 reloc_root->last_trans = trans->transid;
878 reloc_root = create_reloc_root(trans, root, root->root_key.objectid);
882 ret = __add_reloc_root(reloc_root);
884 root->reloc_root = btrfs_grab_root(reloc_root);
895 struct btrfs_root *reloc_root;
902 reloc_root = root->reloc_root;
903 root_item = &reloc_root->root_item;
907 * the root. We have the ref for root->reloc_root, but just in case
910 btrfs_grab_root(reloc_root);
912 /* root->reloc_root will stay until current relocation finished */
917 * Mark the tree as dead before we change reloc_root so
921 __del_reloc_root(reloc_root);
924 if (reloc_root->commit_root != reloc_root->node) {
925 __update_reloc_root(reloc_root);
926 btrfs_set_root_node(root_item, reloc_root->node);
927 free_extent_buffer(reloc_root->commit_root);
928 reloc_root->commit_root = btrfs_root_node(reloc_root);
932 &reloc_root->root_key, root_item);
933 btrfs_put_root(reloc_root);
1586 struct btrfs_root *reloc_root = root->reloc_root;
1591 ASSERT(reloc_root);
1593 reloc_root_item = &reloc_root->root_item;
1617 struct btrfs_root *reloc_root = root->reloc_root;
1620 root->reloc_root = NULL;
1623 * root->reloc_root = NULL. Pairs with have_reloc_root.
1627 if (reloc_root) {
1630 * ->reloc_root. If it fails however we must
1633 ret2 = btrfs_drop_snapshot(reloc_root, 0, 1);
1635 btrfs_put_root(reloc_root);
1665 struct btrfs_root *reloc_root;
1682 reloc_root = root->reloc_root;
1683 root_item = &reloc_root->root_item;
1687 atomic_inc(&reloc_root->node->refs);
1688 path->nodes[level] = reloc_root->node;
1696 ret = btrfs_search_slot(NULL, reloc_root, &key, path, 0, 0);
1746 reloc_root->last_trans = trans->transid;
1752 ret = walk_down_reloc_tree(reloc_root, path, &level);
1764 ret = replace_path(trans, rc, root, reloc_root, path,
1779 ret = walk_up_reloc_tree(reloc_root, path, &level);
1834 struct btrfs_root *reloc_root;
1874 reloc_root = list_entry(rc->reloc_roots.next,
1876 list_del_init(&reloc_root->root_list);
1878 root = btrfs_get_fs_root(fs_info, reloc_root->root_key.offset,
1881 BUG_ON(root->reloc_root != reloc_root);
1888 btrfs_set_root_refs(&reloc_root->root_item, 1);
1891 list_add(&reloc_root->root_list, &reloc_roots);
1907 struct btrfs_root *reloc_root, *tmp;
1909 list_for_each_entry_safe(reloc_root, tmp, list, root_list)
1910 __del_reloc_root(reloc_root);
1918 struct btrfs_root *reloc_root;
1937 reloc_root = list_entry(reloc_roots.next,
1940 root = btrfs_get_fs_root(fs_info, reloc_root->root_key.offset,
1942 if (btrfs_root_refs(&reloc_root->root_item) > 0) {
1944 BUG_ON(root->reloc_root != reloc_root);
1948 if (list_empty(&reloc_root->root_list))
1949 list_add_tail(&reloc_root->root_list,
1955 if (root->reloc_root == reloc_root) {
1956 root->reloc_root = NULL;
1957 btrfs_put_root(reloc_root);
1964 list_del_init(&reloc_root->root_list);
1966 list_add_tail(&reloc_root->reloc_dirty_list,
1997 * do the reloc_dirty_list afterwards. Meanwhile the root->reloc_root
2016 struct btrfs_root *reloc_root)
2018 struct btrfs_fs_info *fs_info = reloc_root->fs_info;
2022 if (reloc_root->last_trans == trans->transid)
2025 root = btrfs_get_fs_root(fs_info, reloc_root->root_key.offset, false);
2027 BUG_ON(root->reloc_root != reloc_root);
2058 root = root->reloc_root;
2519 root = root->reloc_root;
3267 * extent tree is not a ref_cow tree and has no reloc_root to
3749 struct btrfs_root *reloc_root;
3786 reloc_root = btrfs_read_tree_root(root, &key);
3787 if (IS_ERR(reloc_root)) {
3788 err = PTR_ERR(reloc_root);
3792 set_bit(BTRFS_ROOT_SHAREABLE, &reloc_root->state);
3793 list_add(&reloc_root->root_list, &reloc_roots);
3795 if (btrfs_root_refs(&reloc_root->root_item) > 0) {
3797 reloc_root->root_key.offset, false);
3804 ret = mark_garbage_root(reloc_root);
3843 reloc_root = list_entry(reloc_roots.next,
3845 list_del(&reloc_root->root_list);
3847 if (btrfs_root_refs(&reloc_root->root_item) == 0) {
3848 list_add_tail(&reloc_root->root_list,
3853 fs_root = btrfs_get_fs_root(fs_info, reloc_root->root_key.offset,
3857 list_add_tail(&reloc_root->root_list, &reloc_roots);
3862 err = __add_reloc_root(reloc_root);
3864 fs_root->reloc_root = btrfs_grab_root(reloc_root);
4025 root = root->reloc_root;
4045 * references held on the reloc_root, one for root->reloc_root and one for
4052 struct btrfs_root *reloc_root;
4072 reloc_root = create_reloc_root(trans, root->reloc_root,
4074 if (IS_ERR(reloc_root))
4075 return PTR_ERR(reloc_root);
4077 ret = __add_reloc_root(reloc_root);
4079 new_root->reloc_root = btrfs_grab_root(reloc_root);
4082 ret = clone_backref_node(trans, rc, root, reloc_root);