Lines Matching refs:root

641 	struct btrfs_root *root;  in btrfs_alloc_root()  local
644 root = kzalloc(sizeof(*root), flags); in btrfs_alloc_root()
645 if (!root) in btrfs_alloc_root()
648 memset(&root->root_key, 0, sizeof(root->root_key)); in btrfs_alloc_root()
649 memset(&root->root_item, 0, sizeof(root->root_item)); in btrfs_alloc_root()
650 memset(&root->defrag_progress, 0, sizeof(root->defrag_progress)); in btrfs_alloc_root()
651 root->fs_info = fs_info; in btrfs_alloc_root()
652 root->root_key.objectid = objectid; in btrfs_alloc_root()
653 root->node = NULL; in btrfs_alloc_root()
654 root->commit_root = NULL; in btrfs_alloc_root()
655 root->state = 0; in btrfs_alloc_root()
656 RB_CLEAR_NODE(&root->rb_node); in btrfs_alloc_root()
658 btrfs_set_root_last_trans(root, 0); in btrfs_alloc_root()
659 root->free_objectid = 0; in btrfs_alloc_root()
660 root->nr_delalloc_inodes = 0; in btrfs_alloc_root()
661 root->nr_ordered_extents = 0; in btrfs_alloc_root()
662 xa_init(&root->inodes); in btrfs_alloc_root()
663 xa_init(&root->delayed_nodes); in btrfs_alloc_root()
665 btrfs_init_root_block_rsv(root); in btrfs_alloc_root()
667 INIT_LIST_HEAD(&root->dirty_list); in btrfs_alloc_root()
668 INIT_LIST_HEAD(&root->root_list); in btrfs_alloc_root()
669 INIT_LIST_HEAD(&root->delalloc_inodes); in btrfs_alloc_root()
670 INIT_LIST_HEAD(&root->delalloc_root); in btrfs_alloc_root()
671 INIT_LIST_HEAD(&root->ordered_extents); in btrfs_alloc_root()
672 INIT_LIST_HEAD(&root->ordered_root); in btrfs_alloc_root()
673 INIT_LIST_HEAD(&root->reloc_dirty_list); in btrfs_alloc_root()
674 spin_lock_init(&root->delalloc_lock); in btrfs_alloc_root()
675 spin_lock_init(&root->ordered_extent_lock); in btrfs_alloc_root()
676 spin_lock_init(&root->accounting_lock); in btrfs_alloc_root()
677 spin_lock_init(&root->qgroup_meta_rsv_lock); in btrfs_alloc_root()
678 mutex_init(&root->objectid_mutex); in btrfs_alloc_root()
679 mutex_init(&root->log_mutex); in btrfs_alloc_root()
680 mutex_init(&root->ordered_extent_mutex); in btrfs_alloc_root()
681 mutex_init(&root->delalloc_mutex); in btrfs_alloc_root()
682 init_waitqueue_head(&root->qgroup_flush_wait); in btrfs_alloc_root()
683 init_waitqueue_head(&root->log_writer_wait); in btrfs_alloc_root()
684 init_waitqueue_head(&root->log_commit_wait[0]); in btrfs_alloc_root()
685 init_waitqueue_head(&root->log_commit_wait[1]); in btrfs_alloc_root()
686 INIT_LIST_HEAD(&root->log_ctxs[0]); in btrfs_alloc_root()
687 INIT_LIST_HEAD(&root->log_ctxs[1]); in btrfs_alloc_root()
688 atomic_set(&root->log_commit[0], 0); in btrfs_alloc_root()
689 atomic_set(&root->log_commit[1], 0); in btrfs_alloc_root()
690 atomic_set(&root->log_writers, 0); in btrfs_alloc_root()
691 atomic_set(&root->log_batch, 0); in btrfs_alloc_root()
692 refcount_set(&root->refs, 1); in btrfs_alloc_root()
693 atomic_set(&root->snapshot_force_cow, 0); in btrfs_alloc_root()
694 atomic_set(&root->nr_swapfiles, 0); in btrfs_alloc_root()
695 btrfs_set_root_log_transid(root, 0); in btrfs_alloc_root()
696 root->log_transid_committed = -1; in btrfs_alloc_root()
697 btrfs_set_root_last_log_commit(root, 0); in btrfs_alloc_root()
698 root->anon_dev = 0; in btrfs_alloc_root()
700 btrfs_extent_io_tree_init(fs_info, &root->dirty_log_pages, in btrfs_alloc_root()
702 btrfs_extent_io_tree_init(fs_info, &root->log_csum_range, in btrfs_alloc_root()
706 spin_lock_init(&root->root_item_lock); in btrfs_alloc_root()
707 btrfs_qgroup_init_swapped_blocks(&root->swapped_blocks); in btrfs_alloc_root()
709 INIT_LIST_HEAD(&root->leak_list); in btrfs_alloc_root()
711 list_add_tail(&root->leak_list, &fs_info->allocated_roots); in btrfs_alloc_root()
715 return root; in btrfs_alloc_root()
722 struct btrfs_root *root; in btrfs_alloc_dummy_root() local
727 root = btrfs_alloc_root(fs_info, BTRFS_ROOT_TREE_OBJECTID, GFP_KERNEL); in btrfs_alloc_dummy_root()
728 if (!root) in btrfs_alloc_dummy_root()
732 root->alloc_bytenr = 0; in btrfs_alloc_dummy_root()
734 return root; in btrfs_alloc_dummy_root()
749 const struct btrfs_root *root = rb_entry(node, struct btrfs_root, rb_node); in global_root_key_cmp() local
751 return btrfs_comp_cpu_keys(key, &root->root_key); in global_root_key_cmp()
754 int btrfs_global_root_insert(struct btrfs_root *root) in btrfs_global_root_insert() argument
756 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_global_root_insert()
761 tmp = rb_find_add(&root->rb_node, &fs_info->global_root_tree, global_root_cmp); in btrfs_global_root_insert()
767 btrfs_root_id(root), root->root_key.offset); in btrfs_global_root_insert()
772 void btrfs_global_root_delete(struct btrfs_root *root) in btrfs_global_root_delete() argument
774 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_global_root_delete()
777 rb_erase(&root->rb_node, &fs_info->global_root_tree); in btrfs_global_root_delete()
785 struct btrfs_root *root = NULL; in btrfs_global_root() local
790 root = container_of(node, struct btrfs_root, rb_node); in btrfs_global_root()
793 return root; in btrfs_global_root()
845 struct btrfs_root *root; in btrfs_create_tree() local
855 root = btrfs_alloc_root(fs_info, objectid, GFP_KERNEL); in btrfs_create_tree()
857 if (!root) in btrfs_create_tree()
860 root->root_key.objectid = objectid; in btrfs_create_tree()
861 root->root_key.type = BTRFS_ROOT_ITEM_KEY; in btrfs_create_tree()
862 root->root_key.offset = 0; in btrfs_create_tree()
864 leaf = btrfs_alloc_tree_block(trans, root, 0, objectid, NULL, 0, 0, 0, in btrfs_create_tree()
872 root->node = leaf; in btrfs_create_tree()
875 root->commit_root = btrfs_root_node(root); in btrfs_create_tree()
876 set_bit(BTRFS_ROOT_TRACK_DIRTY, &root->state); in btrfs_create_tree()
878 btrfs_set_root_flags(&root->root_item, 0); in btrfs_create_tree()
879 btrfs_set_root_limit(&root->root_item, 0); in btrfs_create_tree()
880 btrfs_set_root_bytenr(&root->root_item, leaf->start); in btrfs_create_tree()
881 btrfs_set_root_generation(&root->root_item, trans->transid); in btrfs_create_tree()
882 btrfs_set_root_level(&root->root_item, 0); in btrfs_create_tree()
883 btrfs_set_root_refs(&root->root_item, 1); in btrfs_create_tree()
884 btrfs_set_root_used(&root->root_item, leaf->len); in btrfs_create_tree()
885 btrfs_set_root_last_snapshot(&root->root_item, 0); in btrfs_create_tree()
886 btrfs_set_root_dirid(&root->root_item, 0); in btrfs_create_tree()
888 generate_random_guid(root->root_item.uuid); in btrfs_create_tree()
890 export_guid(root->root_item.uuid, &guid_null); in btrfs_create_tree()
891 btrfs_set_root_drop_level(&root->root_item, 0); in btrfs_create_tree()
898 ret = btrfs_insert_root(trans, tree_root, &key, &root->root_item); in btrfs_create_tree()
902 return root; in btrfs_create_tree()
905 btrfs_put_root(root); in btrfs_create_tree()
912 struct btrfs_root *root; in alloc_log_tree() local
914 root = btrfs_alloc_root(fs_info, BTRFS_TREE_LOG_OBJECTID, GFP_NOFS); in alloc_log_tree()
915 if (!root) in alloc_log_tree()
918 root->root_key.objectid = BTRFS_TREE_LOG_OBJECTID; in alloc_log_tree()
919 root->root_key.type = BTRFS_ROOT_ITEM_KEY; in alloc_log_tree()
920 root->root_key.offset = BTRFS_TREE_LOG_OBJECTID; in alloc_log_tree()
922 return root; in alloc_log_tree()
926 struct btrfs_root *root) in btrfs_alloc_log_tree_node() argument
940 leaf = btrfs_alloc_tree_block(trans, root, 0, BTRFS_TREE_LOG_OBJECTID, in btrfs_alloc_log_tree_node()
945 root->node = leaf; in btrfs_alloc_log_tree_node()
947 btrfs_mark_buffer_dirty(trans, root->node); in btrfs_alloc_log_tree_node()
948 btrfs_tree_unlock(root->node); in btrfs_alloc_log_tree_node()
977 struct btrfs_root *root) in btrfs_add_log_tree() argument
979 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_add_log_tree()
995 log_root->root_key.offset = btrfs_root_id(root); in btrfs_add_log_tree()
1007 WARN_ON(root->log_root); in btrfs_add_log_tree()
1008 root->log_root = log_root; in btrfs_add_log_tree()
1009 btrfs_set_root_log_transid(root, 0); in btrfs_add_log_tree()
1010 root->log_transid_committed = -1; in btrfs_add_log_tree()
1011 btrfs_set_root_last_log_commit(root, 0); in btrfs_add_log_tree()
1019 struct btrfs_root *root; in read_tree_root_path() local
1026 root = btrfs_alloc_root(fs_info, key->objectid, GFP_NOFS); in read_tree_root_path()
1027 if (!root) in read_tree_root_path()
1031 &root->root_item, &root->root_key); in read_tree_root_path()
1038 generation = btrfs_root_generation(&root->root_item); in read_tree_root_path()
1039 level = btrfs_root_level(&root->root_item); in read_tree_root_path()
1043 root->node = read_tree_block(fs_info, btrfs_root_bytenr(&root->root_item), in read_tree_root_path()
1045 if (IS_ERR(root->node)) { in read_tree_root_path()
1046 ret = PTR_ERR(root->node); in read_tree_root_path()
1047 root->node = NULL; in read_tree_root_path()
1050 if (!btrfs_buffer_uptodate(root->node, generation, 0)) { in read_tree_root_path()
1060 btrfs_root_id(root) != BTRFS_TREE_LOG_OBJECTID && in read_tree_root_path()
1061 btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID && in read_tree_root_path()
1062 btrfs_root_id(root) != btrfs_header_owner(root->node)) { in read_tree_root_path()
1065 btrfs_root_id(root), root->node->start, in read_tree_root_path()
1066 btrfs_header_owner(root->node), in read_tree_root_path()
1067 btrfs_root_id(root)); in read_tree_root_path()
1071 root->commit_root = btrfs_root_node(root); in read_tree_root_path()
1072 return root; in read_tree_root_path()
1074 btrfs_put_root(root); in read_tree_root_path()
1081 struct btrfs_root *root; in btrfs_read_tree_root() local
1087 root = read_tree_root_path(tree_root, path, key); in btrfs_read_tree_root()
1089 return root; in btrfs_read_tree_root()
1099 static int btrfs_init_fs_root(struct btrfs_root *root, dev_t anon_dev) in btrfs_init_fs_root() argument
1103 btrfs_drew_lock_init(&root->snapshot_lock); in btrfs_init_fs_root()
1105 if (btrfs_root_id(root) != BTRFS_TREE_LOG_OBJECTID && in btrfs_init_fs_root()
1106 !btrfs_is_data_reloc_root(root) && in btrfs_init_fs_root()
1107 btrfs_is_fstree(btrfs_root_id(root))) { in btrfs_init_fs_root()
1108 set_bit(BTRFS_ROOT_SHAREABLE, &root->state); in btrfs_init_fs_root()
1109 btrfs_check_and_init_root_item(&root->root_item); in btrfs_init_fs_root()
1116 if (btrfs_is_fstree(btrfs_root_id(root)) && in btrfs_init_fs_root()
1117 btrfs_root_refs(&root->root_item) > 0) { in btrfs_init_fs_root()
1119 ret = get_anon_bdev(&root->anon_dev); in btrfs_init_fs_root()
1123 root->anon_dev = anon_dev; in btrfs_init_fs_root()
1127 mutex_lock(&root->objectid_mutex); in btrfs_init_fs_root()
1128 ret = btrfs_init_root_free_objectid(root); in btrfs_init_fs_root()
1130 mutex_unlock(&root->objectid_mutex); in btrfs_init_fs_root()
1134 ASSERT(root->free_objectid <= BTRFS_LAST_FREE_OBJECTID); in btrfs_init_fs_root()
1136 mutex_unlock(&root->objectid_mutex); in btrfs_init_fs_root()
1144 struct btrfs_root *root; in btrfs_lookup_fs_root() local
1147 root = radix_tree_lookup(&fs_info->fs_roots_radix, in btrfs_lookup_fs_root()
1149 root = btrfs_grab_root(root); in btrfs_lookup_fs_root()
1151 return root; in btrfs_lookup_fs_root()
1190 struct btrfs_root *root) in btrfs_insert_fs_root() argument
1200 (unsigned long)btrfs_root_id(root), in btrfs_insert_fs_root()
1201 root); in btrfs_insert_fs_root()
1203 btrfs_grab_root(root); in btrfs_insert_fs_root()
1204 set_bit(BTRFS_ROOT_IN_RADIX, &root->state); in btrfs_insert_fs_root()
1215 struct btrfs_root *root; in btrfs_check_leaked_roots() local
1220 root = list_first_entry(&fs_info->allocated_roots, in btrfs_check_leaked_roots()
1223 btrfs_root_name(&root->root_key, buf), in btrfs_check_leaked_roots()
1224 refcount_read(&root->refs)); in btrfs_check_leaked_roots()
1226 while (refcount_read(&root->refs) > 1) in btrfs_check_leaked_roots()
1227 btrfs_put_root(root); in btrfs_check_leaked_roots()
1228 btrfs_put_root(root); in btrfs_check_leaked_roots()
1235 struct btrfs_root *root; in free_global_roots() local
1239 root = rb_entry(node, struct btrfs_root, rb_node); in free_global_roots()
1240 rb_erase(&root->rb_node, &fs_info->global_root_tree); in free_global_roots()
1241 btrfs_put_root(root); in free_global_roots()
1304 struct btrfs_root *root; in btrfs_get_root_ref() local
1309 root = btrfs_get_global_root(fs_info, objectid); in btrfs_get_root_ref()
1310 if (root) in btrfs_get_root_ref()
1311 return root; in btrfs_get_root_ref()
1323 root = btrfs_lookup_fs_root(fs_info, objectid); in btrfs_get_root_ref()
1324 if (root) { in btrfs_get_root_ref()
1336 if (check_ref && btrfs_root_refs(&root->root_item) == 0) { in btrfs_get_root_ref()
1337 btrfs_put_root(root); in btrfs_get_root_ref()
1340 return root; in btrfs_get_root_ref()
1346 root = btrfs_read_tree_root(fs_info->tree_root, &key); in btrfs_get_root_ref()
1347 if (IS_ERR(root)) in btrfs_get_root_ref()
1348 return root; in btrfs_get_root_ref()
1350 if (check_ref && btrfs_root_refs(&root->root_item) == 0) { in btrfs_get_root_ref()
1355 ret = btrfs_init_fs_root(root, anon_dev ? *anon_dev : 0); in btrfs_get_root_ref()
1373 set_bit(BTRFS_ROOT_ORPHAN_ITEM_INSERTED, &root->state); in btrfs_get_root_ref()
1375 ret = btrfs_insert_fs_root(fs_info, root); in btrfs_get_root_ref()
1378 btrfs_put_root(root); in btrfs_get_root_ref()
1383 return root; in btrfs_get_root_ref()
1392 root->anon_dev = 0; in btrfs_get_root_ref()
1393 btrfs_put_root(root); in btrfs_get_root_ref()
1443 struct btrfs_root *root; in btrfs_get_fs_root_commit_root() local
1454 root = btrfs_get_global_root(fs_info, objectid); in btrfs_get_fs_root_commit_root()
1455 if (root) in btrfs_get_fs_root_commit_root()
1456 return root; in btrfs_get_fs_root_commit_root()
1458 root = btrfs_lookup_fs_root(fs_info, objectid); in btrfs_get_fs_root_commit_root()
1459 if (root) in btrfs_get_fs_root_commit_root()
1460 return root; in btrfs_get_fs_root_commit_root()
1465 root = read_tree_root_path(fs_info->tree_root, path, &key); in btrfs_get_fs_root_commit_root()
1468 return root; in btrfs_get_fs_root_commit_root()
1550 struct btrfs_root *root = arg; in transaction_kthread() local
1551 struct btrfs_fs_info *fs_info = root->fs_info; in transaction_kthread()
1585 trans = btrfs_attach_transaction(root); in transaction_kthread()
1795 static void free_root_extent_buffers(struct btrfs_root *root) in free_root_extent_buffers() argument
1797 if (root) { in free_root_extent_buffers()
1798 free_extent_buffer(root->node); in free_root_extent_buffers()
1799 free_extent_buffer(root->commit_root); in free_root_extent_buffers()
1800 root->node = NULL; in free_root_extent_buffers()
1801 root->commit_root = NULL; in free_root_extent_buffers()
1807 struct btrfs_root *root, *tmp; in free_global_root_pointers() local
1809 rbtree_postorder_for_each_entry_safe(root, tmp, in free_global_root_pointers()
1812 free_root_extent_buffers(root); in free_global_root_pointers()
1832 void btrfs_put_root(struct btrfs_root *root) in btrfs_put_root() argument
1834 if (!root) in btrfs_put_root()
1837 if (refcount_dec_and_test(&root->refs)) { in btrfs_put_root()
1838 if (WARN_ON(!xa_empty(&root->inodes))) in btrfs_put_root()
1839 xa_destroy(&root->inodes); in btrfs_put_root()
1840 if (WARN_ON(!xa_empty(&root->delayed_nodes))) in btrfs_put_root()
1841 xa_destroy(&root->delayed_nodes); in btrfs_put_root()
1842 WARN_ON(test_bit(BTRFS_ROOT_DEAD_RELOC_TREE, &root->state)); in btrfs_put_root()
1843 if (root->anon_dev) in btrfs_put_root()
1844 free_anon_bdev(root->anon_dev); in btrfs_put_root()
1845 free_root_extent_buffers(root); in btrfs_put_root()
1847 spin_lock(&root->fs_info->fs_roots_radix_lock); in btrfs_put_root()
1848 list_del_init(&root->leak_list); in btrfs_put_root()
1849 spin_unlock(&root->fs_info->fs_roots_radix_lock); in btrfs_put_root()
1851 kfree(root); in btrfs_put_root()
1930 BTRFS_I(inode)->root = btrfs_grab_root(fs_info->tree_root); in btrfs_init_btree_inode()
2111 struct btrfs_root *root; in load_global_roots_objectid() local
2156 root = read_tree_root_path(tree_root, path, &key); in load_global_roots_objectid()
2157 if (IS_ERR(root)) { in load_global_roots_objectid()
2158 ret = PTR_ERR(root); in load_global_roots_objectid()
2161 set_bit(BTRFS_ROOT_TRACK_DIRTY, &root->state); in load_global_roots_objectid()
2162 ret = btrfs_global_root_insert(root); in load_global_roots_objectid()
2164 btrfs_put_root(root); in load_global_roots_objectid()
2216 struct btrfs_root *root; in btrfs_read_roots() local
2231 root = btrfs_read_tree_root(tree_root, &location); in btrfs_read_roots()
2232 if (IS_ERR(root)) { in btrfs_read_roots()
2234 ret = PTR_ERR(root); in btrfs_read_roots()
2238 set_bit(BTRFS_ROOT_TRACK_DIRTY, &root->state); in btrfs_read_roots()
2239 fs_info->block_group_root = root; in btrfs_read_roots()
2244 root = btrfs_read_tree_root(tree_root, &location); in btrfs_read_roots()
2245 if (IS_ERR(root)) { in btrfs_read_roots()
2247 ret = PTR_ERR(root); in btrfs_read_roots()
2251 set_bit(BTRFS_ROOT_TRACK_DIRTY, &root->state); in btrfs_read_roots()
2252 fs_info->dev_root = root; in btrfs_read_roots()
2263 root = btrfs_get_fs_root(tree_root->fs_info, in btrfs_read_roots()
2265 if (IS_ERR(root)) { in btrfs_read_roots()
2267 ret = PTR_ERR(root); in btrfs_read_roots()
2271 set_bit(BTRFS_ROOT_TRACK_DIRTY, &root->state); in btrfs_read_roots()
2272 fs_info->data_reloc_root = root; in btrfs_read_roots()
2276 root = btrfs_read_tree_root(tree_root, &location); in btrfs_read_roots()
2277 if (!IS_ERR(root)) { in btrfs_read_roots()
2278 set_bit(BTRFS_ROOT_TRACK_DIRTY, &root->state); in btrfs_read_roots()
2279 fs_info->quota_root = root; in btrfs_read_roots()
2283 root = btrfs_read_tree_root(tree_root, &location); in btrfs_read_roots()
2284 if (IS_ERR(root)) { in btrfs_read_roots()
2286 ret = PTR_ERR(root); in btrfs_read_roots()
2291 set_bit(BTRFS_ROOT_TRACK_DIRTY, &root->state); in btrfs_read_roots()
2292 fs_info->uuid_root = root; in btrfs_read_roots()
2297 root = btrfs_read_tree_root(tree_root, &location); in btrfs_read_roots()
2298 if (IS_ERR(root)) { in btrfs_read_roots()
2300 ret = PTR_ERR(root); in btrfs_read_roots()
2304 set_bit(BTRFS_ROOT_TRACK_DIRTY, &root->state); in btrfs_read_roots()
2305 fs_info->stripe_root = root; in btrfs_read_roots()
2643 static int load_super_root(struct btrfs_root *root, u64 bytenr, u64 gen, int level) in load_super_root() argument
2648 .owner_root = btrfs_root_id(root) in load_super_root()
2652 root->node = read_tree_block(root->fs_info, bytenr, &check); in load_super_root()
2653 if (IS_ERR(root->node)) { in load_super_root()
2654 ret = PTR_ERR(root->node); in load_super_root()
2655 root->node = NULL; in load_super_root()
2658 if (!extent_buffer_uptodate(root->node)) { in load_super_root()
2659 free_extent_buffer(root->node); in load_super_root()
2660 root->node = NULL; in load_super_root()
2664 btrfs_set_root_node(&root->root_item, root->node); in load_super_root()
2665 root->commit_root = btrfs_root_node(root); in load_super_root()
2666 btrfs_set_root_refs(&root->root_item, 1); in load_super_root()
4114 struct btrfs_root *root) in btrfs_drop_and_free_fs_root() argument
4120 (unsigned long)btrfs_root_id(root)); in btrfs_drop_and_free_fs_root()
4121 if (test_and_clear_bit(BTRFS_ROOT_IN_RADIX, &root->state)) in btrfs_drop_and_free_fs_root()
4126 ASSERT(root->log_root == NULL); in btrfs_drop_and_free_fs_root()
4127 if (root->reloc_root) { in btrfs_drop_and_free_fs_root()
4128 btrfs_put_root(root->reloc_root); in btrfs_drop_and_free_fs_root()
4129 root->reloc_root = NULL; in btrfs_drop_and_free_fs_root()
4134 btrfs_put_root(root); in btrfs_drop_and_free_fs_root()
4530 static void btrfs_destroy_ordered_extents(struct btrfs_root *root) in btrfs_destroy_ordered_extents() argument
4534 spin_lock(&root->ordered_extent_lock); in btrfs_destroy_ordered_extents()
4539 list_for_each_entry(ordered, &root->ordered_extents, in btrfs_destroy_ordered_extents()
4542 spin_unlock(&root->ordered_extent_lock); in btrfs_destroy_ordered_extents()
4547 struct btrfs_root *root; in btrfs_destroy_all_ordered_extents() local
4553 root = list_first_entry(&splice, struct btrfs_root, in btrfs_destroy_all_ordered_extents()
4555 list_move_tail(&root->ordered_root, in btrfs_destroy_all_ordered_extents()
4559 btrfs_destroy_ordered_extents(root); in btrfs_destroy_all_ordered_extents()
4575 static void btrfs_destroy_delalloc_inodes(struct btrfs_root *root) in btrfs_destroy_delalloc_inodes() argument
4580 spin_lock(&root->delalloc_lock); in btrfs_destroy_delalloc_inodes()
4581 list_splice_init(&root->delalloc_inodes, &splice); in btrfs_destroy_delalloc_inodes()
4588 spin_unlock(&root->delalloc_lock); in btrfs_destroy_delalloc_inodes()
4603 spin_lock(&root->delalloc_lock); in btrfs_destroy_delalloc_inodes()
4605 spin_unlock(&root->delalloc_lock); in btrfs_destroy_delalloc_inodes()
4610 struct btrfs_root *root; in btrfs_destroy_all_delalloc_inodes() local
4616 root = list_first_entry(&splice, struct btrfs_root, in btrfs_destroy_all_delalloc_inodes()
4618 root = btrfs_grab_root(root); in btrfs_destroy_all_delalloc_inodes()
4619 BUG_ON(!root); in btrfs_destroy_all_delalloc_inodes()
4622 btrfs_destroy_delalloc_inodes(root); in btrfs_destroy_all_delalloc_inodes()
4623 btrfs_put_root(root); in btrfs_destroy_all_delalloc_inodes()
4769 struct btrfs_root *root = gang[i]; in btrfs_free_all_qgroup_pertrans() local
4771 btrfs_qgroup_free_meta_all_pertrans(root); in btrfs_free_all_qgroup_pertrans()
4773 (unsigned long)btrfs_root_id(root), in btrfs_free_all_qgroup_pertrans()
4864 int btrfs_init_root_free_objectid(struct btrfs_root *root) in btrfs_init_root_free_objectid() argument
4880 ret = btrfs_search_slot(NULL, root, &search_key, path, 0, 0); in btrfs_init_root_free_objectid()
4894 root->free_objectid = max_t(u64, found_key.objectid + 1, in btrfs_init_root_free_objectid()
4897 root->free_objectid = BTRFS_FIRST_FREE_OBJECTID; in btrfs_init_root_free_objectid()
4903 int btrfs_get_free_objectid(struct btrfs_root *root, u64 *objectid) in btrfs_get_free_objectid() argument
4906 mutex_lock(&root->objectid_mutex); in btrfs_get_free_objectid()
4908 if (unlikely(root->free_objectid >= BTRFS_LAST_FREE_OBJECTID)) { in btrfs_get_free_objectid()
4909 btrfs_warn(root->fs_info, in btrfs_get_free_objectid()
4911 btrfs_root_id(root)); in btrfs_get_free_objectid()
4916 *objectid = root->free_objectid++; in btrfs_get_free_objectid()
4919 mutex_unlock(&root->objectid_mutex); in btrfs_get_free_objectid()