Lines Matching refs:root

54 static void btrfs_destroy_ordered_extents(struct btrfs_root *root);
57 static void btrfs_destroy_delalloc_inodes(struct btrfs_root *root);
686 struct btrfs_fs_info *fs_info = BTRFS_I(inode)->root->fs_info; in btrfs_wq_submit_bio()
715 struct btrfs_root *root; in btree_csum_one_bio() local
721 root = BTRFS_I(bvec->bv_page->mapping->host)->root; in btree_csum_one_bio()
722 ret = csum_dirty_buffer(root->fs_info, bvec); in btree_csum_one_bio()
816 fs_info = BTRFS_I(mapping->host)->root->fs_info; in btree_writepages()
843 btrfs_warn(BTRFS_I(folio->mapping->host)->root->fs_info, in btree_invalidate_folio()
967 static void __setup_root(struct btrfs_root *root, struct btrfs_fs_info *fs_info, in __setup_root() argument
972 memset(&root->root_key, 0, sizeof(root->root_key)); in __setup_root()
973 memset(&root->root_item, 0, sizeof(root->root_item)); in __setup_root()
974 memset(&root->defrag_progress, 0, sizeof(root->defrag_progress)); in __setup_root()
975 root->fs_info = fs_info; in __setup_root()
976 root->root_key.objectid = objectid; in __setup_root()
977 root->node = NULL; in __setup_root()
978 root->commit_root = NULL; in __setup_root()
979 root->state = 0; in __setup_root()
980 RB_CLEAR_NODE(&root->rb_node); in __setup_root()
982 root->last_trans = 0; in __setup_root()
983 root->free_objectid = 0; in __setup_root()
984 root->nr_delalloc_inodes = 0; in __setup_root()
985 root->nr_ordered_extents = 0; in __setup_root()
986 root->inode_tree = RB_ROOT; in __setup_root()
987 INIT_RADIX_TREE(&root->delayed_nodes_tree, GFP_ATOMIC); in __setup_root()
989 btrfs_init_root_block_rsv(root); in __setup_root()
991 INIT_LIST_HEAD(&root->dirty_list); in __setup_root()
992 INIT_LIST_HEAD(&root->root_list); in __setup_root()
993 INIT_LIST_HEAD(&root->delalloc_inodes); in __setup_root()
994 INIT_LIST_HEAD(&root->delalloc_root); in __setup_root()
995 INIT_LIST_HEAD(&root->ordered_extents); in __setup_root()
996 INIT_LIST_HEAD(&root->ordered_root); in __setup_root()
997 INIT_LIST_HEAD(&root->reloc_dirty_list); in __setup_root()
998 INIT_LIST_HEAD(&root->logged_list[0]); in __setup_root()
999 INIT_LIST_HEAD(&root->logged_list[1]); in __setup_root()
1000 spin_lock_init(&root->inode_lock); in __setup_root()
1001 spin_lock_init(&root->delalloc_lock); in __setup_root()
1002 spin_lock_init(&root->ordered_extent_lock); in __setup_root()
1003 spin_lock_init(&root->accounting_lock); in __setup_root()
1004 spin_lock_init(&root->log_extents_lock[0]); in __setup_root()
1005 spin_lock_init(&root->log_extents_lock[1]); in __setup_root()
1006 spin_lock_init(&root->qgroup_meta_rsv_lock); in __setup_root()
1007 mutex_init(&root->objectid_mutex); in __setup_root()
1008 mutex_init(&root->log_mutex); in __setup_root()
1009 mutex_init(&root->ordered_extent_mutex); in __setup_root()
1010 mutex_init(&root->delalloc_mutex); in __setup_root()
1011 init_waitqueue_head(&root->qgroup_flush_wait); in __setup_root()
1012 init_waitqueue_head(&root->log_writer_wait); in __setup_root()
1013 init_waitqueue_head(&root->log_commit_wait[0]); in __setup_root()
1014 init_waitqueue_head(&root->log_commit_wait[1]); in __setup_root()
1015 INIT_LIST_HEAD(&root->log_ctxs[0]); in __setup_root()
1016 INIT_LIST_HEAD(&root->log_ctxs[1]); in __setup_root()
1017 atomic_set(&root->log_commit[0], 0); in __setup_root()
1018 atomic_set(&root->log_commit[1], 0); in __setup_root()
1019 atomic_set(&root->log_writers, 0); in __setup_root()
1020 atomic_set(&root->log_batch, 0); in __setup_root()
1021 refcount_set(&root->refs, 1); in __setup_root()
1022 atomic_set(&root->snapshot_force_cow, 0); in __setup_root()
1023 atomic_set(&root->nr_swapfiles, 0); in __setup_root()
1024 root->log_transid = 0; in __setup_root()
1025 root->log_transid_committed = -1; in __setup_root()
1026 root->last_log_commit = 0; in __setup_root()
1027 root->anon_dev = 0; in __setup_root()
1029 extent_io_tree_init(fs_info, &root->dirty_log_pages, in __setup_root()
1031 extent_io_tree_init(fs_info, &root->log_csum_range, in __setup_root()
1035 spin_lock_init(&root->root_item_lock); in __setup_root()
1036 btrfs_qgroup_init_swapped_blocks(&root->swapped_blocks); in __setup_root()
1038 INIT_LIST_HEAD(&root->leak_list); in __setup_root()
1040 list_add_tail(&root->leak_list, &fs_info->allocated_roots); in __setup_root()
1048 struct btrfs_root *root = kzalloc(sizeof(*root), flags); in btrfs_alloc_root() local
1049 if (root) in btrfs_alloc_root()
1050 __setup_root(root, fs_info, objectid); in btrfs_alloc_root()
1051 return root; in btrfs_alloc_root()
1058 struct btrfs_root *root; in btrfs_alloc_dummy_root() local
1063 root = btrfs_alloc_root(fs_info, BTRFS_ROOT_TREE_OBJECTID, GFP_KERNEL); in btrfs_alloc_dummy_root()
1064 if (!root) in btrfs_alloc_dummy_root()
1068 root->alloc_bytenr = 0; in btrfs_alloc_dummy_root()
1070 return root; in btrfs_alloc_dummy_root()
1085 const struct btrfs_root *root = rb_entry(node, struct btrfs_root, rb_node); in global_root_key_cmp() local
1087 return btrfs_comp_cpu_keys(key, &root->root_key); in global_root_key_cmp()
1090 int btrfs_global_root_insert(struct btrfs_root *root) in btrfs_global_root_insert() argument
1092 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_global_root_insert()
1096 tmp = rb_find_add(&root->rb_node, &fs_info->global_root_tree, global_root_cmp); in btrfs_global_root_insert()
1103 void btrfs_global_root_delete(struct btrfs_root *root) in btrfs_global_root_delete() argument
1105 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_global_root_delete()
1108 rb_erase(&root->rb_node, &fs_info->global_root_tree); in btrfs_global_root_delete()
1116 struct btrfs_root *root = NULL; in btrfs_global_root() local
1121 root = container_of(node, struct btrfs_root, rb_node); in btrfs_global_root()
1124 return root; in btrfs_global_root()
1176 struct btrfs_root *root; in btrfs_create_tree() local
1186 root = btrfs_alloc_root(fs_info, objectid, GFP_KERNEL); in btrfs_create_tree()
1188 if (!root) in btrfs_create_tree()
1191 root->root_key.objectid = objectid; in btrfs_create_tree()
1192 root->root_key.type = BTRFS_ROOT_ITEM_KEY; in btrfs_create_tree()
1193 root->root_key.offset = 0; in btrfs_create_tree()
1195 leaf = btrfs_alloc_tree_block(trans, root, 0, objectid, NULL, 0, 0, 0, in btrfs_create_tree()
1203 root->node = leaf; in btrfs_create_tree()
1206 root->commit_root = btrfs_root_node(root); in btrfs_create_tree()
1207 set_bit(BTRFS_ROOT_TRACK_DIRTY, &root->state); in btrfs_create_tree()
1209 btrfs_set_root_flags(&root->root_item, 0); in btrfs_create_tree()
1210 btrfs_set_root_limit(&root->root_item, 0); in btrfs_create_tree()
1211 btrfs_set_root_bytenr(&root->root_item, leaf->start); in btrfs_create_tree()
1212 btrfs_set_root_generation(&root->root_item, trans->transid); in btrfs_create_tree()
1213 btrfs_set_root_level(&root->root_item, 0); in btrfs_create_tree()
1214 btrfs_set_root_refs(&root->root_item, 1); in btrfs_create_tree()
1215 btrfs_set_root_used(&root->root_item, leaf->len); in btrfs_create_tree()
1216 btrfs_set_root_last_snapshot(&root->root_item, 0); in btrfs_create_tree()
1217 btrfs_set_root_dirid(&root->root_item, 0); in btrfs_create_tree()
1219 generate_random_guid(root->root_item.uuid); in btrfs_create_tree()
1221 export_guid(root->root_item.uuid, &guid_null); in btrfs_create_tree()
1222 btrfs_set_root_drop_level(&root->root_item, 0); in btrfs_create_tree()
1229 ret = btrfs_insert_root(trans, tree_root, &key, &root->root_item); in btrfs_create_tree()
1233 return root; in btrfs_create_tree()
1239 btrfs_put_root(root); in btrfs_create_tree()
1247 struct btrfs_root *root; in alloc_log_tree() local
1249 root = btrfs_alloc_root(fs_info, BTRFS_TREE_LOG_OBJECTID, GFP_NOFS); in alloc_log_tree()
1250 if (!root) in alloc_log_tree()
1253 root->root_key.objectid = BTRFS_TREE_LOG_OBJECTID; in alloc_log_tree()
1254 root->root_key.type = BTRFS_ROOT_ITEM_KEY; in alloc_log_tree()
1255 root->root_key.offset = BTRFS_TREE_LOG_OBJECTID; in alloc_log_tree()
1257 return root; in alloc_log_tree()
1261 struct btrfs_root *root) in btrfs_alloc_log_tree_node() argument
1275 leaf = btrfs_alloc_tree_block(trans, root, 0, BTRFS_TREE_LOG_OBJECTID, in btrfs_alloc_log_tree_node()
1280 root->node = leaf; in btrfs_alloc_log_tree_node()
1282 btrfs_mark_buffer_dirty(root->node); in btrfs_alloc_log_tree_node()
1283 btrfs_tree_unlock(root->node); in btrfs_alloc_log_tree_node()
1312 struct btrfs_root *root) in btrfs_add_log_tree() argument
1314 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_add_log_tree()
1330 log_root->root_key.offset = root->root_key.objectid; in btrfs_add_log_tree()
1342 WARN_ON(root->log_root); in btrfs_add_log_tree()
1343 root->log_root = log_root; in btrfs_add_log_tree()
1344 root->log_transid = 0; in btrfs_add_log_tree()
1345 root->log_transid_committed = -1; in btrfs_add_log_tree()
1346 root->last_log_commit = 0; in btrfs_add_log_tree()
1354 struct btrfs_root *root; in read_tree_root_path() local
1360 root = btrfs_alloc_root(fs_info, key->objectid, GFP_NOFS); in read_tree_root_path()
1361 if (!root) in read_tree_root_path()
1365 &root->root_item, &root->root_key); in read_tree_root_path()
1372 generation = btrfs_root_generation(&root->root_item); in read_tree_root_path()
1373 level = btrfs_root_level(&root->root_item); in read_tree_root_path()
1374 root->node = read_tree_block(fs_info, in read_tree_root_path()
1375 btrfs_root_bytenr(&root->root_item), in read_tree_root_path()
1377 if (IS_ERR(root->node)) { in read_tree_root_path()
1378 ret = PTR_ERR(root->node); in read_tree_root_path()
1379 root->node = NULL; in read_tree_root_path()
1382 if (!btrfs_buffer_uptodate(root->node, generation, 0)) { in read_tree_root_path()
1392 root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID && in read_tree_root_path()
1393 root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID && in read_tree_root_path()
1394 root->root_key.objectid != btrfs_header_owner(root->node)) { in read_tree_root_path()
1397 root->root_key.objectid, root->node->start, in read_tree_root_path()
1398 btrfs_header_owner(root->node), in read_tree_root_path()
1399 root->root_key.objectid); in read_tree_root_path()
1403 root->commit_root = btrfs_root_node(root); in read_tree_root_path()
1404 return root; in read_tree_root_path()
1406 btrfs_put_root(root); in read_tree_root_path()
1413 struct btrfs_root *root; in btrfs_read_tree_root() local
1419 root = read_tree_root_path(tree_root, path, key); in btrfs_read_tree_root()
1422 return root; in btrfs_read_tree_root()
1430 static int btrfs_init_fs_root(struct btrfs_root *root, dev_t anon_dev) in btrfs_init_fs_root() argument
1440 ret = btrfs_drew_lock_init(&root->snapshot_lock); in btrfs_init_fs_root()
1445 if (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID && in btrfs_init_fs_root()
1446 !btrfs_is_data_reloc_root(root)) { in btrfs_init_fs_root()
1447 set_bit(BTRFS_ROOT_SHAREABLE, &root->state); in btrfs_init_fs_root()
1448 btrfs_check_and_init_root_item(&root->root_item); in btrfs_init_fs_root()
1455 if (is_fstree(root->root_key.objectid) && in btrfs_init_fs_root()
1456 btrfs_root_refs(&root->root_item) > 0) { in btrfs_init_fs_root()
1458 ret = get_anon_bdev(&root->anon_dev); in btrfs_init_fs_root()
1462 root->anon_dev = anon_dev; in btrfs_init_fs_root()
1466 mutex_lock(&root->objectid_mutex); in btrfs_init_fs_root()
1467 ret = btrfs_init_root_free_objectid(root); in btrfs_init_fs_root()
1469 mutex_unlock(&root->objectid_mutex); in btrfs_init_fs_root()
1473 ASSERT(root->free_objectid <= BTRFS_LAST_FREE_OBJECTID); in btrfs_init_fs_root()
1475 mutex_unlock(&root->objectid_mutex); in btrfs_init_fs_root()
1486 struct btrfs_root *root; in btrfs_lookup_fs_root() local
1489 root = radix_tree_lookup(&fs_info->fs_roots_radix, in btrfs_lookup_fs_root()
1491 if (root) in btrfs_lookup_fs_root()
1492 root = btrfs_grab_root(root); in btrfs_lookup_fs_root()
1494 return root; in btrfs_lookup_fs_root()
1526 struct btrfs_root *root = btrfs_global_root(fs_info, &key); in btrfs_get_global_root() local
1528 return btrfs_grab_root(root) ? root : ERR_PTR(-ENOENT); in btrfs_get_global_root()
1534 struct btrfs_root *root) in btrfs_insert_fs_root() argument
1544 (unsigned long)root->root_key.objectid, in btrfs_insert_fs_root()
1545 root); in btrfs_insert_fs_root()
1547 btrfs_grab_root(root); in btrfs_insert_fs_root()
1548 set_bit(BTRFS_ROOT_IN_RADIX, &root->state); in btrfs_insert_fs_root()
1559 struct btrfs_root *root; in btrfs_check_leaked_roots() local
1564 root = list_first_entry(&fs_info->allocated_roots, in btrfs_check_leaked_roots()
1567 btrfs_root_name(&root->root_key, buf), in btrfs_check_leaked_roots()
1568 refcount_read(&root->refs)); in btrfs_check_leaked_roots()
1569 while (refcount_read(&root->refs) > 1) in btrfs_check_leaked_roots()
1570 btrfs_put_root(root); in btrfs_check_leaked_roots()
1571 btrfs_put_root(root); in btrfs_check_leaked_roots()
1578 struct btrfs_root *root; in free_global_roots() local
1582 root = rb_entry(node, struct btrfs_root, rb_node); in free_global_roots()
1583 rb_erase(&root->rb_node, &fs_info->global_root_tree); in free_global_roots()
1584 btrfs_put_root(root); in free_global_roots()
1639 struct btrfs_root *root; in btrfs_get_root_ref() local
1644 root = btrfs_get_global_root(fs_info, objectid); in btrfs_get_root_ref()
1645 if (root) in btrfs_get_root_ref()
1646 return root; in btrfs_get_root_ref()
1648 root = btrfs_lookup_fs_root(fs_info, objectid); in btrfs_get_root_ref()
1649 if (root) { in btrfs_get_root_ref()
1652 if (check_ref && btrfs_root_refs(&root->root_item) == 0) { in btrfs_get_root_ref()
1653 btrfs_put_root(root); in btrfs_get_root_ref()
1656 return root; in btrfs_get_root_ref()
1662 root = btrfs_read_tree_root(fs_info->tree_root, &key); in btrfs_get_root_ref()
1663 if (IS_ERR(root)) in btrfs_get_root_ref()
1664 return root; in btrfs_get_root_ref()
1666 if (check_ref && btrfs_root_refs(&root->root_item) == 0) { in btrfs_get_root_ref()
1671 ret = btrfs_init_fs_root(root, anon_dev); in btrfs_get_root_ref()
1689 set_bit(BTRFS_ROOT_ORPHAN_ITEM_INSERTED, &root->state); in btrfs_get_root_ref()
1691 ret = btrfs_insert_fs_root(fs_info, root); in btrfs_get_root_ref()
1694 btrfs_put_root(root); in btrfs_get_root_ref()
1699 return root; in btrfs_get_root_ref()
1708 root->anon_dev = 0; in btrfs_get_root_ref()
1709 btrfs_put_root(root); in btrfs_get_root_ref()
1758 struct btrfs_root *root; in btrfs_get_fs_root_commit_root() local
1769 root = btrfs_get_global_root(fs_info, objectid); in btrfs_get_fs_root_commit_root()
1770 if (root) in btrfs_get_fs_root_commit_root()
1771 return root; in btrfs_get_fs_root_commit_root()
1773 root = btrfs_lookup_fs_root(fs_info, objectid); in btrfs_get_fs_root_commit_root()
1774 if (root) in btrfs_get_fs_root_commit_root()
1775 return root; in btrfs_get_fs_root_commit_root()
1780 root = read_tree_root_path(fs_info->tree_root, path, &key); in btrfs_get_fs_root_commit_root()
1783 return root; in btrfs_get_fs_root_commit_root()
1862 struct btrfs_root *root = arg; in transaction_kthread() local
1863 struct btrfs_fs_info *fs_info = root->fs_info; in transaction_kthread()
1897 trans = btrfs_attach_transaction(root); in transaction_kthread()
2110 static void free_root_extent_buffers(struct btrfs_root *root) in free_root_extent_buffers() argument
2112 if (root) { in free_root_extent_buffers()
2113 free_extent_buffer(root->node); in free_root_extent_buffers()
2114 free_extent_buffer(root->commit_root); in free_root_extent_buffers()
2115 root->node = NULL; in free_root_extent_buffers()
2116 root->commit_root = NULL; in free_root_extent_buffers()
2122 struct btrfs_root *root, *tmp; in free_global_root_pointers() local
2124 rbtree_postorder_for_each_entry_safe(root, tmp, in free_global_root_pointers()
2127 free_root_extent_buffers(root); in free_global_root_pointers()
2146 void btrfs_put_root(struct btrfs_root *root) in btrfs_put_root() argument
2148 if (!root) in btrfs_put_root()
2151 if (refcount_dec_and_test(&root->refs)) { in btrfs_put_root()
2152 WARN_ON(!RB_EMPTY_ROOT(&root->inode_tree)); in btrfs_put_root()
2153 WARN_ON(test_bit(BTRFS_ROOT_DEAD_RELOC_TREE, &root->state)); in btrfs_put_root()
2154 if (root->anon_dev) in btrfs_put_root()
2155 free_anon_bdev(root->anon_dev); in btrfs_put_root()
2156 btrfs_drew_lock_destroy(&root->snapshot_lock); in btrfs_put_root()
2157 free_root_extent_buffers(root); in btrfs_put_root()
2159 spin_lock(&root->fs_info->fs_roots_radix_lock); in btrfs_put_root()
2160 list_del_init(&root->leak_list); in btrfs_put_root()
2161 spin_unlock(&root->fs_info->fs_roots_radix_lock); in btrfs_put_root()
2163 kfree(root); in btrfs_put_root()
2237 BTRFS_I(inode)->root = btrfs_grab_root(fs_info->tree_root); in btrfs_init_btree_inode()
2408 struct btrfs_root *root; in load_global_roots_objectid() local
2453 root = read_tree_root_path(tree_root, path, &key); in load_global_roots_objectid()
2454 if (IS_ERR(root)) { in load_global_roots_objectid()
2456 ret = PTR_ERR(root); in load_global_roots_objectid()
2459 set_bit(BTRFS_ROOT_TRACK_DIRTY, &root->state); in load_global_roots_objectid()
2460 ret = btrfs_global_root_insert(root); in load_global_roots_objectid()
2462 btrfs_put_root(root); in load_global_roots_objectid()
2515 struct btrfs_root *root; in btrfs_read_roots() local
2530 root = btrfs_read_tree_root(tree_root, &location); in btrfs_read_roots()
2531 if (IS_ERR(root)) { in btrfs_read_roots()
2533 ret = PTR_ERR(root); in btrfs_read_roots()
2537 set_bit(BTRFS_ROOT_TRACK_DIRTY, &root->state); in btrfs_read_roots()
2538 fs_info->block_group_root = root; in btrfs_read_roots()
2543 root = btrfs_read_tree_root(tree_root, &location); in btrfs_read_roots()
2544 if (IS_ERR(root)) { in btrfs_read_roots()
2546 ret = PTR_ERR(root); in btrfs_read_roots()
2550 set_bit(BTRFS_ROOT_TRACK_DIRTY, &root->state); in btrfs_read_roots()
2551 fs_info->dev_root = root; in btrfs_read_roots()
2562 root = btrfs_get_fs_root(tree_root->fs_info, in btrfs_read_roots()
2564 if (IS_ERR(root)) { in btrfs_read_roots()
2566 ret = PTR_ERR(root); in btrfs_read_roots()
2570 set_bit(BTRFS_ROOT_TRACK_DIRTY, &root->state); in btrfs_read_roots()
2571 fs_info->data_reloc_root = root; in btrfs_read_roots()
2575 root = btrfs_read_tree_root(tree_root, &location); in btrfs_read_roots()
2576 if (!IS_ERR(root)) { in btrfs_read_roots()
2577 set_bit(BTRFS_ROOT_TRACK_DIRTY, &root->state); in btrfs_read_roots()
2579 fs_info->quota_root = root; in btrfs_read_roots()
2583 root = btrfs_read_tree_root(tree_root, &location); in btrfs_read_roots()
2584 if (IS_ERR(root)) { in btrfs_read_roots()
2586 ret = PTR_ERR(root); in btrfs_read_roots()
2591 set_bit(BTRFS_ROOT_TRACK_DIRTY, &root->state); in btrfs_read_roots()
2592 fs_info->uuid_root = root; in btrfs_read_roots()
2847 static int load_super_root(struct btrfs_root *root, u64 bytenr, u64 gen, int level) in load_super_root() argument
2851 root->node = read_tree_block(root->fs_info, bytenr, in load_super_root()
2852 root->root_key.objectid, gen, level, NULL); in load_super_root()
2853 if (IS_ERR(root->node)) { in load_super_root()
2854 ret = PTR_ERR(root->node); in load_super_root()
2855 root->node = NULL; in load_super_root()
2858 if (!extent_buffer_uptodate(root->node)) { in load_super_root()
2859 free_extent_buffer(root->node); in load_super_root()
2860 root->node = NULL; in load_super_root()
2864 btrfs_set_root_node(&root->root_item, root->node); in load_super_root()
2865 root->commit_root = btrfs_root_node(root); in load_super_root()
2866 btrfs_set_root_refs(&root->root_item, 1); in load_super_root()
4409 struct btrfs_root *root) in btrfs_drop_and_free_fs_root() argument
4415 (unsigned long)root->root_key.objectid); in btrfs_drop_and_free_fs_root()
4416 if (test_and_clear_bit(BTRFS_ROOT_IN_RADIX, &root->state)) in btrfs_drop_and_free_fs_root()
4421 ASSERT(root->log_root == NULL); in btrfs_drop_and_free_fs_root()
4422 if (root->reloc_root) { in btrfs_drop_and_free_fs_root()
4423 btrfs_put_root(root->reloc_root); in btrfs_drop_and_free_fs_root()
4424 root->reloc_root = NULL; in btrfs_drop_and_free_fs_root()
4429 btrfs_put_root(root); in btrfs_drop_and_free_fs_root()
4484 struct btrfs_root *root = fs_info->tree_root; in btrfs_commit_super() local
4496 trans = btrfs_join_transaction(root); in btrfs_commit_super()
4854 static void btrfs_destroy_ordered_extents(struct btrfs_root *root) in btrfs_destroy_ordered_extents() argument
4858 spin_lock(&root->ordered_extent_lock); in btrfs_destroy_ordered_extents()
4863 list_for_each_entry(ordered, &root->ordered_extents, in btrfs_destroy_ordered_extents()
4866 spin_unlock(&root->ordered_extent_lock); in btrfs_destroy_ordered_extents()
4871 struct btrfs_root *root; in btrfs_destroy_all_ordered_extents() local
4879 root = list_first_entry(&splice, struct btrfs_root, in btrfs_destroy_all_ordered_extents()
4881 list_move_tail(&root->ordered_root, in btrfs_destroy_all_ordered_extents()
4885 btrfs_destroy_ordered_extents(root); in btrfs_destroy_all_ordered_extents()
4981 static void btrfs_destroy_delalloc_inodes(struct btrfs_root *root) in btrfs_destroy_delalloc_inodes() argument
4988 spin_lock(&root->delalloc_lock); in btrfs_destroy_delalloc_inodes()
4989 list_splice_init(&root->delalloc_inodes, &splice); in btrfs_destroy_delalloc_inodes()
4995 __btrfs_del_delalloc_inode(root, btrfs_inode); in btrfs_destroy_delalloc_inodes()
4996 spin_unlock(&root->delalloc_lock); in btrfs_destroy_delalloc_inodes()
5007 spin_lock(&root->delalloc_lock); in btrfs_destroy_delalloc_inodes()
5009 spin_unlock(&root->delalloc_lock); in btrfs_destroy_delalloc_inodes()
5014 struct btrfs_root *root; in btrfs_destroy_all_delalloc_inodes() local
5022 root = list_first_entry(&splice, struct btrfs_root, in btrfs_destroy_all_delalloc_inodes()
5024 root = btrfs_grab_root(root); in btrfs_destroy_all_delalloc_inodes()
5025 BUG_ON(!root); in btrfs_destroy_all_delalloc_inodes()
5028 btrfs_destroy_delalloc_inodes(root); in btrfs_destroy_all_delalloc_inodes()
5029 btrfs_put_root(root); in btrfs_destroy_all_delalloc_inodes()
5252 int btrfs_init_root_free_objectid(struct btrfs_root *root) in btrfs_init_root_free_objectid() argument
5268 ret = btrfs_search_slot(NULL, root, &search_key, path, 0, 0); in btrfs_init_root_free_objectid()
5276 root->free_objectid = max_t(u64, found_key.objectid + 1, in btrfs_init_root_free_objectid()
5279 root->free_objectid = BTRFS_FIRST_FREE_OBJECTID; in btrfs_init_root_free_objectid()
5287 int btrfs_get_free_objectid(struct btrfs_root *root, u64 *objectid) in btrfs_get_free_objectid() argument
5290 mutex_lock(&root->objectid_mutex); in btrfs_get_free_objectid()
5292 if (unlikely(root->free_objectid >= BTRFS_LAST_FREE_OBJECTID)) { in btrfs_get_free_objectid()
5293 btrfs_warn(root->fs_info, in btrfs_get_free_objectid()
5295 root->root_key.objectid); in btrfs_get_free_objectid()
5300 *objectid = root->free_objectid++; in btrfs_get_free_objectid()
5303 mutex_unlock(&root->objectid_mutex); in btrfs_get_free_objectid()