Lines Matching refs:root
67 struct btrfs_root *root; member
183 struct btrfs_root *root, struct inode *inode, in insert_inline_extent() argument
212 ret = btrfs_insert_empty_item(trans, root, path, &key, in insert_inline_extent()
268 ret = btrfs_update_inode(trans, root, inode); in insert_inline_extent()
280 static noinline int cow_file_range_inline(struct btrfs_root *root, in cow_file_range_inline() argument
286 struct btrfs_fs_info *fs_info = root->fs_info; in cow_file_range_inline()
315 trans = btrfs_join_transaction(root); in cow_file_range_inline()
329 ret = __btrfs_drop_extents(trans, root, inode, path, in cow_file_range_inline()
340 root, inode, start, in cow_file_range_inline()
379 struct btrfs_root *root; member
482 struct btrfs_root *root = BTRFS_I(inode)->root; in compress_file_range() local
600 ret = cow_file_range_inline(root, inode, start, end, in compress_file_range()
604 ret = cow_file_range_inline(root, inode, start, end, in compress_file_range()
750 struct btrfs_root *root = BTRFS_I(inode)->root; in submit_compressed_extents() local
807 ret = btrfs_reserve_extent(root, async_extent->ram_size, in submit_compressed_extents()
977 struct btrfs_root *root = BTRFS_I(inode)->root; in cow_file_range() local
1005 ret = cow_file_range_inline(root, inode, start, end, 0, in cow_file_range()
1035 ret = btrfs_reserve_extent(root, cur_alloc_size, cur_alloc_size, in cow_file_range()
1063 if (root->root_key.objectid == in cow_file_range()
1183 struct btrfs_root *root; in async_cow_submit() local
1188 root = async_cow->root; in async_cow_submit()
1189 fs_info = root->fs_info; in async_cow_submit()
1220 struct btrfs_root *root = BTRFS_I(inode)->root; in cow_file_range_async() local
1230 async_cow->root = root; in cow_file_range_async()
1303 struct btrfs_root *root = BTRFS_I(inode)->root; in run_delalloc_nocow() local
1343 ret = btrfs_lookup_file_extent(NULL, root, path, ino, in run_delalloc_nocow()
1359 ret = btrfs_next_leaf(root, path); in run_delalloc_nocow()
1419 ret = btrfs_cross_ref_exist(root, ino, in run_delalloc_nocow()
1444 err = btrfs_start_write_no_snapshotting(root); in run_delalloc_nocow()
1457 btrfs_end_write_no_snapshotting(root); in run_delalloc_nocow()
1473 btrfs_end_write_no_snapshotting(root); in run_delalloc_nocow()
1489 btrfs_end_write_no_snapshotting(root); in run_delalloc_nocow()
1512 btrfs_end_write_no_snapshotting(root); in run_delalloc_nocow()
1533 btrfs_end_write_no_snapshotting(root); in run_delalloc_nocow()
1555 if (root->root_key.objectid == in run_delalloc_nocow()
1573 btrfs_end_write_no_snapshotting(root); in run_delalloc_nocow()
1757 static void btrfs_add_delalloc_inodes(struct btrfs_root *root, in btrfs_add_delalloc_inodes() argument
1762 spin_lock(&root->delalloc_lock); in btrfs_add_delalloc_inodes()
1765 &root->delalloc_inodes); in btrfs_add_delalloc_inodes()
1768 root->nr_delalloc_inodes++; in btrfs_add_delalloc_inodes()
1769 if (root->nr_delalloc_inodes == 1) { in btrfs_add_delalloc_inodes()
1771 BUG_ON(!list_empty(&root->delalloc_root)); in btrfs_add_delalloc_inodes()
1772 list_add_tail(&root->delalloc_root, in btrfs_add_delalloc_inodes()
1777 spin_unlock(&root->delalloc_lock); in btrfs_add_delalloc_inodes()
1781 void __btrfs_del_delalloc_inode(struct btrfs_root *root, in __btrfs_del_delalloc_inode() argument
1790 root->nr_delalloc_inodes--; in __btrfs_del_delalloc_inode()
1791 if (!root->nr_delalloc_inodes) { in __btrfs_del_delalloc_inode()
1793 BUG_ON(list_empty(&root->delalloc_root)); in __btrfs_del_delalloc_inode()
1794 list_del_init(&root->delalloc_root); in __btrfs_del_delalloc_inode()
1800 static void btrfs_del_delalloc_inode(struct btrfs_root *root, in btrfs_del_delalloc_inode() argument
1803 spin_lock(&root->delalloc_lock); in btrfs_del_delalloc_inode()
1804 __btrfs_del_delalloc_inode(root, inode); in btrfs_del_delalloc_inode()
1805 spin_unlock(&root->delalloc_lock); in btrfs_del_delalloc_inode()
1828 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_set_bit_hook() local
1852 btrfs_add_delalloc_inodes(root, inode); in btrfs_set_bit_hook()
1889 struct btrfs_root *root = inode->root; in btrfs_clear_bit_hook() local
1906 root != fs_info->tree_root) in btrfs_clear_bit_hook()
1913 if (root->root_key.objectid != BTRFS_DATA_RELOC_TREE_OBJECTID && in btrfs_clear_bit_hook()
1927 btrfs_del_delalloc_inode(root, inode); in btrfs_clear_bit_hook()
2027 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_submit_bio_hook() local
2056 if (root->root_key.objectid == BTRFS_DATA_RELOC_TREE_OBJECTID) in btrfs_submit_bio_hook()
2093 BTRFS_I(inode)->root->fs_info->csum_root, sum); in add_pending_csums()
2230 struct btrfs_root *root = BTRFS_I(inode)->root; in insert_reserved_file_extent() local
2252 ret = __btrfs_drop_extents(trans, root, inode, path, file_pos, in insert_reserved_file_extent()
2264 ret = btrfs_insert_empty_item(trans, root, path, &ins, in insert_reserved_file_extent()
2300 ret = btrfs_alloc_reserved_file_extent(trans, root->root_key.objectid, in insert_reserved_file_extent()
2332 struct rb_root root; member
2376 static void backref_insert(struct rb_root *root, in backref_insert() argument
2379 struct rb_node **p = &root->rb_node; in backref_insert()
2396 rb_insert_color(&backref->node, root); in backref_insert()
2410 struct btrfs_root *root; in record_one_backref() local
2420 if (BTRFS_I(inode)->root->root_key.objectid == root_id && in record_one_backref()
2428 root = btrfs_read_fs_root_no_name(fs_info, &key); in record_one_backref()
2429 if (IS_ERR(root)) { in record_one_backref()
2430 if (PTR_ERR(root) == -ENOENT) in record_one_backref()
2435 return PTR_ERR(root); in record_one_backref()
2445 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in record_one_backref()
2457 ret = btrfs_next_leaf(root, path); in record_one_backref()
2514 backref_insert(&new->root, backref); in record_one_backref()
2583 struct btrfs_root *root; in relink_extent_backref() local
2611 root = btrfs_read_fs_root_no_name(fs_info, &key); in relink_extent_backref()
2612 if (IS_ERR(root)) { in relink_extent_backref()
2614 if (PTR_ERR(root) == -ENOENT) in relink_extent_backref()
2616 return PTR_ERR(root); in relink_extent_backref()
2619 if (btrfs_root_readonly(root)) { in relink_extent_backref()
2629 inode = btrfs_iget(fs_info->sb, &key, root, NULL); in relink_extent_backref()
2649 trans = btrfs_join_transaction(root); in relink_extent_backref()
2659 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in relink_extent_backref()
2685 ret = btrfs_drop_extents(trans, root, inode, start, in relink_extent_backref()
2700 ret = btrfs_search_slot(trans, root, &key, path, 0, 1); in relink_extent_backref()
2728 ret = btrfs_insert_empty_item(trans, root, path, &key, in relink_extent_backref()
2794 struct btrfs_root *root; in relink_file_extents() local
2799 root = BTRFS_I(inode)->root; in relink_file_extents()
2812 node = rb_first(&new->root); in relink_file_extents()
2815 rb_erase(node, &new->root); in relink_file_extents()
2845 struct btrfs_root *root = BTRFS_I(inode)->root; in record_old_file_extents() local
2862 new->root = RB_ROOT; in record_old_file_extents()
2873 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in record_old_file_extents()
2894 ret = btrfs_next_leaf(root, path); in record_old_file_extents()
2977 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_finish_ordered_io() local
3028 trans = btrfs_join_transaction_nolock(root); in btrfs_finish_ordered_io()
3030 trans = btrfs_join_transaction(root); in btrfs_finish_ordered_io()
3037 ret = btrfs_update_inode_fallback(trans, root, inode); in btrfs_finish_ordered_io()
3052 u64 last_snapshot = btrfs_root_last_snapshot(&root->root_item); in btrfs_finish_ordered_io()
3063 trans = btrfs_join_transaction_nolock(root); in btrfs_finish_ordered_io()
3065 trans = btrfs_join_transaction(root); in btrfs_finish_ordered_io()
3085 BUG_ON(root == fs_info->tree_root); in btrfs_finish_ordered_io()
3111 ret = btrfs_update_inode_fallback(trans, root, inode); in btrfs_finish_ordered_io()
3134 if (root != fs_info->tree_root) in btrfs_finish_ordered_io()
3273 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_readpage_end_io_hook() local
3283 if (root->root_key.objectid == BTRFS_DATA_RELOC_TREE_OBJECTID && in btrfs_readpage_end_io_hook()
3341 struct btrfs_root *root) in btrfs_orphan_commit_root() argument
3343 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_orphan_commit_root()
3347 if (atomic_read(&root->orphan_inodes) || in btrfs_orphan_commit_root()
3348 root->orphan_cleanup_state != ORPHAN_CLEANUP_DONE) in btrfs_orphan_commit_root()
3351 spin_lock(&root->orphan_lock); in btrfs_orphan_commit_root()
3352 if (atomic_read(&root->orphan_inodes)) { in btrfs_orphan_commit_root()
3353 spin_unlock(&root->orphan_lock); in btrfs_orphan_commit_root()
3357 if (root->orphan_cleanup_state != ORPHAN_CLEANUP_DONE) { in btrfs_orphan_commit_root()
3358 spin_unlock(&root->orphan_lock); in btrfs_orphan_commit_root()
3362 block_rsv = root->orphan_block_rsv; in btrfs_orphan_commit_root()
3363 root->orphan_block_rsv = NULL; in btrfs_orphan_commit_root()
3364 spin_unlock(&root->orphan_lock); in btrfs_orphan_commit_root()
3366 if (test_bit(BTRFS_ROOT_ORPHAN_ITEM_INSERTED, &root->state) && in btrfs_orphan_commit_root()
3367 btrfs_root_refs(&root->root_item) > 0) { in btrfs_orphan_commit_root()
3369 root->root_key.objectid); in btrfs_orphan_commit_root()
3374 &root->state); in btrfs_orphan_commit_root()
3394 struct btrfs_root *root = inode->root; in btrfs_orphan_add() local
3400 if (!root->orphan_block_rsv) { in btrfs_orphan_add()
3407 spin_lock(&root->orphan_lock); in btrfs_orphan_add()
3408 if (!root->orphan_block_rsv) { in btrfs_orphan_add()
3409 root->orphan_block_rsv = block_rsv; in btrfs_orphan_add()
3423 if (!xchg(&root->orphan_item_inserted, 1)) in btrfs_orphan_add()
3429 atomic_inc(&root->orphan_inodes); in btrfs_orphan_add()
3435 spin_unlock(&root->orphan_lock); in btrfs_orphan_add()
3447 atomic_dec(&root->orphan_inodes); in btrfs_orphan_add()
3459 ret = btrfs_insert_orphan_item(trans, root, btrfs_ino(inode)); in btrfs_orphan_add()
3471 atomic_dec(&root->orphan_inodes); in btrfs_orphan_add()
3485 root->root_key.objectid); in btrfs_orphan_add()
3501 struct btrfs_root *root = inode->root; in btrfs_orphan_del() local
3510 ret = btrfs_del_orphan_item(trans, root, btrfs_ino(inode)); in btrfs_orphan_del()
3522 atomic_dec(&root->orphan_inodes); in btrfs_orphan_del()
3531 int btrfs_orphan_cleanup(struct btrfs_root *root) in btrfs_orphan_cleanup() argument
3533 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_orphan_cleanup()
3542 if (cmpxchg(&root->orphan_cleanup_state, 0, ORPHAN_CLEANUP_STARTED)) in btrfs_orphan_cleanup()
3557 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in btrfs_orphan_cleanup()
3604 inode = btrfs_iget(fs_info->sb, &found_key, root, NULL); in btrfs_orphan_cleanup()
3609 if (ret == -ENOENT && root == fs_info->tree_root) { in btrfs_orphan_cleanup()
3611 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_orphan_cleanup()
3646 trans = btrfs_start_transaction(root, 1); in btrfs_orphan_cleanup()
3653 ret = btrfs_del_orphan_item(trans, root, in btrfs_orphan_cleanup()
3667 atomic_inc(&root->orphan_inodes); in btrfs_orphan_cleanup()
3678 trans = btrfs_start_transaction(root, 1); in btrfs_orphan_cleanup()
3706 root->orphan_cleanup_state = ORPHAN_CLEANUP_DONE; in btrfs_orphan_cleanup()
3708 if (root->orphan_block_rsv) in btrfs_orphan_cleanup()
3709 btrfs_block_rsv_release(fs_info, root->orphan_block_rsv, in btrfs_orphan_cleanup()
3712 if (root->orphan_block_rsv || in btrfs_orphan_cleanup()
3713 test_bit(BTRFS_ROOT_ORPHAN_ITEM_INSERTED, &root->state)) { in btrfs_orphan_cleanup()
3714 trans = btrfs_join_transaction(root); in btrfs_orphan_cleanup()
3809 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_read_locked_inode() local
3830 ret = btrfs_lookup_inode(NULL, root, path, &location, 0); in btrfs_read_locked_inode()
3970 root->root_key.objectid, ret); in btrfs_read_locked_inode()
4062 struct btrfs_root *root, struct inode *inode) in btrfs_update_inode_item() argument
4074 ret = btrfs_lookup_inode(trans, root, path, &BTRFS_I(inode)->location, in btrfs_update_inode_item()
4099 struct btrfs_root *root, struct inode *inode) in btrfs_update_inode() argument
4101 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_update_inode()
4112 && root->root_key.objectid != BTRFS_DATA_RELOC_TREE_OBJECTID in btrfs_update_inode()
4114 btrfs_update_root_times(trans, root); in btrfs_update_inode()
4116 ret = btrfs_delayed_update_inode(trans, root, inode); in btrfs_update_inode()
4122 return btrfs_update_inode_item(trans, root, inode); in btrfs_update_inode()
4126 struct btrfs_root *root, in btrfs_update_inode_fallback() argument
4131 ret = btrfs_update_inode(trans, root, inode); in btrfs_update_inode_fallback()
4133 return btrfs_update_inode_item(trans, root, inode); in btrfs_update_inode_fallback()
4143 struct btrfs_root *root, in __btrfs_unlink_inode() argument
4148 struct btrfs_fs_info *fs_info = root->fs_info; in __btrfs_unlink_inode()
4165 di = btrfs_lookup_dir_item(trans, root, path, dir_ino, in __btrfs_unlink_inode()
4177 ret = btrfs_delete_one_dir_name(trans, root, path, di); in __btrfs_unlink_inode()
4200 ret = btrfs_del_inode_ref(trans, root, name, name_len, ino, in __btrfs_unlink_inode()
4216 ret = btrfs_del_inode_ref_in_log(trans, root, name, name_len, inode, in __btrfs_unlink_inode()
4223 ret = btrfs_del_dir_entries_in_log(trans, root, name, name_len, dir, in __btrfs_unlink_inode()
4239 ret = btrfs_update_inode(trans, root, &dir->vfs_inode); in __btrfs_unlink_inode()
4245 struct btrfs_root *root, in btrfs_unlink_inode() argument
4250 ret = __btrfs_unlink_inode(trans, root, dir, inode, name, name_len); in btrfs_unlink_inode()
4253 ret = btrfs_update_inode(trans, root, &inode->vfs_inode); in btrfs_unlink_inode()
4268 struct btrfs_root *root = BTRFS_I(dir)->root; in __unlink_start_trans() local
4277 return btrfs_start_transaction_fallback_global_rsv(root, 5, 5); in __unlink_start_trans()
4282 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_unlink() local
4294 ret = btrfs_unlink_inode(trans, root, BTRFS_I(dir), in btrfs_unlink()
4308 btrfs_btree_balance_dirty(root->fs_info); in btrfs_unlink()
4313 struct btrfs_root *root, in btrfs_unlink_subvol() argument
4317 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_unlink_subvol()
4330 di = btrfs_lookup_dir_item(trans, root, path, dir_ino, in btrfs_unlink_subvol()
4343 ret = btrfs_delete_one_dir_name(trans, root, path, di); in btrfs_unlink_subvol()
4351 root->root_key.objectid, dir_ino, in btrfs_unlink_subvol()
4358 di = btrfs_search_dir_index_item(root, path, dir_ino, in btrfs_unlink_subvol()
4385 ret = btrfs_update_inode_fallback(trans, root, dir); in btrfs_unlink_subvol()
4397 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_rmdir() local
4411 err = btrfs_unlink_subvol(trans, root, dir, in btrfs_rmdir()
4425 err = btrfs_unlink_inode(trans, root, BTRFS_I(dir), in btrfs_rmdir()
4446 btrfs_btree_balance_dirty(root->fs_info); in btrfs_rmdir()
4452 struct btrfs_root *root, in truncate_space_check() argument
4455 struct btrfs_fs_info *fs_info = root->fs_info; in truncate_space_check()
4464 ret = btrfs_block_rsv_add(root, &fs_info->trans_block_rsv, in truncate_space_check()
4486 struct btrfs_root *root = BTRFS_I(inode)->root; in truncate_inline_extent() local
4510 btrfs_truncate_item(root->fs_info, path, size, 1); in truncate_inline_extent()
4512 if (test_bit(BTRFS_ROOT_REF_COWS, &root->state)) in truncate_inline_extent()
4530 struct btrfs_root *root, in btrfs_truncate_inode_items() argument
4534 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_truncate_inode_items()
4566 test_bit(BTRFS_ROOT_REF_COWS, &root->state)) in btrfs_truncate_inode_items()
4579 if (test_bit(BTRFS_ROOT_REF_COWS, &root->state) || in btrfs_truncate_inode_items()
4580 root == fs_info->tree_root) in btrfs_truncate_inode_items()
4591 if (min_type == 0 && root == BTRFS_I(inode)->root) in btrfs_truncate_inode_items()
4613 ret = btrfs_search_slot(trans, root, &key, path, -1, 1); in btrfs_truncate_inode_items()
4696 &root->state) && in btrfs_truncate_inode_items()
4712 &root->state)) in btrfs_truncate_inode_items()
4732 err = btrfs_del_items(trans, root, path, in btrfs_truncate_inode_items()
4752 &root->state)) { in btrfs_truncate_inode_items()
4776 (test_bit(BTRFS_ROOT_REF_COWS, &root->state) || in btrfs_truncate_inode_items()
4777 root == fs_info->tree_root)) { in btrfs_truncate_inode_items()
4793 if (truncate_space_check(trans, root, in btrfs_truncate_inode_items()
4810 ret = btrfs_del_items(trans, root, path, in btrfs_truncate_inode_items()
4846 ret = btrfs_del_items(trans, root, path, pending_del_slot, in btrfs_truncate_inode_items()
4852 if (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID) { in btrfs_truncate_inode_items()
4997 static int maybe_insert_hole(struct btrfs_root *root, struct inode *inode, in maybe_insert_hole() argument
5010 BTRFS_I(inode)->last_sub_trans = root->log_transid; in maybe_insert_hole()
5011 BTRFS_I(inode)->last_log_commit = root->last_log_commit; in maybe_insert_hole()
5020 trans = btrfs_start_transaction(root, 3); in maybe_insert_hole()
5024 ret = btrfs_drop_extents(trans, root, inode, offset, offset + len, 1); in maybe_insert_hole()
5031 ret = btrfs_insert_file_extent(trans, root, btrfs_ino(BTRFS_I(inode)), in maybe_insert_hole()
5036 btrfs_update_inode(trans, root, inode); in maybe_insert_hole()
5050 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_cont_expand() local
5104 err = maybe_insert_hole(root, inode, cur_offset, in btrfs_cont_expand()
5156 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_setsize() local
5184 btrfs_wait_for_snapshot_creation(root); in btrfs_setsize()
5187 btrfs_end_write_no_snapshotting(root); in btrfs_setsize()
5191 trans = btrfs_start_transaction(root, 1); in btrfs_setsize()
5193 btrfs_end_write_no_snapshotting(root); in btrfs_setsize()
5200 ret = btrfs_update_inode(trans, root, inode); in btrfs_setsize()
5201 btrfs_end_write_no_snapshotting(root); in btrfs_setsize()
5218 trans = btrfs_start_transaction(root, 2); in btrfs_setsize()
5262 trans = btrfs_join_transaction(root); in btrfs_setsize()
5281 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_setattr() local
5284 if (btrfs_root_readonly(root)) in btrfs_setattr()
5408 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_evict_inode() local
5416 if (!root) { in btrfs_evict_inode()
5426 ((btrfs_root_refs(&root->root_item) != 0 && in btrfs_evict_inode()
5427 root->root_key.objectid != BTRFS_ROOT_TREE_OBJECTID) || in btrfs_evict_inode()
5448 BUG_ON(btrfs_root_refs(&root->root_item) != 0 && in btrfs_evict_inode()
5449 root->root_key.objectid != BTRFS_ROOT_TREE_OBJECTID); in btrfs_evict_inode()
5477 ret = btrfs_block_rsv_refill(root, rsv, min_size, in btrfs_evict_inode()
5508 trans = btrfs_join_transaction(root); in btrfs_evict_inode()
5547 ret = btrfs_truncate_inode_items(trans, root, inode, 0, 0); in btrfs_evict_inode()
5568 trans->block_rsv = root->orphan_block_rsv; in btrfs_evict_inode()
5572 if (!(root == fs_info->tree_root || in btrfs_evict_inode()
5573 root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID)) in btrfs_evict_inode()
5574 btrfs_return_ino(root, btrfs_ino(BTRFS_I(inode))); in btrfs_evict_inode()
5594 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_inode_by_name() local
5601 di = btrfs_lookup_dir_item(NULL, root, path, btrfs_ino(BTRFS_I(dir)), in btrfs_inode_by_name()
5612 btrfs_warn(root->fs_info, in btrfs_inode_by_name()
5652 key.objectid = BTRFS_I(dir)->root->root_key.objectid; in fixup_tree_root_location()
5695 struct btrfs_root *root = BTRFS_I(inode)->root; in inode_tree_add() local
5705 spin_lock(&root->inode_lock); in inode_tree_add()
5706 p = &root->inode_tree.rb_node; in inode_tree_add()
5718 rb_replace_node(parent, new, &root->inode_tree); in inode_tree_add()
5720 spin_unlock(&root->inode_lock); in inode_tree_add()
5725 rb_insert_color(new, &root->inode_tree); in inode_tree_add()
5726 spin_unlock(&root->inode_lock); in inode_tree_add()
5731 struct btrfs_root *root = BTRFS_I(inode)->root; in inode_tree_del() local
5734 spin_lock(&root->inode_lock); in inode_tree_del()
5736 rb_erase(&BTRFS_I(inode)->rb_node, &root->inode_tree); in inode_tree_del()
5738 empty = RB_EMPTY_ROOT(&root->inode_tree); in inode_tree_del()
5740 spin_unlock(&root->inode_lock); in inode_tree_del()
5742 if (empty && btrfs_root_refs(&root->root_item) == 0) { in inode_tree_del()
5743 spin_lock(&root->inode_lock); in inode_tree_del()
5744 empty = RB_EMPTY_ROOT(&root->inode_tree); in inode_tree_del()
5745 spin_unlock(&root->inode_lock); in inode_tree_del()
5747 btrfs_add_dead_root(root); in inode_tree_del()
5751 void btrfs_invalidate_inodes(struct btrfs_root *root) in btrfs_invalidate_inodes() argument
5753 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_invalidate_inodes()
5761 WARN_ON(btrfs_root_refs(&root->root_item) != 0); in btrfs_invalidate_inodes()
5763 spin_lock(&root->inode_lock); in btrfs_invalidate_inodes()
5765 node = root->inode_tree.rb_node; in btrfs_invalidate_inodes()
5793 spin_unlock(&root->inode_lock); in btrfs_invalidate_inodes()
5803 spin_lock(&root->inode_lock); in btrfs_invalidate_inodes()
5807 if (cond_resched_lock(&root->inode_lock)) in btrfs_invalidate_inodes()
5812 spin_unlock(&root->inode_lock); in btrfs_invalidate_inodes()
5821 BTRFS_I(inode)->root = args->root; in btrfs_init_locked_inode()
5829 args->root == BTRFS_I(inode)->root; in btrfs_find_actor()
5834 struct btrfs_root *root) in btrfs_iget_locked() argument
5838 unsigned long hashval = btrfs_inode_hash(location->objectid, root); in btrfs_iget_locked()
5841 args.root = root; in btrfs_iget_locked()
5853 struct btrfs_root *root, int *new) in btrfs_iget() argument
5857 inode = btrfs_iget_locked(s, location, root); in btrfs_iget()
5883 struct btrfs_root *root) in new_simple_dir() argument
5890 BTRFS_I(inode)->root = root; in new_simple_dir()
5911 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_lookup_dentry() local
5912 struct btrfs_root *sub_root = root; in btrfs_lookup_dentry()
5928 inode = btrfs_iget(dir->i_sb, &location, root, NULL); in btrfs_lookup_dentry()
5945 if (!IS_ERR(inode) && root != sub_root) { in btrfs_lookup_dentry()
5961 struct btrfs_root *root; in btrfs_dentry_delete() local
5968 root = BTRFS_I(inode)->root; in btrfs_dentry_delete()
5969 if (btrfs_root_refs(&root->root_item) == 0) in btrfs_dentry_delete()
6057 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_real_readdir() local
6095 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in btrfs_real_readdir()
6105 ret = btrfs_next_leaf(root, path); in btrfs_real_readdir()
6205 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_dirty_inode() local
6212 trans = btrfs_join_transaction(root); in btrfs_dirty_inode()
6216 ret = btrfs_update_inode(trans, root, inode); in btrfs_dirty_inode()
6220 trans = btrfs_start_transaction(root, 1); in btrfs_dirty_inode()
6224 ret = btrfs_update_inode(trans, root, inode); in btrfs_dirty_inode()
6240 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_update_time() local
6242 if (btrfs_root_readonly(root)) in btrfs_update_time()
6263 struct btrfs_root *root = inode->root; in btrfs_set_inode_index_count() local
6277 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in btrfs_set_inode_index_count()
6340 args.root = BTRFS_I(inode)->root; in btrfs_insert_inode_locked()
6343 btrfs_inode_hash(inode->i_ino, BTRFS_I(inode)->root), in btrfs_insert_inode_locked()
6379 struct btrfs_root *root, in btrfs_new_inode() argument
6385 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_new_inode()
6439 BTRFS_I(inode)->root = root; in btrfs_new_inode()
6481 ret = btrfs_insert_empty_items(trans, root, path, key, sizes, nitems); in btrfs_new_inode()
6526 btrfs_update_root_times(trans, root); in btrfs_new_inode()
6532 btrfs_ino(BTRFS_I(inode)), root->root_key.objectid, ret); in btrfs_new_inode()
6564 struct btrfs_root *root = parent_inode->root; in btrfs_add_link() local
6569 memcpy(&key, &inode->root->root_key, sizeof(key)); in btrfs_add_link()
6578 root->root_key.objectid, parent_ino, in btrfs_add_link()
6581 ret = btrfs_insert_inode_ref(trans, root, name, name_len, ino, in btrfs_add_link()
6589 ret = btrfs_insert_dir_item(trans, root, name, name_len, in btrfs_add_link()
6608 if (!test_bit(BTRFS_FS_LOG_RECOVERING, &root->fs_info->flags)) { in btrfs_add_link()
6614 ret = btrfs_update_inode(trans, root, &parent_inode->vfs_inode); in btrfs_add_link()
6624 root->root_key.objectid, parent_ino, in btrfs_add_link()
6632 err = btrfs_del_inode_ref(trans, root, name, name_len, in btrfs_add_link()
6659 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_mknod() local
6671 trans = btrfs_start_transaction(root, 5); in btrfs_mknod()
6675 err = btrfs_find_free_ino(root, &objectid); in btrfs_mknod()
6679 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_mknod()
6705 btrfs_update_inode(trans, root, inode); in btrfs_mknod()
6731 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_create() local
6743 trans = btrfs_start_transaction(root, 5); in btrfs_create()
6747 err = btrfs_find_free_ino(root, &objectid); in btrfs_create()
6751 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_create()
6773 err = btrfs_update_inode(trans, root, inode); in btrfs_create()
6805 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_link() local
6813 if (root->objectid != BTRFS_I(inode)->root->objectid) in btrfs_link()
6828 trans = btrfs_start_transaction(root, 5); in btrfs_link()
6850 err = btrfs_update_inode(trans, root, inode); in btrfs_link()
6884 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_mkdir() local
6895 trans = btrfs_start_transaction(root, 5); in btrfs_mkdir()
6899 err = btrfs_find_free_ino(root, &objectid); in btrfs_mkdir()
6903 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_mkdir()
6921 err = btrfs_update_inode(trans, root, inode); in btrfs_mkdir()
7078 struct btrfs_root *root = inode->root; in btrfs_get_extent() local
7127 ret = btrfs_lookup_file_extent(trans, root, path, in btrfs_get_extent()
7182 ret = btrfs_next_leaf(root, path); in btrfs_get_extent()
7259 trans = btrfs_join_transaction(root); in btrfs_get_extent()
7331 trace_btrfs_get_extent(root, inode, em); in btrfs_get_extent()
7514 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_new_extent_direct() local
7521 ret = btrfs_reserve_extent(root, len, len, fs_info->sectorsize, in btrfs_new_extent_direct()
7549 struct btrfs_root *root = BTRFS_I(inode)->root; in can_nocow_extent() local
7565 ret = btrfs_lookup_file_extent(NULL, root, path, in can_nocow_extent()
7633 root->fs_info->sectorsize) - 1; in can_nocow_extent()
7649 ret = btrfs_cross_ref_exist(root, btrfs_ino(BTRFS_I(inode)), in can_nocow_extent()
7679 struct radix_tree_root *root = &inode->i_mapping->page_tree; in btrfs_page_exists_in_range() local
7702 radix_tree_gang_lookup_slot(root, &pagep, NULL, start_idx, 1)) { in btrfs_page_exists_in_range()
7836 struct btrfs_root *root = BTRFS_I(inode)->root; in create_io_em() local
7854 em->bdev = root->fs_info->fs_devices->latest_bdev; in create_io_em()
8212 btrfs_debug(BTRFS_I(inode)->root->fs_info, in dio_read_error()
8251 clean_io_failure(BTRFS_I(inode)->root->fs_info, failure_tree, in btrfs_retry_endio_nocsum()
8273 fs_info = BTRFS_I(inode)->root->fs_info; in __btrfs_correct_data_nocsum()
8347 clean_io_failure(BTRFS_I(inode)->root->fs_info, in btrfs_retry_endio()
8379 fs_info = BTRFS_I(inode)->root->fs_info; in __btrfs_subio_endio_read()
8558 btrfs_warn(BTRFS_I(dip->inode)->root->fs_info, in btrfs_end_dio_bio()
9369 BTRFS_I(inode)->last_sub_trans = BTRFS_I(inode)->root->log_transid; in btrfs_page_mkwrite()
9370 BTRFS_I(inode)->last_log_commit = BTRFS_I(inode)->root->last_log_commit; in btrfs_page_mkwrite()
9393 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_truncate() local
9452 trans = btrfs_start_transaction(root, 2); in btrfs_truncate()
9474 ret = btrfs_truncate_inode_items(trans, root, inode, in btrfs_truncate()
9483 ret = btrfs_update_inode(trans, root, inode); in btrfs_truncate()
9492 trans = btrfs_start_transaction(root, 2); in btrfs_truncate()
9507 trans->block_rsv = root->orphan_block_rsv; in btrfs_truncate()
9515 ret = btrfs_update_inode(trans, root, inode); in btrfs_truncate()
9577 ei->root = NULL; in btrfs_alloc_inode()
9644 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_destroy_inode() local
9660 if (!root) in btrfs_destroy_inode()
9667 atomic_dec(&root->orphan_inodes); in btrfs_destroy_inode()
9692 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_drop_inode() local
9694 if (root == NULL) in btrfs_drop_inode()
9698 if (btrfs_root_refs(&root->root_item) == 0) in btrfs_drop_inode()
9783 stat->dev = BTRFS_I(inode)->root->anon_dev; in btrfs_getattr()
9800 struct btrfs_root *root = BTRFS_I(old_dir)->root; in btrfs_rename_exchange() local
9801 struct btrfs_root *dest = BTRFS_I(new_dir)->root; in btrfs_rename_exchange()
9817 if (old_ino != BTRFS_FIRST_FREE_OBJECTID && root != dest) in btrfs_rename_exchange()
9833 trans = btrfs_start_transaction(root, 12); in btrfs_rename_exchange()
9839 if (dest != root) in btrfs_rename_exchange()
9861 btrfs_pin_log_trans(root); in btrfs_rename_exchange()
9880 ret = btrfs_insert_inode_ref(trans, root, in btrfs_rename_exchange()
9909 root_objectid = BTRFS_I(old_inode)->root->root_key.objectid; in btrfs_rename_exchange()
9910 ret = btrfs_unlink_subvol(trans, root, old_dir, in btrfs_rename_exchange()
9915 ret = __btrfs_unlink_inode(trans, root, BTRFS_I(old_dir), in btrfs_rename_exchange()
9920 ret = btrfs_update_inode(trans, root, old_inode); in btrfs_rename_exchange()
9929 root_objectid = BTRFS_I(new_inode)->root->root_key.objectid; in btrfs_rename_exchange()
9972 btrfs_end_log_trans(root); in btrfs_rename_exchange()
10003 btrfs_end_log_trans(root); in btrfs_rename_exchange()
10022 struct btrfs_root *root, in btrfs_whiteout_for_rename() argument
10031 ret = btrfs_find_free_ino(root, &objectid); in btrfs_whiteout_for_rename()
10035 inode = btrfs_new_inode(trans, root, dir, in btrfs_whiteout_for_rename()
10062 ret = btrfs_update_inode(trans, root, inode); in btrfs_whiteout_for_rename()
10079 struct btrfs_root *root = BTRFS_I(old_dir)->root; in btrfs_rename() local
10080 struct btrfs_root *dest = BTRFS_I(new_dir)->root; in btrfs_rename()
10093 if (old_ino != BTRFS_FIRST_FREE_OBJECTID && root != dest) in btrfs_rename()
10148 trans = btrfs_start_transaction(root, trans_num_items); in btrfs_rename()
10154 if (dest != root) in btrfs_rename()
10166 btrfs_pin_log_trans(root); in btrfs_rename()
10189 root_objectid = BTRFS_I(old_inode)->root->root_key.objectid; in btrfs_rename()
10190 ret = btrfs_unlink_subvol(trans, root, old_dir, root_objectid, in btrfs_rename()
10194 ret = __btrfs_unlink_inode(trans, root, BTRFS_I(old_dir), in btrfs_rename()
10199 ret = btrfs_update_inode(trans, root, old_inode); in btrfs_rename()
10248 btrfs_end_log_trans(root); in btrfs_rename()
10253 ret = btrfs_whiteout_for_rename(trans, root, old_dir, in btrfs_rename()
10281 btrfs_end_log_trans(root); in btrfs_rename()
10356 static int __start_delalloc_inodes(struct btrfs_root *root, int delay_iput, in __start_delalloc_inodes() argument
10369 mutex_lock(&root->delalloc_mutex); in __start_delalloc_inodes()
10370 spin_lock(&root->delalloc_lock); in __start_delalloc_inodes()
10371 list_splice_init(&root->delalloc_inodes, &splice); in __start_delalloc_inodes()
10377 &root->delalloc_inodes); in __start_delalloc_inodes()
10380 cond_resched_lock(&root->delalloc_lock); in __start_delalloc_inodes()
10383 spin_unlock(&root->delalloc_lock); in __start_delalloc_inodes()
10395 btrfs_queue_work(root->fs_info->flush_workers, in __start_delalloc_inodes()
10401 spin_lock(&root->delalloc_lock); in __start_delalloc_inodes()
10403 spin_unlock(&root->delalloc_lock); in __start_delalloc_inodes()
10412 spin_lock(&root->delalloc_lock); in __start_delalloc_inodes()
10413 list_splice_tail(&splice, &root->delalloc_inodes); in __start_delalloc_inodes()
10414 spin_unlock(&root->delalloc_lock); in __start_delalloc_inodes()
10416 mutex_unlock(&root->delalloc_mutex); in __start_delalloc_inodes()
10420 int btrfs_start_delalloc_inodes(struct btrfs_root *root, int delay_iput) in btrfs_start_delalloc_inodes() argument
10422 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_start_delalloc_inodes()
10428 ret = __start_delalloc_inodes(root, delay_iput, -1); in btrfs_start_delalloc_inodes()
10450 struct btrfs_root *root; in btrfs_start_delalloc_roots() local
10463 root = list_first_entry(&splice, struct btrfs_root, in btrfs_start_delalloc_roots()
10465 root = btrfs_grab_fs_root(root); in btrfs_start_delalloc_roots()
10466 BUG_ON(!root); in btrfs_start_delalloc_roots()
10467 list_move_tail(&root->delalloc_root, in btrfs_start_delalloc_roots()
10471 ret = __start_delalloc_inodes(root, delay_iput, nr); in btrfs_start_delalloc_roots()
10472 btrfs_put_fs_root(root); in btrfs_start_delalloc_roots()
10508 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_symlink() local
10533 trans = btrfs_start_transaction(root, 7); in btrfs_symlink()
10537 err = btrfs_find_free_ino(root, &objectid); in btrfs_symlink()
10541 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_symlink()
10573 err = btrfs_insert_empty_item(trans, root, path, &key, in btrfs_symlink()
10600 err = btrfs_update_inode(trans, root, inode); in btrfs_symlink()
10639 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_prealloc_file_range() local
10654 trans = btrfs_start_transaction(root, 3); in __btrfs_prealloc_file_range()
10670 ret = btrfs_reserve_extent(root, cur_bytes, cur_bytes, in __btrfs_prealloc_file_range()
10754 ret = btrfs_update_inode(trans, root, inode); in __btrfs_prealloc_file_range()
10797 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_permission() local
10802 if (btrfs_root_readonly(root)) in btrfs_permission()
10814 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_tmpfile() local
10823 trans = btrfs_start_transaction(root, 5); in btrfs_tmpfile()
10827 ret = btrfs_find_free_ino(root, &objectid); in btrfs_tmpfile()
10831 inode = btrfs_new_inode(trans, root, dir, NULL, 0, in btrfs_tmpfile()
10849 ret = btrfs_update_inode(trans, root, inode); in btrfs_tmpfile()
10902 btrfs_debug_rl(BTRFS_I(inode)->root->fs_info, in btrfs_check_extent_io_range()