Lines Matching refs:root
66 struct btrfs_root *root; member
138 struct btrfs_root *root, struct inode *inode, in insert_inline_extent() argument
168 ret = btrfs_insert_empty_item(trans, root, path, &key, in insert_inline_extent()
226 ret = btrfs_update_inode(trans, root, inode); in insert_inline_extent()
239 static noinline int cow_file_range_inline(struct btrfs_root *root, in cow_file_range_inline() argument
249 u64 aligned_end = ALIGN(end, root->sectorsize); in cow_file_range_inline()
261 data_len > BTRFS_MAX_INLINE_DATA_SIZE(root) || in cow_file_range_inline()
263 (actual_end & (root->sectorsize - 1)) == 0) || in cow_file_range_inline()
265 data_len > root->fs_info->max_inline) { in cow_file_range_inline()
273 trans = btrfs_join_transaction(root); in cow_file_range_inline()
278 trans->block_rsv = &root->fs_info->delalloc_block_rsv; in cow_file_range_inline()
287 ret = __btrfs_drop_extents(trans, root, inode, path, in cow_file_range_inline()
291 btrfs_abort_transaction(trans, root, ret); in cow_file_range_inline()
298 root, inode, start, in cow_file_range_inline()
302 btrfs_abort_transaction(trans, root, ret); in cow_file_range_inline()
321 btrfs_end_transaction(trans, root); in cow_file_range_inline()
337 struct btrfs_root *root; member
368 struct btrfs_root *root = BTRFS_I(inode)->root; in inode_need_compress() local
371 if (btrfs_test_opt(root, FORCE_COMPRESS)) in inode_need_compress()
376 if (btrfs_test_opt(root, COMPRESS) || in inode_need_compress()
406 struct btrfs_root *root = BTRFS_I(inode)->root; in compress_file_range() local
408 u64 blocksize = root->sectorsize; in compress_file_range()
421 int compress_type = root->fs_info->compress_type; in compress_file_range()
534 ret = cow_file_range_inline(root, inode, start, end, in compress_file_range()
538 ret = cow_file_range_inline(root, inode, start, end, in compress_file_range()
599 if (!btrfs_test_opt(root, FORCE_COMPRESS) && in compress_file_range()
681 struct btrfs_root *root = BTRFS_I(inode)->root; in submit_compressed_extents() local
736 ret = btrfs_reserve_extent(root, in submit_compressed_extents()
786 em->bdev = root->fs_info->fs_devices->latest_bdev; in submit_compressed_extents()
858 btrfs_free_reserved_extent(root, ins.objectid, ins.offset, 1); in submit_compressed_extents()
924 struct btrfs_root *root = BTRFS_I(inode)->root; in cow_file_range() local
930 u64 blocksize = root->sectorsize; in cow_file_range()
953 ret = cow_file_range_inline(root, inode, start, end, 0, 0, in cow_file_range()
972 btrfs_super_total_bytes(root->fs_info->super_copy)); in cow_file_range()
981 ret = btrfs_reserve_extent(root, cur_alloc_size, in cow_file_range()
982 root->sectorsize, 0, alloc_hint, in cow_file_range()
1003 em->bdev = root->fs_info->fs_devices->latest_bdev; in cow_file_range()
1027 if (root->root_key.objectid == in cow_file_range()
1063 btrfs_free_reserved_extent(root, ins.objectid, ins.offset, 1); in cow_file_range()
1097 struct btrfs_root *root; in async_cow_submit() local
1102 root = async_cow->root; in async_cow_submit()
1109 if (atomic_sub_return(nr_pages, &root->fs_info->async_delalloc_pages) < in async_cow_submit()
1111 waitqueue_active(&root->fs_info->async_submit_wait)) in async_cow_submit()
1112 wake_up(&root->fs_info->async_submit_wait); in async_cow_submit()
1132 struct btrfs_root *root = BTRFS_I(inode)->root; in cow_file_range_async() local
1143 async_cow->root = root; in cow_file_range_async()
1148 !btrfs_test_opt(root, FORCE_COMPRESS)) in cow_file_range_async()
1163 atomic_add(nr_pages, &root->fs_info->async_delalloc_pages); in cow_file_range_async()
1165 btrfs_queue_work(root->fs_info->delalloc_workers, in cow_file_range_async()
1168 if (atomic_read(&root->fs_info->async_delalloc_pages) > limit) { in cow_file_range_async()
1169 wait_event(root->fs_info->async_submit_wait, in cow_file_range_async()
1170 (atomic_read(&root->fs_info->async_delalloc_pages) < in cow_file_range_async()
1174 while (atomic_read(&root->fs_info->async_submit_draining) && in cow_file_range_async()
1175 atomic_read(&root->fs_info->async_delalloc_pages)) { in cow_file_range_async()
1176 wait_event(root->fs_info->async_submit_wait, in cow_file_range_async()
1177 (atomic_read(&root->fs_info->async_delalloc_pages) == in cow_file_range_async()
1188 static noinline int csum_exist_in_range(struct btrfs_root *root, in csum_exist_in_range() argument
1195 ret = btrfs_lookup_csums_range(root->fs_info->csum_root, bytenr, in csum_exist_in_range()
1220 struct btrfs_root *root = BTRFS_I(inode)->root; in run_delalloc_nocow() local
1257 trans = btrfs_join_transaction_nolock(root); in run_delalloc_nocow()
1259 trans = btrfs_join_transaction(root); in run_delalloc_nocow()
1273 trans->block_rsv = &root->fs_info->delalloc_block_rsv; in run_delalloc_nocow()
1278 ret = btrfs_lookup_file_extent(trans, root, path, ino, in run_delalloc_nocow()
1294 ret = btrfs_next_leaf(root, path); in run_delalloc_nocow()
1349 if (btrfs_extent_readonly(root, disk_bytenr)) in run_delalloc_nocow()
1351 if (btrfs_cross_ref_exist(trans, root, ino, in run_delalloc_nocow()
1363 err = btrfs_start_write_no_snapshoting(root); in run_delalloc_nocow()
1372 if (csum_exist_in_range(root, disk_bytenr, num_bytes)) in run_delalloc_nocow()
1379 extent_end = ALIGN(extent_end, root->sectorsize); in run_delalloc_nocow()
1387 btrfs_end_write_no_snapshoting(root); in run_delalloc_nocow()
1407 btrfs_end_write_no_snapshoting(root); in run_delalloc_nocow()
1426 em->bdev = root->fs_info->fs_devices->latest_bdev; in run_delalloc_nocow()
1452 if (root->root_key.objectid == in run_delalloc_nocow()
1458 btrfs_end_write_no_snapshoting(root); in run_delalloc_nocow()
1469 btrfs_end_write_no_snapshoting(root); in run_delalloc_nocow()
1489 err = btrfs_end_transaction(trans, root); in run_delalloc_nocow()
1651 static void btrfs_add_delalloc_inodes(struct btrfs_root *root, in btrfs_add_delalloc_inodes() argument
1654 spin_lock(&root->delalloc_lock); in btrfs_add_delalloc_inodes()
1657 &root->delalloc_inodes); in btrfs_add_delalloc_inodes()
1660 root->nr_delalloc_inodes++; in btrfs_add_delalloc_inodes()
1661 if (root->nr_delalloc_inodes == 1) { in btrfs_add_delalloc_inodes()
1662 spin_lock(&root->fs_info->delalloc_root_lock); in btrfs_add_delalloc_inodes()
1663 BUG_ON(!list_empty(&root->delalloc_root)); in btrfs_add_delalloc_inodes()
1664 list_add_tail(&root->delalloc_root, in btrfs_add_delalloc_inodes()
1665 &root->fs_info->delalloc_roots); in btrfs_add_delalloc_inodes()
1666 spin_unlock(&root->fs_info->delalloc_root_lock); in btrfs_add_delalloc_inodes()
1669 spin_unlock(&root->delalloc_lock); in btrfs_add_delalloc_inodes()
1672 static void btrfs_del_delalloc_inode(struct btrfs_root *root, in btrfs_del_delalloc_inode() argument
1675 spin_lock(&root->delalloc_lock); in btrfs_del_delalloc_inode()
1680 root->nr_delalloc_inodes--; in btrfs_del_delalloc_inode()
1681 if (!root->nr_delalloc_inodes) { in btrfs_del_delalloc_inode()
1682 spin_lock(&root->fs_info->delalloc_root_lock); in btrfs_del_delalloc_inode()
1683 BUG_ON(list_empty(&root->delalloc_root)); in btrfs_del_delalloc_inode()
1684 list_del_init(&root->delalloc_root); in btrfs_del_delalloc_inode()
1685 spin_unlock(&root->fs_info->delalloc_root_lock); in btrfs_del_delalloc_inode()
1688 spin_unlock(&root->delalloc_lock); in btrfs_del_delalloc_inode()
1708 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_set_bit_hook() local
1721 if (btrfs_test_is_dummy_root(root)) in btrfs_set_bit_hook()
1724 __percpu_counter_add(&root->fs_info->delalloc_bytes, len, in btrfs_set_bit_hook()
1725 root->fs_info->delalloc_batch); in btrfs_set_bit_hook()
1732 btrfs_add_delalloc_inodes(root, inode); in btrfs_set_bit_hook()
1759 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_clear_bit_hook() local
1776 root != root->fs_info->tree_root) in btrfs_clear_bit_hook()
1780 if (btrfs_test_is_dummy_root(root)) in btrfs_clear_bit_hook()
1783 if (root->root_key.objectid != BTRFS_DATA_RELOC_TREE_OBJECTID in btrfs_clear_bit_hook()
1788 __percpu_counter_add(&root->fs_info->delalloc_bytes, -len, in btrfs_clear_bit_hook()
1789 root->fs_info->delalloc_batch); in btrfs_clear_bit_hook()
1795 btrfs_del_delalloc_inode(root, inode); in btrfs_clear_bit_hook()
1808 struct btrfs_root *root = BTRFS_I(page->mapping->host)->root; in btrfs_merge_bio_hook() local
1819 ret = btrfs_map_block(root->fs_info, rw, logical, in btrfs_merge_bio_hook()
1841 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_submit_bio_start() local
1844 ret = btrfs_csum_one_bio(root, inode, bio, 0, 0); in __btrfs_submit_bio_start()
1861 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_submit_bio_done() local
1864 ret = btrfs_map_bio(root, rw, bio, mirror_num, 1); in __btrfs_submit_bio_done()
1880 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_submit_bio_hook() local
1892 ret = btrfs_bio_wq_end_io(root->fs_info, bio, metadata); in btrfs_submit_bio_hook()
1902 ret = btrfs_lookup_bio_sums(root, inode, bio, NULL); in btrfs_submit_bio_hook()
1909 if (root->root_key.objectid == BTRFS_DATA_RELOC_TREE_OBJECTID) in btrfs_submit_bio_hook()
1912 ret = btrfs_wq_submit_bio(BTRFS_I(inode)->root->fs_info, in btrfs_submit_bio_hook()
1919 ret = btrfs_csum_one_bio(root, inode, bio, 0, 0); in btrfs_submit_bio_hook()
1925 ret = btrfs_map_bio(root, rw, bio, mirror_num, 0); in btrfs_submit_bio_hook()
1948 BTRFS_I(inode)->root->fs_info->csum_root, sum); in add_pending_csums()
2045 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_writepage_start_hook() local
2063 btrfs_queue_work(root->fs_info->fixup_workers, &fixup->work); in btrfs_writepage_start_hook()
2074 struct btrfs_root *root = BTRFS_I(inode)->root; in insert_reserved_file_extent() local
2095 ret = __btrfs_drop_extents(trans, root, inode, path, file_pos, in insert_reserved_file_extent()
2107 ret = btrfs_insert_empty_item(trans, root, path, &ins, in insert_reserved_file_extent()
2134 ret = btrfs_alloc_reserved_file_extent(trans, root, in insert_reserved_file_extent()
2135 root->root_key.objectid, in insert_reserved_file_extent()
2173 struct rb_root root; member
2217 static void backref_insert(struct rb_root *root, in backref_insert() argument
2220 struct rb_node **p = &root->rb_node; in backref_insert()
2237 rb_insert_color(&backref->node, root); in backref_insert()
2252 struct btrfs_root *root; in record_one_backref() local
2261 if (BTRFS_I(inode)->root->root_key.objectid == root_id && in record_one_backref()
2269 fs_info = BTRFS_I(inode)->root->fs_info; in record_one_backref()
2270 root = btrfs_read_fs_root_no_name(fs_info, &key); in record_one_backref()
2271 if (IS_ERR(root)) { in record_one_backref()
2272 if (PTR_ERR(root) == -ENOENT) in record_one_backref()
2277 return PTR_ERR(root); in record_one_backref()
2287 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in record_one_backref()
2299 ret = btrfs_next_leaf(root, path); in record_one_backref()
2356 backref_insert(&new->root, backref); in record_one_backref()
2367 struct btrfs_fs_info *fs_info = BTRFS_I(new->inode)->root->fs_info; in record_extent_backrefs()
2426 struct btrfs_root *root; in relink_extent_backref() local
2452 fs_info = BTRFS_I(src_inode)->root->fs_info; in relink_extent_backref()
2455 root = btrfs_read_fs_root_no_name(fs_info, &key); in relink_extent_backref()
2456 if (IS_ERR(root)) { in relink_extent_backref()
2458 if (PTR_ERR(root) == -ENOENT) in relink_extent_backref()
2460 return PTR_ERR(root); in relink_extent_backref()
2463 if (btrfs_root_readonly(root)) { in relink_extent_backref()
2473 inode = btrfs_iget(fs_info->sb, &key, root, NULL); in relink_extent_backref()
2493 trans = btrfs_join_transaction(root); in relink_extent_backref()
2503 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in relink_extent_backref()
2529 ret = btrfs_drop_extents(trans, root, inode, start, in relink_extent_backref()
2544 ret = btrfs_search_slot(trans, root, &key, path, 0, 1); in relink_extent_backref()
2572 ret = btrfs_insert_empty_item(trans, root, path, &key, in relink_extent_backref()
2575 btrfs_abort_transaction(trans, root, ret); in relink_extent_backref()
2597 ret = btrfs_inc_extent_ref(trans, root, new->bytenr, in relink_extent_backref()
2602 btrfs_abort_transaction(trans, root, ret); in relink_extent_backref()
2610 btrfs_end_transaction(trans, root); in relink_extent_backref()
2637 struct btrfs_root *root; in relink_file_extents() local
2642 root = BTRFS_I(inode)->root; in relink_file_extents()
2655 node = rb_first(&new->root); in relink_file_extents()
2658 rb_erase(node, &new->root); in relink_file_extents()
2679 atomic_dec(&root->fs_info->defrag_running); in relink_file_extents()
2680 wake_up(&root->fs_info->transaction_wait); in relink_file_extents()
2687 struct btrfs_root *root = BTRFS_I(inode)->root; in record_old_file_extents() local
2704 new->root = RB_ROOT; in record_old_file_extents()
2715 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in record_old_file_extents()
2736 ret = btrfs_next_leaf(root, path); in record_old_file_extents()
2785 atomic_inc(&root->fs_info->defrag_running); in record_old_file_extents()
2796 static void btrfs_release_delalloc_bytes(struct btrfs_root *root, in btrfs_release_delalloc_bytes() argument
2801 cache = btrfs_lookup_block_group(root->fs_info, start); in btrfs_release_delalloc_bytes()
2818 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_finish_ordered_io() local
2860 trans = btrfs_join_transaction_nolock(root); in btrfs_finish_ordered_io()
2862 trans = btrfs_join_transaction(root); in btrfs_finish_ordered_io()
2868 trans->block_rsv = &root->fs_info->delalloc_block_rsv; in btrfs_finish_ordered_io()
2869 ret = btrfs_update_inode_fallback(trans, root, inode); in btrfs_finish_ordered_io()
2871 btrfs_abort_transaction(trans, root, ret); in btrfs_finish_ordered_io()
2883 u64 last_snapshot = btrfs_root_last_snapshot(&root->root_item); in btrfs_finish_ordered_io()
2894 trans = btrfs_join_transaction_nolock(root); in btrfs_finish_ordered_io()
2896 trans = btrfs_join_transaction(root); in btrfs_finish_ordered_io()
2903 trans->block_rsv = &root->fs_info->delalloc_block_rsv; in btrfs_finish_ordered_io()
2914 BUG_ON(root == root->fs_info->tree_root); in btrfs_finish_ordered_io()
2923 btrfs_release_delalloc_bytes(root, in btrfs_finish_ordered_io()
2931 btrfs_abort_transaction(trans, root, ret); in btrfs_finish_ordered_io()
2939 ret = btrfs_update_inode_fallback(trans, root, inode); in btrfs_finish_ordered_io()
2941 btrfs_abort_transaction(trans, root, ret); in btrfs_finish_ordered_io()
2950 if (root != root->fs_info->tree_root) in btrfs_finish_ordered_io()
2953 btrfs_end_transaction(trans, root); in btrfs_finish_ordered_io()
2977 btrfs_free_reserved_extent(root, ordered_extent->start, in btrfs_finish_ordered_io()
2992 atomic_dec(&root->fs_info->defrag_running); in btrfs_finish_ordered_io()
3017 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_writepage_end_io_hook() local
3030 wq = root->fs_info->endio_freespace_worker; in btrfs_writepage_end_io_hook()
3033 wq = root->fs_info->endio_write_workers; in btrfs_writepage_end_io_hook()
3064 btrfs_warn_rl(BTRFS_I(inode)->root->fs_info, in __readpage_endio_check()
3087 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_readpage_end_io_hook() local
3097 if (root->root_key.objectid == BTRFS_DATA_RELOC_TREE_OBJECTID && in btrfs_readpage_end_io_hook()
3118 struct btrfs_fs_info *fs_info = BTRFS_I(inode)->root->fs_info; in btrfs_add_delayed_iput()
3132 void btrfs_run_delayed_iputs(struct btrfs_root *root) in btrfs_run_delayed_iputs() argument
3135 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_run_delayed_iputs()
3163 struct btrfs_root *root) in btrfs_orphan_commit_root() argument
3168 if (atomic_read(&root->orphan_inodes) || in btrfs_orphan_commit_root()
3169 root->orphan_cleanup_state != ORPHAN_CLEANUP_DONE) in btrfs_orphan_commit_root()
3172 spin_lock(&root->orphan_lock); in btrfs_orphan_commit_root()
3173 if (atomic_read(&root->orphan_inodes)) { in btrfs_orphan_commit_root()
3174 spin_unlock(&root->orphan_lock); in btrfs_orphan_commit_root()
3178 if (root->orphan_cleanup_state != ORPHAN_CLEANUP_DONE) { in btrfs_orphan_commit_root()
3179 spin_unlock(&root->orphan_lock); in btrfs_orphan_commit_root()
3183 block_rsv = root->orphan_block_rsv; in btrfs_orphan_commit_root()
3184 root->orphan_block_rsv = NULL; in btrfs_orphan_commit_root()
3185 spin_unlock(&root->orphan_lock); in btrfs_orphan_commit_root()
3187 if (test_bit(BTRFS_ROOT_ORPHAN_ITEM_INSERTED, &root->state) && in btrfs_orphan_commit_root()
3188 btrfs_root_refs(&root->root_item) > 0) { in btrfs_orphan_commit_root()
3189 ret = btrfs_del_orphan_item(trans, root->fs_info->tree_root, in btrfs_orphan_commit_root()
3190 root->root_key.objectid); in btrfs_orphan_commit_root()
3192 btrfs_abort_transaction(trans, root, ret); in btrfs_orphan_commit_root()
3195 &root->state); in btrfs_orphan_commit_root()
3200 btrfs_free_block_rsv(root, block_rsv); in btrfs_orphan_commit_root()
3213 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_orphan_add() local
3219 if (!root->orphan_block_rsv) { in btrfs_orphan_add()
3220 block_rsv = btrfs_alloc_block_rsv(root, BTRFS_BLOCK_RSV_TEMP); in btrfs_orphan_add()
3225 spin_lock(&root->orphan_lock); in btrfs_orphan_add()
3226 if (!root->orphan_block_rsv) { in btrfs_orphan_add()
3227 root->orphan_block_rsv = block_rsv; in btrfs_orphan_add()
3229 btrfs_free_block_rsv(root, block_rsv); in btrfs_orphan_add()
3241 if (!xchg(&root->orphan_item_inserted, 1)) in btrfs_orphan_add()
3247 atomic_inc(&root->orphan_inodes); in btrfs_orphan_add()
3253 spin_unlock(&root->orphan_lock); in btrfs_orphan_add()
3263 ret = btrfs_insert_orphan_item(trans, root, btrfs_ino(inode)); in btrfs_orphan_add()
3265 atomic_dec(&root->orphan_inodes); in btrfs_orphan_add()
3274 btrfs_abort_transaction(trans, root, ret); in btrfs_orphan_add()
3283 ret = btrfs_insert_orphan_item(trans, root->fs_info->tree_root, in btrfs_orphan_add()
3284 root->root_key.objectid); in btrfs_orphan_add()
3286 btrfs_abort_transaction(trans, root, ret); in btrfs_orphan_add()
3300 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_orphan_del() local
3305 spin_lock(&root->orphan_lock); in btrfs_orphan_del()
3313 spin_unlock(&root->orphan_lock); in btrfs_orphan_del()
3316 atomic_dec(&root->orphan_inodes); in btrfs_orphan_del()
3318 ret = btrfs_del_orphan_item(trans, root, in btrfs_orphan_del()
3332 int btrfs_orphan_cleanup(struct btrfs_root *root) in btrfs_orphan_cleanup() argument
3342 if (cmpxchg(&root->orphan_cleanup_state, 0, ORPHAN_CLEANUP_STARTED)) in btrfs_orphan_cleanup()
3357 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in btrfs_orphan_cleanup()
3393 btrfs_err(root->fs_info, in btrfs_orphan_cleanup()
3404 inode = btrfs_iget(root->fs_info->sb, &found_key, root, NULL); in btrfs_orphan_cleanup()
3409 if (ret == -ESTALE && root == root->fs_info->tree_root) { in btrfs_orphan_cleanup()
3411 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_orphan_cleanup()
3446 trans = btrfs_start_transaction(root, 1); in btrfs_orphan_cleanup()
3451 btrfs_debug(root->fs_info, "auto deleting %Lu", in btrfs_orphan_cleanup()
3453 ret = btrfs_del_orphan_item(trans, root, in btrfs_orphan_cleanup()
3455 btrfs_end_transaction(trans, root); in btrfs_orphan_cleanup()
3467 atomic_inc(&root->orphan_inodes); in btrfs_orphan_cleanup()
3478 trans = btrfs_start_transaction(root, 1); in btrfs_orphan_cleanup()
3485 btrfs_end_transaction(trans, root); in btrfs_orphan_cleanup()
3506 root->orphan_cleanup_state = ORPHAN_CLEANUP_DONE; in btrfs_orphan_cleanup()
3508 if (root->orphan_block_rsv) in btrfs_orphan_cleanup()
3509 btrfs_block_rsv_release(root, root->orphan_block_rsv, in btrfs_orphan_cleanup()
3512 if (root->orphan_block_rsv || in btrfs_orphan_cleanup()
3513 test_bit(BTRFS_ROOT_ORPHAN_ITEM_INSERTED, &root->state)) { in btrfs_orphan_cleanup()
3514 trans = btrfs_join_transaction(root); in btrfs_orphan_cleanup()
3516 btrfs_end_transaction(trans, root); in btrfs_orphan_cleanup()
3520 btrfs_debug(root->fs_info, "unlinked %d orphans", nr_unlink); in btrfs_orphan_cleanup()
3522 btrfs_debug(root->fs_info, "truncated %d orphans", nr_truncate); in btrfs_orphan_cleanup()
3526 btrfs_err(root->fs_info, in btrfs_orphan_cleanup()
3609 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_read_locked_inode() local
3628 ret = btrfs_lookup_inode(NULL, root, path, &location, 0); in btrfs_read_locked_inode()
3681 if (BTRFS_I(inode)->last_trans == root->fs_info->generation) in btrfs_read_locked_inode()
3747 btrfs_err(root->fs_info, in btrfs_read_locked_inode()
3750 root->root_key.objectid, ret); in btrfs_read_locked_inode()
3766 if (root == root->fs_info->tree_root) in btrfs_read_locked_inode()
3843 struct btrfs_root *root, struct inode *inode) in btrfs_update_inode_item() argument
3855 ret = btrfs_lookup_inode(trans, root, path, &BTRFS_I(inode)->location, in btrfs_update_inode_item()
3880 struct btrfs_root *root, struct inode *inode) in btrfs_update_inode() argument
3892 && root->root_key.objectid != BTRFS_DATA_RELOC_TREE_OBJECTID in btrfs_update_inode()
3893 && !root->fs_info->log_root_recovering) { in btrfs_update_inode()
3894 btrfs_update_root_times(trans, root); in btrfs_update_inode()
3896 ret = btrfs_delayed_update_inode(trans, root, inode); in btrfs_update_inode()
3902 return btrfs_update_inode_item(trans, root, inode); in btrfs_update_inode()
3906 struct btrfs_root *root, in btrfs_update_inode_fallback() argument
3911 ret = btrfs_update_inode(trans, root, inode); in btrfs_update_inode_fallback()
3913 return btrfs_update_inode_item(trans, root, inode); in btrfs_update_inode_fallback()
3923 struct btrfs_root *root, in __btrfs_unlink_inode() argument
3943 di = btrfs_lookup_dir_item(trans, root, path, dir_ino, in __btrfs_unlink_inode()
3955 ret = btrfs_delete_one_dir_name(trans, root, path, di); in __btrfs_unlink_inode()
3978 ret = btrfs_del_inode_ref(trans, root, name, name_len, ino, in __btrfs_unlink_inode()
3981 btrfs_info(root->fs_info, in __btrfs_unlink_inode()
3984 btrfs_abort_transaction(trans, root, ret); in __btrfs_unlink_inode()
3988 ret = btrfs_delete_delayed_dir_index(trans, root, dir, index); in __btrfs_unlink_inode()
3990 btrfs_abort_transaction(trans, root, ret); in __btrfs_unlink_inode()
3994 ret = btrfs_del_inode_ref_in_log(trans, root, name, name_len, in __btrfs_unlink_inode()
3997 btrfs_abort_transaction(trans, root, ret); in __btrfs_unlink_inode()
4001 ret = btrfs_del_dir_entries_in_log(trans, root, name, name_len, in __btrfs_unlink_inode()
4006 btrfs_abort_transaction(trans, root, ret); in __btrfs_unlink_inode()
4016 ret = btrfs_update_inode(trans, root, dir); in __btrfs_unlink_inode()
4022 struct btrfs_root *root, in btrfs_unlink_inode() argument
4027 ret = __btrfs_unlink_inode(trans, root, dir, inode, name, name_len); in btrfs_unlink_inode()
4030 ret = btrfs_update_inode(trans, root, inode); in btrfs_unlink_inode()
4045 struct btrfs_root *root = BTRFS_I(dir)->root; in __unlink_start_trans() local
4054 return btrfs_start_transaction_fallback_global_rsv(root, 5, 5); in __unlink_start_trans()
4059 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_unlink() local
4070 ret = btrfs_unlink_inode(trans, root, dir, d_inode(dentry), in btrfs_unlink()
4082 btrfs_end_transaction(trans, root); in btrfs_unlink()
4083 btrfs_btree_balance_dirty(root); in btrfs_unlink()
4088 struct btrfs_root *root, in btrfs_unlink_subvol() argument
4104 di = btrfs_lookup_dir_item(trans, root, path, dir_ino, in btrfs_unlink_subvol()
4117 ret = btrfs_delete_one_dir_name(trans, root, path, di); in btrfs_unlink_subvol()
4119 btrfs_abort_transaction(trans, root, ret); in btrfs_unlink_subvol()
4124 ret = btrfs_del_root_ref(trans, root->fs_info->tree_root, in btrfs_unlink_subvol()
4125 objectid, root->root_key.objectid, in btrfs_unlink_subvol()
4129 btrfs_abort_transaction(trans, root, ret); in btrfs_unlink_subvol()
4132 di = btrfs_search_dir_index_item(root, path, dir_ino, in btrfs_unlink_subvol()
4139 btrfs_abort_transaction(trans, root, ret); in btrfs_unlink_subvol()
4150 ret = btrfs_delete_delayed_dir_index(trans, root, dir, index); in btrfs_unlink_subvol()
4152 btrfs_abort_transaction(trans, root, ret); in btrfs_unlink_subvol()
4159 ret = btrfs_update_inode_fallback(trans, root, dir); in btrfs_unlink_subvol()
4161 btrfs_abort_transaction(trans, root, ret); in btrfs_unlink_subvol()
4171 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_rmdir() local
4184 err = btrfs_unlink_subvol(trans, root, dir, in btrfs_rmdir()
4196 err = btrfs_unlink_inode(trans, root, dir, d_inode(dentry), in btrfs_rmdir()
4201 btrfs_end_transaction(trans, root); in btrfs_rmdir()
4202 btrfs_btree_balance_dirty(root); in btrfs_rmdir()
4208 struct btrfs_root *root, in truncate_space_check() argument
4213 bytes_deleted = btrfs_csum_bytes_to_leaves(root, bytes_deleted); in truncate_space_check()
4214 ret = btrfs_block_rsv_add(root, &root->fs_info->trans_block_rsv, in truncate_space_check()
4232 struct btrfs_root *root = BTRFS_I(inode)->root; in truncate_inline_extent() local
4255 btrfs_truncate_item(root, path, size, 1); in truncate_inline_extent()
4257 if (test_bit(BTRFS_ROOT_REF_COWS, &root->state)) in truncate_inline_extent()
4275 struct btrfs_root *root, in btrfs_truncate_inode_items() argument
4310 test_bit(BTRFS_ROOT_REF_COWS, &root->state)) in btrfs_truncate_inode_items()
4323 if (test_bit(BTRFS_ROOT_REF_COWS, &root->state) || in btrfs_truncate_inode_items()
4324 root == root->fs_info->tree_root) in btrfs_truncate_inode_items()
4326 root->sectorsize), (u64)-1, 0); in btrfs_truncate_inode_items()
4334 if (min_type == 0 && root == BTRFS_I(inode)->root) in btrfs_truncate_inode_items()
4348 if (btrfs_should_end_transaction(trans, root)) { in btrfs_truncate_inode_items()
4356 ret = btrfs_search_slot(trans, root, &key, path, -1, 1); in btrfs_truncate_inode_items()
4425 root->sectorsize); in btrfs_truncate_inode_items()
4431 &root->state) && in btrfs_truncate_inode_items()
4447 &root->state)) in btrfs_truncate_inode_items()
4467 err = btrfs_del_items(trans, root, path, in btrfs_truncate_inode_items()
4472 root, in btrfs_truncate_inode_items()
4485 root, err); in btrfs_truncate_inode_items()
4489 &root->state)) { in btrfs_truncate_inode_items()
4513 (test_bit(BTRFS_ROOT_REF_COWS, &root->state) || in btrfs_truncate_inode_items()
4514 root == root->fs_info->tree_root)) { in btrfs_truncate_inode_items()
4517 ret = btrfs_free_extent(trans, root, extent_start, in btrfs_truncate_inode_items()
4522 if (btrfs_should_throttle_delayed_refs(trans, root)) in btrfs_truncate_inode_items()
4523 btrfs_async_run_delayed_refs(root, in btrfs_truncate_inode_items()
4526 if (truncate_space_check(trans, root, in btrfs_truncate_inode_items()
4531 root)) { in btrfs_truncate_inode_items()
4544 ret = btrfs_del_items(trans, root, path, in btrfs_truncate_inode_items()
4549 root, ret); in btrfs_truncate_inode_items()
4559 ret = btrfs_run_delayed_refs(trans, root, updates * 2); in btrfs_truncate_inode_items()
4579 ret = btrfs_del_items(trans, root, path, pending_del_slot, in btrfs_truncate_inode_items()
4582 btrfs_abort_transaction(trans, root, ret); in btrfs_truncate_inode_items()
4585 if (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID) in btrfs_truncate_inode_items()
4594 ret = btrfs_run_delayed_refs(trans, root, updates * 2); in btrfs_truncate_inode_items()
4617 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_truncate_page() local
4622 u32 blocksize = root->sectorsize; in btrfs_truncate_page()
4720 static int maybe_insert_hole(struct btrfs_root *root, struct inode *inode, in maybe_insert_hole() argument
4730 if (btrfs_fs_incompat(root->fs_info, NO_HOLES)) { in maybe_insert_hole()
4731 BTRFS_I(inode)->last_trans = root->fs_info->generation; in maybe_insert_hole()
4732 BTRFS_I(inode)->last_sub_trans = root->log_transid; in maybe_insert_hole()
4733 BTRFS_I(inode)->last_log_commit = root->last_log_commit; in maybe_insert_hole()
4742 trans = btrfs_start_transaction(root, 3); in maybe_insert_hole()
4746 ret = btrfs_drop_extents(trans, root, inode, offset, offset + len, 1); in maybe_insert_hole()
4748 btrfs_abort_transaction(trans, root, ret); in maybe_insert_hole()
4749 btrfs_end_transaction(trans, root); in maybe_insert_hole()
4753 ret = btrfs_insert_file_extent(trans, root, btrfs_ino(inode), offset, in maybe_insert_hole()
4756 btrfs_abort_transaction(trans, root, ret); in maybe_insert_hole()
4758 btrfs_update_inode(trans, root, inode); in maybe_insert_hole()
4759 btrfs_end_transaction(trans, root); in maybe_insert_hole()
4771 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_cont_expand() local
4776 u64 hole_start = ALIGN(oldsize, root->sectorsize); in btrfs_cont_expand()
4777 u64 block_end = ALIGN(size, root->sectorsize); in btrfs_cont_expand()
4820 last_byte = ALIGN(last_byte , root->sectorsize); in btrfs_cont_expand()
4825 err = maybe_insert_hole(root, inode, cur_offset, in btrfs_cont_expand()
4845 hole_em->bdev = root->fs_info->fs_devices->latest_bdev; in btrfs_cont_expand()
4847 hole_em->generation = root->fs_info->generation; in btrfs_cont_expand()
4880 static void wait_for_snapshot_creation(struct btrfs_root *root) in wait_for_snapshot_creation() argument
4885 ret = btrfs_start_write_no_snapshoting(root); in wait_for_snapshot_creation()
4888 wait_on_atomic_t(&root->will_be_snapshoted, in wait_for_snapshot_creation()
4896 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_setsize() local
4925 wait_for_snapshot_creation(root); in btrfs_setsize()
4928 btrfs_end_write_no_snapshoting(root); in btrfs_setsize()
4932 trans = btrfs_start_transaction(root, 1); in btrfs_setsize()
4934 btrfs_end_write_no_snapshoting(root); in btrfs_setsize()
4940 ret = btrfs_update_inode(trans, root, inode); in btrfs_setsize()
4941 btrfs_end_write_no_snapshoting(root); in btrfs_setsize()
4942 btrfs_end_transaction(trans, root); in btrfs_setsize()
4958 trans = btrfs_start_transaction(root, 2); in btrfs_setsize()
4973 btrfs_end_transaction(trans, root); in btrfs_setsize()
4995 trans = btrfs_join_transaction(root); in btrfs_setsize()
5003 btrfs_abort_transaction(trans, root, err); in btrfs_setsize()
5004 btrfs_end_transaction(trans, root); in btrfs_setsize()
5014 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_setattr() local
5017 if (btrfs_root_readonly(root)) in btrfs_setattr()
5138 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_evict_inode() local
5141 u64 min_size = btrfs_calc_trunc_metadata_size(root, 1); in btrfs_evict_inode()
5149 ((btrfs_root_refs(&root->root_item) != 0 && in btrfs_evict_inode()
5150 root->root_key.objectid != BTRFS_ROOT_TREE_OBJECTID) || in btrfs_evict_inode()
5164 if (root->fs_info->log_root_recovering) { in btrfs_evict_inode()
5171 BUG_ON(btrfs_root_refs(&root->root_item) != 0 && in btrfs_evict_inode()
5172 root->root_key.objectid != BTRFS_ROOT_TREE_OBJECTID); in btrfs_evict_inode()
5182 rsv = btrfs_alloc_block_rsv(root, BTRFS_BLOCK_RSV_TEMP); in btrfs_evict_inode()
5189 global_rsv = &root->fs_info->global_block_rsv; in btrfs_evict_inode()
5200 ret = btrfs_block_rsv_refill(root, rsv, min_size, in btrfs_evict_inode()
5223 btrfs_warn(root->fs_info, in btrfs_evict_inode()
5227 btrfs_free_block_rsv(root, rsv); in btrfs_evict_inode()
5231 trans = btrfs_join_transaction(root); in btrfs_evict_inode()
5234 btrfs_free_block_rsv(root, rsv); in btrfs_evict_inode()
5244 if (!btrfs_check_space_for_delayed_refs(trans, root)) in btrfs_evict_inode()
5257 ret = btrfs_commit_transaction(trans, root); in btrfs_evict_inode()
5260 btrfs_free_block_rsv(root, rsv); in btrfs_evict_inode()
5270 ret = btrfs_truncate_inode_items(trans, root, inode, 0, 0); in btrfs_evict_inode()
5274 trans->block_rsv = &root->fs_info->trans_block_rsv; in btrfs_evict_inode()
5275 btrfs_end_transaction(trans, root); in btrfs_evict_inode()
5277 btrfs_btree_balance_dirty(root); in btrfs_evict_inode()
5280 btrfs_free_block_rsv(root, rsv); in btrfs_evict_inode()
5287 trans->block_rsv = root->orphan_block_rsv; in btrfs_evict_inode()
5293 trans->block_rsv = &root->fs_info->trans_block_rsv; in btrfs_evict_inode()
5294 if (!(root == root->fs_info->tree_root || in btrfs_evict_inode()
5295 root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID)) in btrfs_evict_inode()
5296 btrfs_return_ino(root, btrfs_ino(inode)); in btrfs_evict_inode()
5298 btrfs_end_transaction(trans, root); in btrfs_evict_inode()
5299 btrfs_btree_balance_dirty(root); in btrfs_evict_inode()
5317 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_inode_by_name() local
5324 di = btrfs_lookup_dir_item(NULL, root, path, btrfs_ino(dir), name, in btrfs_inode_by_name()
5346 static int fixup_tree_root_location(struct btrfs_root *root, in fixup_tree_root_location() argument
5367 key.objectid = BTRFS_I(dir)->root->root_key.objectid; in fixup_tree_root_location()
5371 ret = btrfs_search_slot(NULL, root->fs_info->tree_root, &key, path, in fixup_tree_root_location()
5393 new_root = btrfs_read_fs_root_no_name(root->fs_info, location); in fixup_tree_root_location()
5411 struct btrfs_root *root = BTRFS_I(inode)->root; in inode_tree_add() local
5421 spin_lock(&root->inode_lock); in inode_tree_add()
5422 p = &root->inode_tree.rb_node; in inode_tree_add()
5434 rb_replace_node(parent, new, &root->inode_tree); in inode_tree_add()
5436 spin_unlock(&root->inode_lock); in inode_tree_add()
5441 rb_insert_color(new, &root->inode_tree); in inode_tree_add()
5442 spin_unlock(&root->inode_lock); in inode_tree_add()
5447 struct btrfs_root *root = BTRFS_I(inode)->root; in inode_tree_del() local
5450 spin_lock(&root->inode_lock); in inode_tree_del()
5452 rb_erase(&BTRFS_I(inode)->rb_node, &root->inode_tree); in inode_tree_del()
5454 empty = RB_EMPTY_ROOT(&root->inode_tree); in inode_tree_del()
5456 spin_unlock(&root->inode_lock); in inode_tree_del()
5458 if (empty && btrfs_root_refs(&root->root_item) == 0) { in inode_tree_del()
5459 synchronize_srcu(&root->fs_info->subvol_srcu); in inode_tree_del()
5460 spin_lock(&root->inode_lock); in inode_tree_del()
5461 empty = RB_EMPTY_ROOT(&root->inode_tree); in inode_tree_del()
5462 spin_unlock(&root->inode_lock); in inode_tree_del()
5464 btrfs_add_dead_root(root); in inode_tree_del()
5468 void btrfs_invalidate_inodes(struct btrfs_root *root) in btrfs_invalidate_inodes() argument
5476 if (!test_bit(BTRFS_FS_STATE_ERROR, &root->fs_info->fs_state)) in btrfs_invalidate_inodes()
5477 WARN_ON(btrfs_root_refs(&root->root_item) != 0); in btrfs_invalidate_inodes()
5479 spin_lock(&root->inode_lock); in btrfs_invalidate_inodes()
5481 node = root->inode_tree.rb_node; in btrfs_invalidate_inodes()
5509 spin_unlock(&root->inode_lock); in btrfs_invalidate_inodes()
5519 spin_lock(&root->inode_lock); in btrfs_invalidate_inodes()
5523 if (cond_resched_lock(&root->inode_lock)) in btrfs_invalidate_inodes()
5528 spin_unlock(&root->inode_lock); in btrfs_invalidate_inodes()
5537 BTRFS_I(inode)->root = args->root; in btrfs_init_locked_inode()
5545 args->root == BTRFS_I(inode)->root; in btrfs_find_actor()
5550 struct btrfs_root *root) in btrfs_iget_locked() argument
5554 unsigned long hashval = btrfs_inode_hash(location->objectid, root); in btrfs_iget_locked()
5557 args.root = root; in btrfs_iget_locked()
5569 struct btrfs_root *root, int *new) in btrfs_iget() argument
5573 inode = btrfs_iget_locked(s, location, root); in btrfs_iget()
5596 struct btrfs_root *root) in new_simple_dir() argument
5603 BTRFS_I(inode)->root = root; in new_simple_dir()
5622 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_lookup_dentry() local
5623 struct btrfs_root *sub_root = root; in btrfs_lookup_dentry()
5639 inode = btrfs_iget(dir->i_sb, &location, root, NULL); in btrfs_lookup_dentry()
5645 index = srcu_read_lock(&root->fs_info->subvol_srcu); in btrfs_lookup_dentry()
5646 ret = fixup_tree_root_location(root, dir, dentry, in btrfs_lookup_dentry()
5656 srcu_read_unlock(&root->fs_info->subvol_srcu, index); in btrfs_lookup_dentry()
5658 if (!IS_ERR(inode) && root != sub_root) { in btrfs_lookup_dentry()
5659 down_read(&root->fs_info->cleanup_work_sem); in btrfs_lookup_dentry()
5662 up_read(&root->fs_info->cleanup_work_sem); in btrfs_lookup_dentry()
5674 struct btrfs_root *root; in btrfs_dentry_delete() local
5681 root = BTRFS_I(inode)->root; in btrfs_dentry_delete()
5682 if (btrfs_root_refs(&root->root_item) == 0) in btrfs_dentry_delete()
5719 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_real_readdir() local
5743 if (root->fs_info->tree_root == root) in btrfs_real_readdir()
5765 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in btrfs_real_readdir()
5774 ret = btrfs_next_leaf(root, path); in btrfs_real_readdir()
5806 if (verify_dir_item(root, leaf, di)) in btrfs_real_readdir()
5836 location.objectid == root->root_key.objectid) { in btrfs_real_readdir()
5913 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_write_inode() local
5921 if (btrfs_fs_closing(root->fs_info) && btrfs_is_free_space_inode(inode)) in btrfs_write_inode()
5926 trans = btrfs_join_transaction_nolock(root); in btrfs_write_inode()
5928 trans = btrfs_join_transaction(root); in btrfs_write_inode()
5931 ret = btrfs_commit_transaction(trans, root); in btrfs_write_inode()
5944 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_dirty_inode() local
5951 trans = btrfs_join_transaction(root); in btrfs_dirty_inode()
5955 ret = btrfs_update_inode(trans, root, inode); in btrfs_dirty_inode()
5958 btrfs_end_transaction(trans, root); in btrfs_dirty_inode()
5959 trans = btrfs_start_transaction(root, 1); in btrfs_dirty_inode()
5963 ret = btrfs_update_inode(trans, root, inode); in btrfs_dirty_inode()
5965 btrfs_end_transaction(trans, root); in btrfs_dirty_inode()
5967 btrfs_balance_delayed_items(root); in btrfs_dirty_inode()
5979 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_update_time() local
5981 if (btrfs_root_readonly(root)) in btrfs_update_time()
6002 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_set_inode_index_count() local
6016 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in btrfs_set_inode_index_count()
6079 args.root = BTRFS_I(inode)->root; in btrfs_insert_inode_locked()
6082 btrfs_inode_hash(inode->i_ino, BTRFS_I(inode)->root), in btrfs_insert_inode_locked()
6087 struct btrfs_root *root, in btrfs_new_inode() argument
6108 inode = new_inode(root->fs_info->sb); in btrfs_new_inode()
6146 BTRFS_I(inode)->root = root; in btrfs_new_inode()
6188 ret = btrfs_insert_empty_items(trans, root, path, key, sizes, nitems); in btrfs_new_inode()
6221 if (btrfs_test_opt(root, NODATASUM)) in btrfs_new_inode()
6223 if (btrfs_test_opt(root, NODATACOW)) in btrfs_new_inode()
6233 btrfs_update_root_times(trans, root); in btrfs_new_inode()
6237 btrfs_err(root->fs_info, in btrfs_new_inode()
6239 btrfs_ino(inode), root->root_key.objectid, ret); in btrfs_new_inode()
6270 struct btrfs_root *root = BTRFS_I(parent_inode)->root; in btrfs_add_link() local
6275 memcpy(&key, &BTRFS_I(inode)->root->root_key, sizeof(key)); in btrfs_add_link()
6283 ret = btrfs_add_root_ref(trans, root->fs_info->tree_root, in btrfs_add_link()
6284 key.objectid, root->root_key.objectid, in btrfs_add_link()
6287 ret = btrfs_insert_inode_ref(trans, root, name, name_len, ino, in btrfs_add_link()
6295 ret = btrfs_insert_dir_item(trans, root, name, name_len, in btrfs_add_link()
6301 btrfs_abort_transaction(trans, root, ret); in btrfs_add_link()
6309 ret = btrfs_update_inode(trans, root, parent_inode); in btrfs_add_link()
6311 btrfs_abort_transaction(trans, root, ret); in btrfs_add_link()
6318 err = btrfs_del_root_ref(trans, root->fs_info->tree_root, in btrfs_add_link()
6319 key.objectid, root->root_key.objectid, in btrfs_add_link()
6326 err = btrfs_del_inode_ref(trans, root, name, name_len, in btrfs_add_link()
6348 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_mknod() local
6360 trans = btrfs_start_transaction(root, 5); in btrfs_mknod()
6364 err = btrfs_find_free_ino(root, &objectid); in btrfs_mknod()
6368 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_mknod()
6393 btrfs_update_inode(trans, root, inode); in btrfs_mknod()
6399 btrfs_end_transaction(trans, root); in btrfs_mknod()
6400 btrfs_balance_delayed_items(root); in btrfs_mknod()
6401 btrfs_btree_balance_dirty(root); in btrfs_mknod()
6419 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_create() local
6431 trans = btrfs_start_transaction(root, 5); in btrfs_create()
6435 err = btrfs_find_free_ino(root, &objectid); in btrfs_create()
6439 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_create()
6461 err = btrfs_update_inode(trans, root, inode); in btrfs_create()
6474 btrfs_end_transaction(trans, root); in btrfs_create()
6479 btrfs_balance_delayed_items(root); in btrfs_create()
6480 btrfs_btree_balance_dirty(root); in btrfs_create()
6493 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_link() local
6500 if (root->objectid != BTRFS_I(inode)->root->objectid) in btrfs_link()
6515 trans = btrfs_start_transaction(root, 5); in btrfs_link()
6536 err = btrfs_update_inode(trans, root, inode); in btrfs_link()
6552 btrfs_balance_delayed_items(root); in btrfs_link()
6555 btrfs_end_transaction(trans, root); in btrfs_link()
6560 btrfs_btree_balance_dirty(root); in btrfs_link()
6568 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_mkdir() local
6579 trans = btrfs_start_transaction(root, 5); in btrfs_mkdir()
6583 err = btrfs_find_free_ino(root, &objectid); in btrfs_mkdir()
6587 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_mkdir()
6605 err = btrfs_update_inode(trans, root, inode); in btrfs_mkdir()
6623 btrfs_end_transaction(trans, root); in btrfs_mkdir()
6628 btrfs_balance_delayed_items(root); in btrfs_mkdir()
6629 btrfs_btree_balance_dirty(root); in btrfs_mkdir()
6751 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_get_extent() local
6765 em->bdev = root->fs_info->fs_devices->latest_bdev; in btrfs_get_extent()
6781 em->bdev = root->fs_info->fs_devices->latest_bdev; in btrfs_get_extent()
6800 ret = btrfs_lookup_file_extent(trans, root, path, in btrfs_get_extent()
6840 extent_end = ALIGN(extent_start + size, root->sectorsize); in btrfs_get_extent()
6846 ret = btrfs_next_leaf(root, path); in btrfs_get_extent()
6889 em->len = ALIGN(copy_size, root->sectorsize); in btrfs_get_extent()
6923 trans = btrfs_join_transaction(root); in btrfs_get_extent()
6949 btrfs_err(root->fs_info, "bad extent! em: [%llu %llu] passed [%llu %llu]", in btrfs_get_extent()
6994 trace_btrfs_get_extent(root, em); in btrfs_get_extent()
6998 ret = btrfs_end_transaction(trans, root); in btrfs_get_extent()
7140 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_new_extent_direct() local
7147 ret = btrfs_reserve_extent(root, len, root->sectorsize, 0, in btrfs_new_extent_direct()
7155 btrfs_free_reserved_extent(root, ins.objectid, ins.offset, 1); in btrfs_new_extent_direct()
7162 btrfs_free_reserved_extent(root, ins.objectid, ins.offset, 1); in btrfs_new_extent_direct()
7182 struct btrfs_root *root = BTRFS_I(inode)->root; in can_nocow_extent() local
7198 ret = btrfs_lookup_file_extent(NULL, root, path, btrfs_ino(inode), in can_nocow_extent()
7258 if (btrfs_extent_readonly(root, disk_bytenr)) in can_nocow_extent()
7265 range_end = round_up(offset + num_bytes, root->sectorsize) - 1; in can_nocow_extent()
7280 trans = btrfs_join_transaction(root); in can_nocow_extent()
7286 ret = btrfs_cross_ref_exist(trans, root, btrfs_ino(inode), in can_nocow_extent()
7288 btrfs_end_transaction(trans, root); in can_nocow_extent()
7302 if (csum_exist_in_range(root, disk_bytenr, num_bytes)) in can_nocow_extent()
7317 struct radix_tree_root *root = &inode->i_mapping->page_tree; in btrfs_page_exists_in_range() local
7340 radix_tree_gang_lookup_slot(root, &pagep, NULL, start_idx, 1)) { in btrfs_page_exists_in_range()
7456 struct btrfs_root *root = BTRFS_I(inode)->root; in create_pinned_em() local
7471 em->bdev = root->fs_info->fs_devices->latest_bdev; in create_pinned_em()
7526 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_get_blocks_direct() local
7538 len = min_t(u64, len, root->sectorsize); in btrfs_get_blocks_direct()
7723 struct btrfs_root *root = BTRFS_I(inode)->root; in submit_dio_repair_bio() local
7730 ret = btrfs_bio_wq_end_io(root->fs_info, bio, in submit_dio_repair_bio()
7735 ret = btrfs_map_bio(root, rw, bio, mirror_num, 0); in submit_dio_repair_bio()
7748 num_copies = btrfs_num_copies(BTRFS_I(inode)->root->fs_info, in btrfs_check_dio_repairable()
7813 btrfs_debug(BTRFS_I(inode)->root->fs_info, in dio_read_error()
8010 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_endio_direct_write() local
8027 btrfs_queue_work(root->fs_info->endio_write_workers, in btrfs_endio_direct_write()
8054 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_submit_bio_start_direct_io() local
8055 ret = btrfs_csum_one_bio(root, inode, bio, offset, 1); in __btrfs_submit_bio_start_direct_io()
8066 btrfs_warn(BTRFS_I(dip->inode)->root->fs_info, in btrfs_end_dio_bio()
8109 static inline int btrfs_lookup_and_bind_dio_csum(struct btrfs_root *root, in btrfs_lookup_and_bind_dio_csum() argument
8125 ret = btrfs_lookup_bio_sums_dio(root, inode, dip->orig_bio, in btrfs_lookup_and_bind_dio_csum()
8147 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_submit_dio_bio() local
8156 ret = btrfs_bio_wq_end_io(root->fs_info, bio, in __btrfs_submit_dio_bio()
8166 ret = btrfs_wq_submit_bio(root->fs_info, in __btrfs_submit_dio_bio()
8177 ret = btrfs_csum_one_bio(root, inode, bio, file_offset, 1); in __btrfs_submit_dio_bio()
8181 ret = btrfs_lookup_and_bind_dio_csum(root, inode, dip, bio, in __btrfs_submit_dio_bio()
8187 ret = btrfs_map_bio(root, rw, bio, 0, async_submit); in __btrfs_submit_dio_bio()
8197 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_submit_direct_hook() local
8210 ret = btrfs_map_block(root->fs_info, rw, start_sector << 9, in btrfs_submit_direct_hook()
8222 if (btrfs_get_alloc_profile(root, 1) & BTRFS_BLOCK_GROUP_RAID56_MASK) in btrfs_submit_direct_hook()
8271 ret = btrfs_map_block(root->fs_info, rw, in btrfs_submit_direct_hook()
8407 static ssize_t check_direct_IO(struct btrfs_root *root, struct kiocb *iocb, in check_direct_IO() argument
8412 unsigned blocksize_mask = root->sectorsize - 1; in check_direct_IO()
8445 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_direct_IO() local
8453 if (check_direct_IO(BTRFS_I(inode)->root, iocb, iter, offset)) in btrfs_direct_IO()
8493 dio_data.reserve = round_up(count, root->sectorsize); in btrfs_direct_IO()
8503 BTRFS_I(inode)->root->fs_info->fs_devices->latest_bdev, in btrfs_direct_IO()
8734 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_page_mkwrite() local
8833 BTRFS_I(inode)->last_trans = root->fs_info->generation; in btrfs_page_mkwrite()
8834 BTRFS_I(inode)->last_sub_trans = BTRFS_I(inode)->root->log_transid; in btrfs_page_mkwrite()
8835 BTRFS_I(inode)->last_log_commit = BTRFS_I(inode)->root->last_log_commit; in btrfs_page_mkwrite()
8854 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_truncate() local
8859 u64 mask = root->sectorsize - 1; in btrfs_truncate()
8860 u64 min_size = btrfs_calc_trunc_metadata_size(root, 1); in btrfs_truncate()
8903 rsv = btrfs_alloc_block_rsv(root, BTRFS_BLOCK_RSV_TEMP); in btrfs_truncate()
8913 trans = btrfs_start_transaction(root, 2); in btrfs_truncate()
8920 ret = btrfs_block_rsv_migrate(&root->fs_info->trans_block_rsv, rsv, in btrfs_truncate()
8935 ret = btrfs_truncate_inode_items(trans, root, inode, in btrfs_truncate()
8943 trans->block_rsv = &root->fs_info->trans_block_rsv; in btrfs_truncate()
8944 ret = btrfs_update_inode(trans, root, inode); in btrfs_truncate()
8950 btrfs_end_transaction(trans, root); in btrfs_truncate()
8951 btrfs_btree_balance_dirty(root); in btrfs_truncate()
8953 trans = btrfs_start_transaction(root, 2); in btrfs_truncate()
8960 ret = btrfs_block_rsv_migrate(&root->fs_info->trans_block_rsv, in btrfs_truncate()
8967 trans->block_rsv = root->orphan_block_rsv; in btrfs_truncate()
8974 trans->block_rsv = &root->fs_info->trans_block_rsv; in btrfs_truncate()
8975 ret = btrfs_update_inode(trans, root, inode); in btrfs_truncate()
8979 ret = btrfs_end_transaction(trans, root); in btrfs_truncate()
8980 btrfs_btree_balance_dirty(root); in btrfs_truncate()
8984 btrfs_free_block_rsv(root, rsv); in btrfs_truncate()
9038 ei->root = NULL; in btrfs_alloc_inode()
9098 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_destroy_inode() local
9113 if (!root) in btrfs_destroy_inode()
9118 btrfs_info(root->fs_info, "inode %llu still on the orphan list", in btrfs_destroy_inode()
9120 atomic_dec(&root->orphan_inodes); in btrfs_destroy_inode()
9128 btrfs_err(root->fs_info, "found ordered extent %llu %llu on inode cleanup", in btrfs_destroy_inode()
9144 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_drop_inode() local
9146 if (root == NULL) in btrfs_drop_inode()
9150 if (btrfs_root_refs(&root->root_item) == 0) in btrfs_drop_inode()
9237 stat->dev = BTRFS_I(inode)->root->anon_dev; in btrfs_getattr()
9252 struct btrfs_root *root = BTRFS_I(old_dir)->root; in btrfs_rename() local
9253 struct btrfs_root *dest = BTRFS_I(new_dir)->root; in btrfs_rename()
9266 if (old_ino != BTRFS_FIRST_FREE_OBJECTID && root != dest) in btrfs_rename()
9306 down_read(&root->fs_info->subvol_sem); in btrfs_rename()
9315 trans = btrfs_start_transaction(root, 11); in btrfs_rename()
9321 if (dest != root) in btrfs_rename()
9331 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_rename()
9347 btrfs_pin_log_trans(root); in btrfs_rename()
9361 root_objectid = BTRFS_I(old_inode)->root->root_key.objectid; in btrfs_rename()
9362 ret = btrfs_unlink_subvol(trans, root, old_dir, root_objectid, in btrfs_rename()
9366 ret = __btrfs_unlink_inode(trans, root, old_dir, in btrfs_rename()
9371 ret = btrfs_update_inode(trans, root, old_inode); in btrfs_rename()
9374 btrfs_abort_transaction(trans, root, ret); in btrfs_rename()
9398 btrfs_abort_transaction(trans, root, ret); in btrfs_rename()
9407 btrfs_abort_transaction(trans, root, ret); in btrfs_rename()
9417 btrfs_end_log_trans(root); in btrfs_rename()
9420 btrfs_end_transaction(trans, root); in btrfs_rename()
9423 up_read(&root->fs_info->subvol_sem); in btrfs_rename()
9493 static int __start_delalloc_inodes(struct btrfs_root *root, int delay_iput, in __start_delalloc_inodes() argument
9506 mutex_lock(&root->delalloc_mutex); in __start_delalloc_inodes()
9507 spin_lock(&root->delalloc_lock); in __start_delalloc_inodes()
9508 list_splice_init(&root->delalloc_inodes, &splice); in __start_delalloc_inodes()
9514 &root->delalloc_inodes); in __start_delalloc_inodes()
9517 cond_resched_lock(&root->delalloc_lock); in __start_delalloc_inodes()
9520 spin_unlock(&root->delalloc_lock); in __start_delalloc_inodes()
9532 btrfs_queue_work(root->fs_info->flush_workers, in __start_delalloc_inodes()
9538 spin_lock(&root->delalloc_lock); in __start_delalloc_inodes()
9540 spin_unlock(&root->delalloc_lock); in __start_delalloc_inodes()
9549 spin_lock(&root->delalloc_lock); in __start_delalloc_inodes()
9550 list_splice_tail(&splice, &root->delalloc_inodes); in __start_delalloc_inodes()
9551 spin_unlock(&root->delalloc_lock); in __start_delalloc_inodes()
9553 mutex_unlock(&root->delalloc_mutex); in __start_delalloc_inodes()
9557 int btrfs_start_delalloc_inodes(struct btrfs_root *root, int delay_iput) in btrfs_start_delalloc_inodes() argument
9561 if (test_bit(BTRFS_FS_STATE_ERROR, &root->fs_info->fs_state)) in btrfs_start_delalloc_inodes()
9564 ret = __start_delalloc_inodes(root, delay_iput, -1); in btrfs_start_delalloc_inodes()
9572 atomic_inc(&root->fs_info->async_submit_draining); in btrfs_start_delalloc_inodes()
9573 while (atomic_read(&root->fs_info->nr_async_submits) || in btrfs_start_delalloc_inodes()
9574 atomic_read(&root->fs_info->async_delalloc_pages)) { in btrfs_start_delalloc_inodes()
9575 wait_event(root->fs_info->async_submit_wait, in btrfs_start_delalloc_inodes()
9576 (atomic_read(&root->fs_info->nr_async_submits) == 0 && in btrfs_start_delalloc_inodes()
9577 atomic_read(&root->fs_info->async_delalloc_pages) == 0)); in btrfs_start_delalloc_inodes()
9579 atomic_dec(&root->fs_info->async_submit_draining); in btrfs_start_delalloc_inodes()
9586 struct btrfs_root *root; in btrfs_start_delalloc_roots() local
9599 root = list_first_entry(&splice, struct btrfs_root, in btrfs_start_delalloc_roots()
9601 root = btrfs_grab_fs_root(root); in btrfs_start_delalloc_roots()
9602 BUG_ON(!root); in btrfs_start_delalloc_roots()
9603 list_move_tail(&root->delalloc_root, in btrfs_start_delalloc_roots()
9607 ret = __start_delalloc_inodes(root, delay_iput, nr); in btrfs_start_delalloc_roots()
9608 btrfs_put_fs_root(root); in btrfs_start_delalloc_roots()
9643 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_symlink() local
9658 if (name_len > BTRFS_MAX_INLINE_DATA_SIZE(root)) in btrfs_symlink()
9668 trans = btrfs_start_transaction(root, 7); in btrfs_symlink()
9672 err = btrfs_find_free_ino(root, &objectid); in btrfs_symlink()
9676 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_symlink()
9712 err = btrfs_insert_empty_item(trans, root, path, &key, in btrfs_symlink()
9738 err = btrfs_update_inode(trans, root, inode); in btrfs_symlink()
9748 btrfs_end_transaction(trans, root); in btrfs_symlink()
9753 btrfs_btree_balance_dirty(root); in btrfs_symlink()
9769 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_prealloc_file_range() local
9782 trans = btrfs_start_transaction(root, 3); in __btrfs_prealloc_file_range()
9798 ret = btrfs_reserve_extent(root, cur_bytes, min_size, 0, in __btrfs_prealloc_file_range()
9802 btrfs_end_transaction(trans, root); in __btrfs_prealloc_file_range()
9813 btrfs_free_reserved_extent(root, ins.objectid, in __btrfs_prealloc_file_range()
9815 btrfs_abort_transaction(trans, root, ret); in __btrfs_prealloc_file_range()
9817 btrfs_end_transaction(trans, root); in __btrfs_prealloc_file_range()
9838 em->bdev = root->fs_info->fs_devices->latest_bdev; in __btrfs_prealloc_file_range()
9872 ret = btrfs_update_inode(trans, root, inode); in __btrfs_prealloc_file_range()
9875 btrfs_abort_transaction(trans, root, ret); in __btrfs_prealloc_file_range()
9877 btrfs_end_transaction(trans, root); in __btrfs_prealloc_file_range()
9882 btrfs_end_transaction(trans, root); in __btrfs_prealloc_file_range()
9912 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_permission() local
9917 if (btrfs_root_readonly(root)) in btrfs_permission()
9928 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_tmpfile() local
9937 trans = btrfs_start_transaction(root, 5); in btrfs_tmpfile()
9941 ret = btrfs_find_free_ino(root, &objectid); in btrfs_tmpfile()
9945 inode = btrfs_new_inode(trans, root, dir, NULL, 0, in btrfs_tmpfile()
9963 ret = btrfs_update_inode(trans, root, inode); in btrfs_tmpfile()
9983 btrfs_end_transaction(trans, root); in btrfs_tmpfile()
9986 btrfs_balance_delayed_items(root); in btrfs_tmpfile()
9987 btrfs_btree_balance_dirty(root); in btrfs_tmpfile()