Lines Matching refs:reloc_root
519 struct btrfs_root *reloc_root; in should_ignore_root() local
524 reloc_root = root->reloc_root; in should_ignore_root()
525 if (!reloc_root) in should_ignore_root()
528 if (btrfs_root_last_snapshot(&reloc_root->root_item) == in should_ignore_root()
1161 struct btrfs_root *reloc_root = src->reloc_root; in clone_backref_node() local
1178 BUG_ON(node->new_bytenr != reloc_root->node->start); in clone_backref_node()
1183 reloc_root->commit_root->start); in clone_backref_node()
1342 struct btrfs_root *reloc_root; in create_reloc_root() local
1405 reloc_root = btrfs_read_fs_root(fs_info->tree_root, &root_key); in create_reloc_root()
1406 BUG_ON(IS_ERR(reloc_root)); in create_reloc_root()
1407 reloc_root->last_trans = trans->transid; in create_reloc_root()
1408 return reloc_root; in create_reloc_root()
1419 struct btrfs_root *reloc_root; in btrfs_init_reloc_root() local
1425 if (root->reloc_root) { in btrfs_init_reloc_root()
1426 reloc_root = root->reloc_root; in btrfs_init_reloc_root()
1427 reloc_root->last_trans = trans->transid; in btrfs_init_reloc_root()
1440 reloc_root = create_reloc_root(trans, root, root->root_key.objectid); in btrfs_init_reloc_root()
1444 ret = __add_reloc_root(reloc_root); in btrfs_init_reloc_root()
1446 root->reloc_root = reloc_root; in btrfs_init_reloc_root()
1457 struct btrfs_root *reloc_root; in btrfs_update_reloc_root() local
1461 if (!root->reloc_root) in btrfs_update_reloc_root()
1464 reloc_root = root->reloc_root; in btrfs_update_reloc_root()
1465 root_item = &reloc_root->root_item; in btrfs_update_reloc_root()
1469 root->reloc_root = NULL; in btrfs_update_reloc_root()
1470 __del_reloc_root(reloc_root); in btrfs_update_reloc_root()
1473 if (reloc_root->commit_root != reloc_root->node) { in btrfs_update_reloc_root()
1474 btrfs_set_root_node(root_item, reloc_root->node); in btrfs_update_reloc_root()
1475 free_extent_buffer(reloc_root->commit_root); in btrfs_update_reloc_root()
1476 reloc_root->commit_root = btrfs_root_node(reloc_root); in btrfs_update_reloc_root()
1480 &reloc_root->root_key, root_item); in btrfs_update_reloc_root()
2131 struct btrfs_root *reloc_root; in merge_reloc_root() local
2147 reloc_root = root->reloc_root; in merge_reloc_root()
2148 root_item = &reloc_root->root_item; in merge_reloc_root()
2152 extent_buffer_get(reloc_root->node); in merge_reloc_root()
2153 path->nodes[level] = reloc_root->node; in merge_reloc_root()
2161 ret = btrfs_search_slot(NULL, reloc_root, &key, path, 0, 0); in merge_reloc_root()
2196 ret = walk_down_reloc_tree(reloc_root, path, &level); in merge_reloc_root()
2208 ret = replace_path(trans, root, reloc_root, path, in merge_reloc_root()
2223 ret = walk_up_reloc_tree(reloc_root, path, &level); in merge_reloc_root()
2282 struct btrfs_root *reloc_root; in prepare_to_merge() local
2322 reloc_root = list_entry(rc->reloc_roots.next, in prepare_to_merge()
2324 list_del_init(&reloc_root->root_list); in prepare_to_merge()
2326 root = read_fs_root(fs_info, reloc_root->root_key.offset); in prepare_to_merge()
2328 BUG_ON(root->reloc_root != reloc_root); in prepare_to_merge()
2335 btrfs_set_root_refs(&reloc_root->root_item, 1); in prepare_to_merge()
2338 list_add(&reloc_root->root_list, &reloc_roots); in prepare_to_merge()
2353 struct btrfs_root *reloc_root; in free_reloc_roots() local
2356 reloc_root = list_entry(list->next, struct btrfs_root, in free_reloc_roots()
2358 __del_reloc_root(reloc_root); in free_reloc_roots()
2359 free_extent_buffer(reloc_root->node); in free_reloc_roots()
2360 free_extent_buffer(reloc_root->commit_root); in free_reloc_roots()
2361 reloc_root->node = NULL; in free_reloc_roots()
2362 reloc_root->commit_root = NULL; in free_reloc_roots()
2371 struct btrfs_root *reloc_root; in merge_reloc_roots() local
2390 reloc_root = list_entry(reloc_roots.next, in merge_reloc_roots()
2393 if (btrfs_root_refs(&reloc_root->root_item) > 0) { in merge_reloc_roots()
2395 reloc_root->root_key.offset); in merge_reloc_roots()
2397 BUG_ON(root->reloc_root != reloc_root); in merge_reloc_roots()
2401 if (list_empty(&reloc_root->root_list)) in merge_reloc_roots()
2402 list_add_tail(&reloc_root->root_list, in merge_reloc_roots()
2407 list_del_init(&reloc_root->root_list); in merge_reloc_roots()
2410 ret = btrfs_drop_snapshot(reloc_root, rc->block_rsv, 0, 1); in merge_reloc_roots()
2412 if (list_empty(&reloc_root->root_list)) in merge_reloc_roots()
2413 list_add_tail(&reloc_root->root_list, in merge_reloc_roots()
2452 struct btrfs_root *reloc_root) in record_reloc_root_in_trans() argument
2454 struct btrfs_fs_info *fs_info = reloc_root->fs_info; in record_reloc_root_in_trans()
2457 if (reloc_root->last_trans == trans->transid) in record_reloc_root_in_trans()
2460 root = read_fs_root(fs_info, reloc_root->root_key.offset); in record_reloc_root_in_trans()
2462 BUG_ON(root->reloc_root != reloc_root); in record_reloc_root_in_trans()
2491 root = root->reloc_root; in select_reloc_root()
2957 root = root->reloc_root; in relocate_tree_block()
4361 struct btrfs_root *reloc_root; in btrfs_recover_relocation() local
4398 reloc_root = btrfs_read_fs_root(root, &key); in btrfs_recover_relocation()
4399 if (IS_ERR(reloc_root)) { in btrfs_recover_relocation()
4400 err = PTR_ERR(reloc_root); in btrfs_recover_relocation()
4404 list_add(&reloc_root->root_list, &reloc_roots); in btrfs_recover_relocation()
4406 if (btrfs_root_refs(&reloc_root->root_item) > 0) { in btrfs_recover_relocation()
4408 reloc_root->root_key.offset); in btrfs_recover_relocation()
4415 ret = mark_garbage_root(reloc_root); in btrfs_recover_relocation()
4453 reloc_root = list_entry(reloc_roots.next, in btrfs_recover_relocation()
4455 list_del(&reloc_root->root_list); in btrfs_recover_relocation()
4457 if (btrfs_root_refs(&reloc_root->root_item) == 0) { in btrfs_recover_relocation()
4458 list_add_tail(&reloc_root->root_list, in btrfs_recover_relocation()
4463 fs_root = read_fs_root(fs_info, reloc_root->root_key.offset); in btrfs_recover_relocation()
4469 err = __add_reloc_root(reloc_root); in btrfs_recover_relocation()
4471 fs_root->reloc_root = reloc_root; in btrfs_recover_relocation()
4628 if (!root->reloc_root) in btrfs_reloc_pre_snapshot()
4635 root = root->reloc_root; in btrfs_reloc_pre_snapshot()
4658 struct btrfs_root *reloc_root; in btrfs_reloc_post_snapshot() local
4663 if (!root->reloc_root) in btrfs_reloc_post_snapshot()
4678 reloc_root = create_reloc_root(trans, root->reloc_root, in btrfs_reloc_post_snapshot()
4680 if (IS_ERR(reloc_root)) in btrfs_reloc_post_snapshot()
4681 return PTR_ERR(reloc_root); in btrfs_reloc_post_snapshot()
4683 ret = __add_reloc_root(reloc_root); in btrfs_reloc_post_snapshot()
4685 new_root->reloc_root = reloc_root; in btrfs_reloc_post_snapshot()
4688 ret = clone_backref_node(trans, rc, root, reloc_root); in btrfs_reloc_post_snapshot()