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()
314 btrfs_end_transaction(trans, root); in cow_file_range_inline()
330 struct btrfs_root *root; member
361 struct btrfs_root *root = BTRFS_I(inode)->root; in inode_need_compress() local
364 if (btrfs_test_opt(root, FORCE_COMPRESS)) in inode_need_compress()
369 if (btrfs_test_opt(root, COMPRESS) || in inode_need_compress()
399 struct btrfs_root *root = BTRFS_I(inode)->root; in compress_file_range() local
401 u64 blocksize = root->sectorsize; in compress_file_range()
414 int compress_type = root->fs_info->compress_type; in compress_file_range()
527 ret = cow_file_range_inline(root, inode, start, end, in compress_file_range()
531 ret = cow_file_range_inline(root, inode, start, end, in compress_file_range()
592 if (!btrfs_test_opt(root, FORCE_COMPRESS) && in compress_file_range()
674 struct btrfs_root *root = BTRFS_I(inode)->root; in submit_compressed_extents() local
729 ret = btrfs_reserve_extent(root, in submit_compressed_extents()
779 em->bdev = root->fs_info->fs_devices->latest_bdev; in submit_compressed_extents()
851 btrfs_free_reserved_extent(root, ins.objectid, ins.offset, 1); in submit_compressed_extents()
917 struct btrfs_root *root = BTRFS_I(inode)->root; in cow_file_range() local
923 u64 blocksize = root->sectorsize; in cow_file_range()
946 ret = cow_file_range_inline(root, inode, start, end, 0, 0, in cow_file_range()
965 btrfs_super_total_bytes(root->fs_info->super_copy)); in cow_file_range()
974 ret = btrfs_reserve_extent(root, cur_alloc_size, in cow_file_range()
975 root->sectorsize, 0, alloc_hint, in cow_file_range()
996 em->bdev = root->fs_info->fs_devices->latest_bdev; in cow_file_range()
1020 if (root->root_key.objectid == in cow_file_range()
1056 btrfs_free_reserved_extent(root, ins.objectid, ins.offset, 1); in cow_file_range()
1090 struct btrfs_root *root; in async_cow_submit() local
1095 root = async_cow->root; in async_cow_submit()
1099 if (atomic_sub_return(nr_pages, &root->fs_info->async_delalloc_pages) < in async_cow_submit()
1101 waitqueue_active(&root->fs_info->async_submit_wait)) in async_cow_submit()
1102 wake_up(&root->fs_info->async_submit_wait); in async_cow_submit()
1122 struct btrfs_root *root = BTRFS_I(inode)->root; in cow_file_range_async() local
1133 async_cow->root = root; in cow_file_range_async()
1138 !btrfs_test_opt(root, FORCE_COMPRESS)) in cow_file_range_async()
1153 atomic_add(nr_pages, &root->fs_info->async_delalloc_pages); in cow_file_range_async()
1155 btrfs_queue_work(root->fs_info->delalloc_workers, in cow_file_range_async()
1158 if (atomic_read(&root->fs_info->async_delalloc_pages) > limit) { in cow_file_range_async()
1159 wait_event(root->fs_info->async_submit_wait, in cow_file_range_async()
1160 (atomic_read(&root->fs_info->async_delalloc_pages) < in cow_file_range_async()
1164 while (atomic_read(&root->fs_info->async_submit_draining) && in cow_file_range_async()
1165 atomic_read(&root->fs_info->async_delalloc_pages)) { in cow_file_range_async()
1166 wait_event(root->fs_info->async_submit_wait, in cow_file_range_async()
1167 (atomic_read(&root->fs_info->async_delalloc_pages) == in cow_file_range_async()
1178 static noinline int csum_exist_in_range(struct btrfs_root *root, in csum_exist_in_range() argument
1185 ret = btrfs_lookup_csums_range(root->fs_info->csum_root, bytenr, in csum_exist_in_range()
1210 struct btrfs_root *root = BTRFS_I(inode)->root; in run_delalloc_nocow() local
1247 trans = btrfs_join_transaction_nolock(root); in run_delalloc_nocow()
1249 trans = btrfs_join_transaction(root); in run_delalloc_nocow()
1263 trans->block_rsv = &root->fs_info->delalloc_block_rsv; in run_delalloc_nocow()
1268 ret = btrfs_lookup_file_extent(trans, root, path, ino, in run_delalloc_nocow()
1284 ret = btrfs_next_leaf(root, path); in run_delalloc_nocow()
1339 if (btrfs_extent_readonly(root, disk_bytenr)) in run_delalloc_nocow()
1341 if (btrfs_cross_ref_exist(trans, root, ino, in run_delalloc_nocow()
1353 err = btrfs_start_write_no_snapshoting(root); in run_delalloc_nocow()
1362 if (csum_exist_in_range(root, disk_bytenr, num_bytes)) in run_delalloc_nocow()
1369 extent_end = ALIGN(extent_end, root->sectorsize); in run_delalloc_nocow()
1377 btrfs_end_write_no_snapshoting(root); in run_delalloc_nocow()
1397 btrfs_end_write_no_snapshoting(root); in run_delalloc_nocow()
1416 em->bdev = root->fs_info->fs_devices->latest_bdev; in run_delalloc_nocow()
1442 if (root->root_key.objectid == in run_delalloc_nocow()
1448 btrfs_end_write_no_snapshoting(root); in run_delalloc_nocow()
1459 btrfs_end_write_no_snapshoting(root); in run_delalloc_nocow()
1479 err = btrfs_end_transaction(trans, root); in run_delalloc_nocow()
1641 static void btrfs_add_delalloc_inodes(struct btrfs_root *root, in btrfs_add_delalloc_inodes() argument
1644 spin_lock(&root->delalloc_lock); in btrfs_add_delalloc_inodes()
1647 &root->delalloc_inodes); in btrfs_add_delalloc_inodes()
1650 root->nr_delalloc_inodes++; in btrfs_add_delalloc_inodes()
1651 if (root->nr_delalloc_inodes == 1) { in btrfs_add_delalloc_inodes()
1652 spin_lock(&root->fs_info->delalloc_root_lock); in btrfs_add_delalloc_inodes()
1653 BUG_ON(!list_empty(&root->delalloc_root)); in btrfs_add_delalloc_inodes()
1654 list_add_tail(&root->delalloc_root, in btrfs_add_delalloc_inodes()
1655 &root->fs_info->delalloc_roots); in btrfs_add_delalloc_inodes()
1656 spin_unlock(&root->fs_info->delalloc_root_lock); in btrfs_add_delalloc_inodes()
1659 spin_unlock(&root->delalloc_lock); in btrfs_add_delalloc_inodes()
1662 static void btrfs_del_delalloc_inode(struct btrfs_root *root, in btrfs_del_delalloc_inode() argument
1665 spin_lock(&root->delalloc_lock); in btrfs_del_delalloc_inode()
1670 root->nr_delalloc_inodes--; in btrfs_del_delalloc_inode()
1671 if (!root->nr_delalloc_inodes) { in btrfs_del_delalloc_inode()
1672 spin_lock(&root->fs_info->delalloc_root_lock); in btrfs_del_delalloc_inode()
1673 BUG_ON(list_empty(&root->delalloc_root)); in btrfs_del_delalloc_inode()
1674 list_del_init(&root->delalloc_root); in btrfs_del_delalloc_inode()
1675 spin_unlock(&root->fs_info->delalloc_root_lock); in btrfs_del_delalloc_inode()
1678 spin_unlock(&root->delalloc_lock); in btrfs_del_delalloc_inode()
1698 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_set_bit_hook() local
1711 if (btrfs_test_is_dummy_root(root)) in btrfs_set_bit_hook()
1714 __percpu_counter_add(&root->fs_info->delalloc_bytes, len, in btrfs_set_bit_hook()
1715 root->fs_info->delalloc_batch); in btrfs_set_bit_hook()
1722 btrfs_add_delalloc_inodes(root, inode); in btrfs_set_bit_hook()
1749 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_clear_bit_hook() local
1766 root != root->fs_info->tree_root) in btrfs_clear_bit_hook()
1770 if (btrfs_test_is_dummy_root(root)) in btrfs_clear_bit_hook()
1773 if (root->root_key.objectid != BTRFS_DATA_RELOC_TREE_OBJECTID in btrfs_clear_bit_hook()
1777 __percpu_counter_add(&root->fs_info->delalloc_bytes, -len, in btrfs_clear_bit_hook()
1778 root->fs_info->delalloc_batch); in btrfs_clear_bit_hook()
1784 btrfs_del_delalloc_inode(root, inode); in btrfs_clear_bit_hook()
1797 struct btrfs_root *root = BTRFS_I(page->mapping->host)->root; in btrfs_merge_bio_hook() local
1808 ret = btrfs_map_block(root->fs_info, rw, logical, in btrfs_merge_bio_hook()
1830 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_submit_bio_start() local
1833 ret = btrfs_csum_one_bio(root, inode, bio, 0, 0); in __btrfs_submit_bio_start()
1850 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_submit_bio_done() local
1853 ret = btrfs_map_bio(root, rw, bio, mirror_num, 1); in __btrfs_submit_bio_done()
1867 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_submit_bio_hook() local
1879 ret = btrfs_bio_wq_end_io(root->fs_info, bio, metadata); in btrfs_submit_bio_hook()
1889 ret = btrfs_lookup_bio_sums(root, inode, bio, NULL); in btrfs_submit_bio_hook()
1896 if (root->root_key.objectid == BTRFS_DATA_RELOC_TREE_OBJECTID) in btrfs_submit_bio_hook()
1899 ret = btrfs_wq_submit_bio(BTRFS_I(inode)->root->fs_info, in btrfs_submit_bio_hook()
1906 ret = btrfs_csum_one_bio(root, inode, bio, 0, 0); in btrfs_submit_bio_hook()
1912 ret = btrfs_map_bio(root, rw, bio, mirror_num, 0); in btrfs_submit_bio_hook()
1933 BTRFS_I(inode)->root->fs_info->csum_root, sum); in add_pending_csums()
2029 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_writepage_start_hook() local
2047 btrfs_queue_work(root->fs_info->fixup_workers, &fixup->work); in btrfs_writepage_start_hook()
2058 struct btrfs_root *root = BTRFS_I(inode)->root; in insert_reserved_file_extent() local
2079 ret = __btrfs_drop_extents(trans, root, inode, path, file_pos, in insert_reserved_file_extent()
2091 ret = btrfs_insert_empty_item(trans, root, path, &ins, in insert_reserved_file_extent()
2118 ret = btrfs_alloc_reserved_file_extent(trans, root, in insert_reserved_file_extent()
2119 root->root_key.objectid, in insert_reserved_file_extent()
2151 struct rb_root root; member
2195 static void backref_insert(struct rb_root *root, in backref_insert() argument
2198 struct rb_node **p = &root->rb_node; in backref_insert()
2215 rb_insert_color(&backref->node, root); in backref_insert()
2230 struct btrfs_root *root; in record_one_backref() local
2239 if (BTRFS_I(inode)->root->root_key.objectid == root_id && in record_one_backref()
2247 fs_info = BTRFS_I(inode)->root->fs_info; in record_one_backref()
2248 root = btrfs_read_fs_root_no_name(fs_info, &key); in record_one_backref()
2249 if (IS_ERR(root)) { in record_one_backref()
2250 if (PTR_ERR(root) == -ENOENT) in record_one_backref()
2255 return PTR_ERR(root); in record_one_backref()
2265 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in record_one_backref()
2277 ret = btrfs_next_leaf(root, path); in record_one_backref()
2334 backref_insert(&new->root, backref); in record_one_backref()
2345 struct btrfs_fs_info *fs_info = BTRFS_I(new->inode)->root->fs_info; in record_extent_backrefs()
2404 struct btrfs_root *root; in relink_extent_backref() local
2430 fs_info = BTRFS_I(src_inode)->root->fs_info; in relink_extent_backref()
2433 root = btrfs_read_fs_root_no_name(fs_info, &key); in relink_extent_backref()
2434 if (IS_ERR(root)) { in relink_extent_backref()
2436 if (PTR_ERR(root) == -ENOENT) in relink_extent_backref()
2438 return PTR_ERR(root); in relink_extent_backref()
2441 if (btrfs_root_readonly(root)) { in relink_extent_backref()
2451 inode = btrfs_iget(fs_info->sb, &key, root, NULL); in relink_extent_backref()
2471 trans = btrfs_join_transaction(root); in relink_extent_backref()
2481 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in relink_extent_backref()
2507 ret = btrfs_drop_extents(trans, root, inode, start, in relink_extent_backref()
2522 ret = btrfs_search_slot(trans, root, &key, path, 0, 1); in relink_extent_backref()
2550 ret = btrfs_insert_empty_item(trans, root, path, &key, in relink_extent_backref()
2553 btrfs_abort_transaction(trans, root, ret); in relink_extent_backref()
2575 ret = btrfs_inc_extent_ref(trans, root, new->bytenr, in relink_extent_backref()
2580 btrfs_abort_transaction(trans, root, ret); in relink_extent_backref()
2588 btrfs_end_transaction(trans, root); in relink_extent_backref()
2616 struct btrfs_root *root; in relink_file_extents() local
2621 root = BTRFS_I(inode)->root; in relink_file_extents()
2634 node = rb_first(&new->root); in relink_file_extents()
2637 rb_erase(node, &new->root); in relink_file_extents()
2658 atomic_dec(&root->fs_info->defrag_running); in relink_file_extents()
2659 wake_up(&root->fs_info->transaction_wait); in relink_file_extents()
2666 struct btrfs_root *root = BTRFS_I(inode)->root; in record_old_file_extents() local
2683 new->root = RB_ROOT; in record_old_file_extents()
2694 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in record_old_file_extents()
2715 ret = btrfs_next_leaf(root, path); in record_old_file_extents()
2764 atomic_inc(&root->fs_info->defrag_running); in record_old_file_extents()
2775 static void btrfs_release_delalloc_bytes(struct btrfs_root *root, in btrfs_release_delalloc_bytes() argument
2780 cache = btrfs_lookup_block_group(root->fs_info, start); in btrfs_release_delalloc_bytes()
2797 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_finish_ordered_io() local
2831 trans = btrfs_join_transaction_nolock(root); in btrfs_finish_ordered_io()
2833 trans = btrfs_join_transaction(root); in btrfs_finish_ordered_io()
2839 trans->block_rsv = &root->fs_info->delalloc_block_rsv; in btrfs_finish_ordered_io()
2840 ret = btrfs_update_inode_fallback(trans, root, inode); in btrfs_finish_ordered_io()
2842 btrfs_abort_transaction(trans, root, ret); in btrfs_finish_ordered_io()
2854 u64 last_snapshot = btrfs_root_last_snapshot(&root->root_item); in btrfs_finish_ordered_io()
2865 trans = btrfs_join_transaction_nolock(root); in btrfs_finish_ordered_io()
2867 trans = btrfs_join_transaction(root); in btrfs_finish_ordered_io()
2874 trans->block_rsv = &root->fs_info->delalloc_block_rsv; in btrfs_finish_ordered_io()
2885 BUG_ON(root == root->fs_info->tree_root); in btrfs_finish_ordered_io()
2894 btrfs_release_delalloc_bytes(root, in btrfs_finish_ordered_io()
2902 btrfs_abort_transaction(trans, root, ret); in btrfs_finish_ordered_io()
2910 ret = btrfs_update_inode_fallback(trans, root, inode); in btrfs_finish_ordered_io()
2912 btrfs_abort_transaction(trans, root, ret); in btrfs_finish_ordered_io()
2921 if (root != root->fs_info->tree_root) in btrfs_finish_ordered_io()
2924 btrfs_end_transaction(trans, root); in btrfs_finish_ordered_io()
2948 btrfs_free_reserved_extent(root, ordered_extent->start, in btrfs_finish_ordered_io()
2963 atomic_dec(&root->fs_info->defrag_running); in btrfs_finish_ordered_io()
2988 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_writepage_end_io_hook() local
3001 wq = root->fs_info->endio_freespace_worker; in btrfs_writepage_end_io_hook()
3004 wq = root->fs_info->endio_write_workers; in btrfs_writepage_end_io_hook()
3038 btrfs_warn(BTRFS_I(inode)->root->fs_info, in __readpage_endio_check()
3061 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_readpage_end_io_hook() local
3071 if (root->root_key.objectid == BTRFS_DATA_RELOC_TREE_OBJECTID && in btrfs_readpage_end_io_hook()
3085 struct btrfs_fs_info *fs_info = BTRFS_I(inode)->root->fs_info; in btrfs_add_delayed_iput()
3101 void btrfs_run_delayed_iputs(struct btrfs_root *root) in btrfs_run_delayed_iputs() argument
3103 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_run_delayed_iputs()
3131 struct btrfs_root *root) in btrfs_orphan_commit_root() argument
3136 if (atomic_read(&root->orphan_inodes) || in btrfs_orphan_commit_root()
3137 root->orphan_cleanup_state != ORPHAN_CLEANUP_DONE) in btrfs_orphan_commit_root()
3140 spin_lock(&root->orphan_lock); in btrfs_orphan_commit_root()
3141 if (atomic_read(&root->orphan_inodes)) { in btrfs_orphan_commit_root()
3142 spin_unlock(&root->orphan_lock); in btrfs_orphan_commit_root()
3146 if (root->orphan_cleanup_state != ORPHAN_CLEANUP_DONE) { in btrfs_orphan_commit_root()
3147 spin_unlock(&root->orphan_lock); in btrfs_orphan_commit_root()
3151 block_rsv = root->orphan_block_rsv; in btrfs_orphan_commit_root()
3152 root->orphan_block_rsv = NULL; in btrfs_orphan_commit_root()
3153 spin_unlock(&root->orphan_lock); in btrfs_orphan_commit_root()
3155 if (test_bit(BTRFS_ROOT_ORPHAN_ITEM_INSERTED, &root->state) && in btrfs_orphan_commit_root()
3156 btrfs_root_refs(&root->root_item) > 0) { in btrfs_orphan_commit_root()
3157 ret = btrfs_del_orphan_item(trans, root->fs_info->tree_root, in btrfs_orphan_commit_root()
3158 root->root_key.objectid); in btrfs_orphan_commit_root()
3160 btrfs_abort_transaction(trans, root, ret); in btrfs_orphan_commit_root()
3163 &root->state); in btrfs_orphan_commit_root()
3168 btrfs_free_block_rsv(root, block_rsv); in btrfs_orphan_commit_root()
3181 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_orphan_add() local
3187 if (!root->orphan_block_rsv) { in btrfs_orphan_add()
3188 block_rsv = btrfs_alloc_block_rsv(root, BTRFS_BLOCK_RSV_TEMP); in btrfs_orphan_add()
3193 spin_lock(&root->orphan_lock); in btrfs_orphan_add()
3194 if (!root->orphan_block_rsv) { in btrfs_orphan_add()
3195 root->orphan_block_rsv = block_rsv; in btrfs_orphan_add()
3197 btrfs_free_block_rsv(root, block_rsv); in btrfs_orphan_add()
3209 if (!xchg(&root->orphan_item_inserted, 1)) in btrfs_orphan_add()
3215 atomic_inc(&root->orphan_inodes); in btrfs_orphan_add()
3221 spin_unlock(&root->orphan_lock); in btrfs_orphan_add()
3231 ret = btrfs_insert_orphan_item(trans, root, btrfs_ino(inode)); in btrfs_orphan_add()
3233 atomic_dec(&root->orphan_inodes); in btrfs_orphan_add()
3242 btrfs_abort_transaction(trans, root, ret); in btrfs_orphan_add()
3251 ret = btrfs_insert_orphan_item(trans, root->fs_info->tree_root, in btrfs_orphan_add()
3252 root->root_key.objectid); in btrfs_orphan_add()
3254 btrfs_abort_transaction(trans, root, ret); in btrfs_orphan_add()
3268 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_orphan_del() local
3273 spin_lock(&root->orphan_lock); in btrfs_orphan_del()
3281 spin_unlock(&root->orphan_lock); in btrfs_orphan_del()
3284 atomic_dec(&root->orphan_inodes); in btrfs_orphan_del()
3286 ret = btrfs_del_orphan_item(trans, root, in btrfs_orphan_del()
3300 int btrfs_orphan_cleanup(struct btrfs_root *root) in btrfs_orphan_cleanup() argument
3310 if (cmpxchg(&root->orphan_cleanup_state, 0, ORPHAN_CLEANUP_STARTED)) in btrfs_orphan_cleanup()
3325 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in btrfs_orphan_cleanup()
3361 btrfs_err(root->fs_info, in btrfs_orphan_cleanup()
3372 inode = btrfs_iget(root->fs_info->sb, &found_key, root, NULL); in btrfs_orphan_cleanup()
3377 if (ret == -ESTALE && root == root->fs_info->tree_root) { in btrfs_orphan_cleanup()
3379 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_orphan_cleanup()
3414 trans = btrfs_start_transaction(root, 1); in btrfs_orphan_cleanup()
3419 btrfs_debug(root->fs_info, "auto deleting %Lu", in btrfs_orphan_cleanup()
3421 ret = btrfs_del_orphan_item(trans, root, in btrfs_orphan_cleanup()
3423 btrfs_end_transaction(trans, root); in btrfs_orphan_cleanup()
3435 atomic_inc(&root->orphan_inodes); in btrfs_orphan_cleanup()
3446 trans = btrfs_start_transaction(root, 1); in btrfs_orphan_cleanup()
3453 btrfs_end_transaction(trans, root); in btrfs_orphan_cleanup()
3474 root->orphan_cleanup_state = ORPHAN_CLEANUP_DONE; in btrfs_orphan_cleanup()
3476 if (root->orphan_block_rsv) in btrfs_orphan_cleanup()
3477 btrfs_block_rsv_release(root, root->orphan_block_rsv, in btrfs_orphan_cleanup()
3480 if (root->orphan_block_rsv || in btrfs_orphan_cleanup()
3481 test_bit(BTRFS_ROOT_ORPHAN_ITEM_INSERTED, &root->state)) { in btrfs_orphan_cleanup()
3482 trans = btrfs_join_transaction(root); in btrfs_orphan_cleanup()
3484 btrfs_end_transaction(trans, root); in btrfs_orphan_cleanup()
3488 btrfs_debug(root->fs_info, "unlinked %d orphans", nr_unlink); in btrfs_orphan_cleanup()
3490 btrfs_debug(root->fs_info, "truncated %d orphans", nr_truncate); in btrfs_orphan_cleanup()
3494 btrfs_err(root->fs_info, in btrfs_orphan_cleanup()
3577 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_read_locked_inode() local
3596 ret = btrfs_lookup_inode(NULL, root, path, &location, 0); in btrfs_read_locked_inode()
3649 if (BTRFS_I(inode)->last_trans == root->fs_info->generation) in btrfs_read_locked_inode()
3686 btrfs_err(root->fs_info, in btrfs_read_locked_inode()
3689 root->root_key.objectid, ret); in btrfs_read_locked_inode()
3705 if (root == root->fs_info->tree_root) in btrfs_read_locked_inode()
3782 struct btrfs_root *root, struct inode *inode) in btrfs_update_inode_item() argument
3794 ret = btrfs_lookup_inode(trans, root, path, &BTRFS_I(inode)->location, in btrfs_update_inode_item()
3819 struct btrfs_root *root, struct inode *inode) in btrfs_update_inode() argument
3831 && root->root_key.objectid != BTRFS_DATA_RELOC_TREE_OBJECTID in btrfs_update_inode()
3832 && !root->fs_info->log_root_recovering) { in btrfs_update_inode()
3833 btrfs_update_root_times(trans, root); in btrfs_update_inode()
3835 ret = btrfs_delayed_update_inode(trans, root, inode); in btrfs_update_inode()
3841 return btrfs_update_inode_item(trans, root, inode); in btrfs_update_inode()
3845 struct btrfs_root *root, in btrfs_update_inode_fallback() argument
3850 ret = btrfs_update_inode(trans, root, inode); in btrfs_update_inode_fallback()
3852 return btrfs_update_inode_item(trans, root, inode); in btrfs_update_inode_fallback()
3862 struct btrfs_root *root, in __btrfs_unlink_inode() argument
3882 di = btrfs_lookup_dir_item(trans, root, path, dir_ino, in __btrfs_unlink_inode()
3894 ret = btrfs_delete_one_dir_name(trans, root, path, di); in __btrfs_unlink_inode()
3917 ret = btrfs_del_inode_ref(trans, root, name, name_len, ino, in __btrfs_unlink_inode()
3920 btrfs_info(root->fs_info, in __btrfs_unlink_inode()
3923 btrfs_abort_transaction(trans, root, ret); in __btrfs_unlink_inode()
3927 ret = btrfs_delete_delayed_dir_index(trans, root, dir, index); in __btrfs_unlink_inode()
3929 btrfs_abort_transaction(trans, root, ret); in __btrfs_unlink_inode()
3933 ret = btrfs_del_inode_ref_in_log(trans, root, name, name_len, in __btrfs_unlink_inode()
3936 btrfs_abort_transaction(trans, root, ret); in __btrfs_unlink_inode()
3940 ret = btrfs_del_dir_entries_in_log(trans, root, name, name_len, in __btrfs_unlink_inode()
3945 btrfs_abort_transaction(trans, root, ret); in __btrfs_unlink_inode()
3955 ret = btrfs_update_inode(trans, root, dir); in __btrfs_unlink_inode()
3961 struct btrfs_root *root, in btrfs_unlink_inode() argument
3966 ret = __btrfs_unlink_inode(trans, root, dir, inode, name, name_len); in btrfs_unlink_inode()
3969 ret = btrfs_update_inode(trans, root, inode); in btrfs_unlink_inode()
3985 struct btrfs_root *root = BTRFS_I(dir)->root; in __unlink_start_trans() local
3995 trans = btrfs_start_transaction(root, 5); in __unlink_start_trans()
4000 u64 num_bytes = btrfs_calc_trans_metadata_size(root, 5); in __unlink_start_trans()
4002 trans = btrfs_start_transaction(root, 0); in __unlink_start_trans()
4005 ret = btrfs_cond_migrate_bytes(root->fs_info, in __unlink_start_trans()
4006 &root->fs_info->trans_block_rsv, in __unlink_start_trans()
4009 btrfs_end_transaction(trans, root); in __unlink_start_trans()
4012 trans->block_rsv = &root->fs_info->trans_block_rsv; in __unlink_start_trans()
4020 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_unlink() local
4031 ret = btrfs_unlink_inode(trans, root, dir, d_inode(dentry), in btrfs_unlink()
4043 btrfs_end_transaction(trans, root); in btrfs_unlink()
4044 btrfs_btree_balance_dirty(root); in btrfs_unlink()
4049 struct btrfs_root *root, in btrfs_unlink_subvol() argument
4065 di = btrfs_lookup_dir_item(trans, root, path, dir_ino, in btrfs_unlink_subvol()
4078 ret = btrfs_delete_one_dir_name(trans, root, path, di); in btrfs_unlink_subvol()
4080 btrfs_abort_transaction(trans, root, ret); in btrfs_unlink_subvol()
4085 ret = btrfs_del_root_ref(trans, root->fs_info->tree_root, in btrfs_unlink_subvol()
4086 objectid, root->root_key.objectid, in btrfs_unlink_subvol()
4090 btrfs_abort_transaction(trans, root, ret); in btrfs_unlink_subvol()
4093 di = btrfs_search_dir_index_item(root, path, dir_ino, in btrfs_unlink_subvol()
4100 btrfs_abort_transaction(trans, root, ret); in btrfs_unlink_subvol()
4111 ret = btrfs_delete_delayed_dir_index(trans, root, dir, index); in btrfs_unlink_subvol()
4113 btrfs_abort_transaction(trans, root, ret); in btrfs_unlink_subvol()
4120 ret = btrfs_update_inode_fallback(trans, root, dir); in btrfs_unlink_subvol()
4122 btrfs_abort_transaction(trans, root, ret); in btrfs_unlink_subvol()
4132 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_rmdir() local
4145 err = btrfs_unlink_subvol(trans, root, dir, in btrfs_rmdir()
4157 err = btrfs_unlink_inode(trans, root, dir, d_inode(dentry), in btrfs_rmdir()
4162 btrfs_end_transaction(trans, root); in btrfs_rmdir()
4163 btrfs_btree_balance_dirty(root); in btrfs_rmdir()
4169 struct btrfs_root *root, in truncate_space_check() argument
4174 bytes_deleted = btrfs_csum_bytes_to_leaves(root, bytes_deleted); in truncate_space_check()
4175 ret = btrfs_block_rsv_add(root, &root->fs_info->trans_block_rsv, in truncate_space_check()
4193 struct btrfs_root *root = BTRFS_I(inode)->root; in truncate_inline_extent() local
4216 btrfs_truncate_item(root, path, size, 1); in truncate_inline_extent()
4218 if (test_bit(BTRFS_ROOT_REF_COWS, &root->state)) in truncate_inline_extent()
4236 struct btrfs_root *root, in btrfs_truncate_inode_items() argument
4271 test_bit(BTRFS_ROOT_REF_COWS, &root->state)) in btrfs_truncate_inode_items()
4284 if (test_bit(BTRFS_ROOT_REF_COWS, &root->state) || in btrfs_truncate_inode_items()
4285 root == root->fs_info->tree_root) in btrfs_truncate_inode_items()
4287 root->sectorsize), (u64)-1, 0); in btrfs_truncate_inode_items()
4295 if (min_type == 0 && root == BTRFS_I(inode)->root) in btrfs_truncate_inode_items()
4309 if (btrfs_should_end_transaction(trans, root)) { in btrfs_truncate_inode_items()
4317 ret = btrfs_search_slot(trans, root, &key, path, -1, 1); in btrfs_truncate_inode_items()
4386 root->sectorsize); in btrfs_truncate_inode_items()
4392 &root->state) && in btrfs_truncate_inode_items()
4408 &root->state)) in btrfs_truncate_inode_items()
4428 err = btrfs_del_items(trans, root, path, in btrfs_truncate_inode_items()
4433 root, in btrfs_truncate_inode_items()
4446 root, err); in btrfs_truncate_inode_items()
4450 &root->state)) { in btrfs_truncate_inode_items()
4474 (test_bit(BTRFS_ROOT_REF_COWS, &root->state) || in btrfs_truncate_inode_items()
4475 root == root->fs_info->tree_root)) { in btrfs_truncate_inode_items()
4478 ret = btrfs_free_extent(trans, root, extent_start, in btrfs_truncate_inode_items()
4483 if (btrfs_should_throttle_delayed_refs(trans, root)) in btrfs_truncate_inode_items()
4484 btrfs_async_run_delayed_refs(root, in btrfs_truncate_inode_items()
4487 if (truncate_space_check(trans, root, in btrfs_truncate_inode_items()
4492 root)) { in btrfs_truncate_inode_items()
4505 ret = btrfs_del_items(trans, root, path, in btrfs_truncate_inode_items()
4510 root, ret); in btrfs_truncate_inode_items()
4520 ret = btrfs_run_delayed_refs(trans, root, updates * 2); in btrfs_truncate_inode_items()
4540 ret = btrfs_del_items(trans, root, path, pending_del_slot, in btrfs_truncate_inode_items()
4543 btrfs_abort_transaction(trans, root, ret); in btrfs_truncate_inode_items()
4547 root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID) in btrfs_truncate_inode_items()
4556 ret = btrfs_run_delayed_refs(trans, root, updates * 2); in btrfs_truncate_inode_items()
4579 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_truncate_page() local
4584 u32 blocksize = root->sectorsize; in btrfs_truncate_page()
4678 static int maybe_insert_hole(struct btrfs_root *root, struct inode *inode, in maybe_insert_hole() argument
4688 if (btrfs_fs_incompat(root->fs_info, NO_HOLES)) { in maybe_insert_hole()
4689 BTRFS_I(inode)->last_trans = root->fs_info->generation; in maybe_insert_hole()
4690 BTRFS_I(inode)->last_sub_trans = root->log_transid; in maybe_insert_hole()
4691 BTRFS_I(inode)->last_log_commit = root->last_log_commit; in maybe_insert_hole()
4700 trans = btrfs_start_transaction(root, 3); in maybe_insert_hole()
4704 ret = btrfs_drop_extents(trans, root, inode, offset, offset + len, 1); in maybe_insert_hole()
4706 btrfs_abort_transaction(trans, root, ret); in maybe_insert_hole()
4707 btrfs_end_transaction(trans, root); in maybe_insert_hole()
4711 ret = btrfs_insert_file_extent(trans, root, btrfs_ino(inode), offset, in maybe_insert_hole()
4714 btrfs_abort_transaction(trans, root, ret); in maybe_insert_hole()
4716 btrfs_update_inode(trans, root, inode); in maybe_insert_hole()
4717 btrfs_end_transaction(trans, root); in maybe_insert_hole()
4729 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_cont_expand() local
4734 u64 hole_start = ALIGN(oldsize, root->sectorsize); in btrfs_cont_expand()
4735 u64 block_end = ALIGN(size, root->sectorsize); in btrfs_cont_expand()
4778 last_byte = ALIGN(last_byte , root->sectorsize); in btrfs_cont_expand()
4783 err = maybe_insert_hole(root, inode, cur_offset, in btrfs_cont_expand()
4803 hole_em->bdev = root->fs_info->fs_devices->latest_bdev; in btrfs_cont_expand()
4805 hole_em->generation = root->fs_info->generation; in btrfs_cont_expand()
4838 static void wait_for_snapshot_creation(struct btrfs_root *root) in wait_for_snapshot_creation() argument
4843 ret = btrfs_start_write_no_snapshoting(root); in wait_for_snapshot_creation()
4846 wait_on_atomic_t(&root->will_be_snapshoted, in wait_for_snapshot_creation()
4854 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_setsize() local
4883 wait_for_snapshot_creation(root); in btrfs_setsize()
4886 btrfs_end_write_no_snapshoting(root); in btrfs_setsize()
4890 trans = btrfs_start_transaction(root, 1); in btrfs_setsize()
4892 btrfs_end_write_no_snapshoting(root); in btrfs_setsize()
4898 ret = btrfs_update_inode(trans, root, inode); in btrfs_setsize()
4899 btrfs_end_write_no_snapshoting(root); in btrfs_setsize()
4900 btrfs_end_transaction(trans, root); in btrfs_setsize()
4916 trans = btrfs_start_transaction(root, 2); in btrfs_setsize()
4931 btrfs_end_transaction(trans, root); in btrfs_setsize()
4953 trans = btrfs_join_transaction(root); in btrfs_setsize()
4961 btrfs_abort_transaction(trans, root, err); in btrfs_setsize()
4962 btrfs_end_transaction(trans, root); in btrfs_setsize()
4972 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_setattr() local
4975 if (btrfs_root_readonly(root)) in btrfs_setattr()
5067 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_evict_inode() local
5070 u64 min_size = btrfs_calc_trunc_metadata_size(root, 1); in btrfs_evict_inode()
5078 ((btrfs_root_refs(&root->root_item) != 0 && in btrfs_evict_inode()
5079 root->root_key.objectid != BTRFS_ROOT_TREE_OBJECTID) || in btrfs_evict_inode()
5093 if (root->fs_info->log_root_recovering) { in btrfs_evict_inode()
5100 BUG_ON(btrfs_root_refs(&root->root_item) != 0 && in btrfs_evict_inode()
5101 root->root_key.objectid != BTRFS_ROOT_TREE_OBJECTID); in btrfs_evict_inode()
5111 rsv = btrfs_alloc_block_rsv(root, BTRFS_BLOCK_RSV_TEMP); in btrfs_evict_inode()
5118 global_rsv = &root->fs_info->global_block_rsv; in btrfs_evict_inode()
5129 ret = btrfs_block_rsv_refill(root, rsv, min_size, in btrfs_evict_inode()
5152 btrfs_warn(root->fs_info, in btrfs_evict_inode()
5156 btrfs_free_block_rsv(root, rsv); in btrfs_evict_inode()
5160 trans = btrfs_join_transaction(root); in btrfs_evict_inode()
5163 btrfs_free_block_rsv(root, rsv); in btrfs_evict_inode()
5173 if (!btrfs_check_space_for_delayed_refs(trans, root)) in btrfs_evict_inode()
5186 ret = btrfs_commit_transaction(trans, root); in btrfs_evict_inode()
5189 btrfs_free_block_rsv(root, rsv); in btrfs_evict_inode()
5199 ret = btrfs_truncate_inode_items(trans, root, inode, 0, 0); in btrfs_evict_inode()
5203 trans->block_rsv = &root->fs_info->trans_block_rsv; in btrfs_evict_inode()
5204 btrfs_end_transaction(trans, root); in btrfs_evict_inode()
5206 btrfs_btree_balance_dirty(root); in btrfs_evict_inode()
5209 btrfs_free_block_rsv(root, rsv); in btrfs_evict_inode()
5216 trans->block_rsv = root->orphan_block_rsv; in btrfs_evict_inode()
5222 trans->block_rsv = &root->fs_info->trans_block_rsv; in btrfs_evict_inode()
5223 if (!(root == root->fs_info->tree_root || in btrfs_evict_inode()
5224 root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID)) in btrfs_evict_inode()
5225 btrfs_return_ino(root, btrfs_ino(inode)); in btrfs_evict_inode()
5227 btrfs_end_transaction(trans, root); in btrfs_evict_inode()
5228 btrfs_btree_balance_dirty(root); in btrfs_evict_inode()
5246 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_inode_by_name() local
5253 di = btrfs_lookup_dir_item(NULL, root, path, btrfs_ino(dir), name, in btrfs_inode_by_name()
5275 static int fixup_tree_root_location(struct btrfs_root *root, in fixup_tree_root_location() argument
5296 key.objectid = BTRFS_I(dir)->root->root_key.objectid; in fixup_tree_root_location()
5300 ret = btrfs_search_slot(NULL, root->fs_info->tree_root, &key, path, in fixup_tree_root_location()
5322 new_root = btrfs_read_fs_root_no_name(root->fs_info, location); in fixup_tree_root_location()
5340 struct btrfs_root *root = BTRFS_I(inode)->root; in inode_tree_add() local
5350 spin_lock(&root->inode_lock); in inode_tree_add()
5351 p = &root->inode_tree.rb_node; in inode_tree_add()
5363 rb_replace_node(parent, new, &root->inode_tree); in inode_tree_add()
5365 spin_unlock(&root->inode_lock); in inode_tree_add()
5370 rb_insert_color(new, &root->inode_tree); in inode_tree_add()
5371 spin_unlock(&root->inode_lock); in inode_tree_add()
5376 struct btrfs_root *root = BTRFS_I(inode)->root; in inode_tree_del() local
5379 spin_lock(&root->inode_lock); in inode_tree_del()
5381 rb_erase(&BTRFS_I(inode)->rb_node, &root->inode_tree); in inode_tree_del()
5383 empty = RB_EMPTY_ROOT(&root->inode_tree); in inode_tree_del()
5385 spin_unlock(&root->inode_lock); in inode_tree_del()
5387 if (empty && btrfs_root_refs(&root->root_item) == 0) { in inode_tree_del()
5388 synchronize_srcu(&root->fs_info->subvol_srcu); in inode_tree_del()
5389 spin_lock(&root->inode_lock); in inode_tree_del()
5390 empty = RB_EMPTY_ROOT(&root->inode_tree); in inode_tree_del()
5391 spin_unlock(&root->inode_lock); in inode_tree_del()
5393 btrfs_add_dead_root(root); in inode_tree_del()
5397 void btrfs_invalidate_inodes(struct btrfs_root *root) in btrfs_invalidate_inodes() argument
5405 if (!test_bit(BTRFS_FS_STATE_ERROR, &root->fs_info->fs_state)) in btrfs_invalidate_inodes()
5406 WARN_ON(btrfs_root_refs(&root->root_item) != 0); in btrfs_invalidate_inodes()
5408 spin_lock(&root->inode_lock); in btrfs_invalidate_inodes()
5410 node = root->inode_tree.rb_node; in btrfs_invalidate_inodes()
5438 spin_unlock(&root->inode_lock); in btrfs_invalidate_inodes()
5448 spin_lock(&root->inode_lock); in btrfs_invalidate_inodes()
5452 if (cond_resched_lock(&root->inode_lock)) in btrfs_invalidate_inodes()
5457 spin_unlock(&root->inode_lock); in btrfs_invalidate_inodes()
5466 BTRFS_I(inode)->root = args->root; in btrfs_init_locked_inode()
5474 args->root == BTRFS_I(inode)->root; in btrfs_find_actor()
5479 struct btrfs_root *root) in btrfs_iget_locked() argument
5483 unsigned long hashval = btrfs_inode_hash(location->objectid, root); in btrfs_iget_locked()
5486 args.root = root; in btrfs_iget_locked()
5498 struct btrfs_root *root, int *new) in btrfs_iget() argument
5502 inode = btrfs_iget_locked(s, location, root); in btrfs_iget()
5525 struct btrfs_root *root) in new_simple_dir() argument
5532 BTRFS_I(inode)->root = root; in new_simple_dir()
5551 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_lookup_dentry() local
5552 struct btrfs_root *sub_root = root; in btrfs_lookup_dentry()
5568 inode = btrfs_iget(dir->i_sb, &location, root, NULL); in btrfs_lookup_dentry()
5574 index = srcu_read_lock(&root->fs_info->subvol_srcu); in btrfs_lookup_dentry()
5575 ret = fixup_tree_root_location(root, dir, dentry, in btrfs_lookup_dentry()
5585 srcu_read_unlock(&root->fs_info->subvol_srcu, index); in btrfs_lookup_dentry()
5587 if (!IS_ERR(inode) && root != sub_root) { in btrfs_lookup_dentry()
5588 down_read(&root->fs_info->cleanup_work_sem); in btrfs_lookup_dentry()
5591 up_read(&root->fs_info->cleanup_work_sem); in btrfs_lookup_dentry()
5603 struct btrfs_root *root; in btrfs_dentry_delete() local
5610 root = BTRFS_I(inode)->root; in btrfs_dentry_delete()
5611 if (btrfs_root_refs(&root->root_item) == 0) in btrfs_dentry_delete()
5648 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_real_readdir() local
5672 if (root->fs_info->tree_root == root) in btrfs_real_readdir()
5694 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in btrfs_real_readdir()
5703 ret = btrfs_next_leaf(root, path); in btrfs_real_readdir()
5735 if (verify_dir_item(root, leaf, di)) in btrfs_real_readdir()
5765 location.objectid == root->root_key.objectid) { in btrfs_real_readdir()
5842 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_write_inode() local
5850 if (btrfs_fs_closing(root->fs_info) && btrfs_is_free_space_inode(inode)) in btrfs_write_inode()
5855 trans = btrfs_join_transaction_nolock(root); in btrfs_write_inode()
5857 trans = btrfs_join_transaction(root); in btrfs_write_inode()
5860 ret = btrfs_commit_transaction(trans, root); in btrfs_write_inode()
5873 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_dirty_inode() local
5880 trans = btrfs_join_transaction(root); in btrfs_dirty_inode()
5884 ret = btrfs_update_inode(trans, root, inode); in btrfs_dirty_inode()
5887 btrfs_end_transaction(trans, root); in btrfs_dirty_inode()
5888 trans = btrfs_start_transaction(root, 1); in btrfs_dirty_inode()
5892 ret = btrfs_update_inode(trans, root, inode); in btrfs_dirty_inode()
5894 btrfs_end_transaction(trans, root); in btrfs_dirty_inode()
5896 btrfs_balance_delayed_items(root); in btrfs_dirty_inode()
5908 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_update_time() local
5910 if (btrfs_root_readonly(root)) in btrfs_update_time()
5931 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_set_inode_index_count() local
5945 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in btrfs_set_inode_index_count()
6008 args.root = BTRFS_I(inode)->root; in btrfs_insert_inode_locked()
6011 btrfs_inode_hash(inode->i_ino, BTRFS_I(inode)->root), in btrfs_insert_inode_locked()
6016 struct btrfs_root *root, in btrfs_new_inode() argument
6037 inode = new_inode(root->fs_info->sb); in btrfs_new_inode()
6075 BTRFS_I(inode)->root = root; in btrfs_new_inode()
6117 ret = btrfs_insert_empty_items(trans, root, path, key, sizes, nitems); in btrfs_new_inode()
6150 if (btrfs_test_opt(root, NODATASUM)) in btrfs_new_inode()
6152 if (btrfs_test_opt(root, NODATACOW)) in btrfs_new_inode()
6162 btrfs_update_root_times(trans, root); in btrfs_new_inode()
6166 btrfs_err(root->fs_info, in btrfs_new_inode()
6168 btrfs_ino(inode), root->root_key.objectid, ret); in btrfs_new_inode()
6199 struct btrfs_root *root = BTRFS_I(parent_inode)->root; in btrfs_add_link() local
6204 memcpy(&key, &BTRFS_I(inode)->root->root_key, sizeof(key)); in btrfs_add_link()
6212 ret = btrfs_add_root_ref(trans, root->fs_info->tree_root, in btrfs_add_link()
6213 key.objectid, root->root_key.objectid, in btrfs_add_link()
6216 ret = btrfs_insert_inode_ref(trans, root, name, name_len, ino, in btrfs_add_link()
6224 ret = btrfs_insert_dir_item(trans, root, name, name_len, in btrfs_add_link()
6230 btrfs_abort_transaction(trans, root, ret); in btrfs_add_link()
6238 ret = btrfs_update_inode(trans, root, parent_inode); in btrfs_add_link()
6240 btrfs_abort_transaction(trans, root, ret); in btrfs_add_link()
6247 err = btrfs_del_root_ref(trans, root->fs_info->tree_root, in btrfs_add_link()
6248 key.objectid, root->root_key.objectid, in btrfs_add_link()
6255 err = btrfs_del_inode_ref(trans, root, name, name_len, in btrfs_add_link()
6277 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_mknod() local
6292 trans = btrfs_start_transaction(root, 5); in btrfs_mknod()
6296 err = btrfs_find_free_ino(root, &objectid); in btrfs_mknod()
6300 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_mknod()
6325 btrfs_update_inode(trans, root, inode); in btrfs_mknod()
6331 btrfs_end_transaction(trans, root); in btrfs_mknod()
6332 btrfs_balance_delayed_items(root); in btrfs_mknod()
6333 btrfs_btree_balance_dirty(root); in btrfs_mknod()
6351 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_create() local
6363 trans = btrfs_start_transaction(root, 5); in btrfs_create()
6367 err = btrfs_find_free_ino(root, &objectid); in btrfs_create()
6371 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_create()
6393 err = btrfs_update_inode(trans, root, inode); in btrfs_create()
6406 btrfs_end_transaction(trans, root); in btrfs_create()
6411 btrfs_balance_delayed_items(root); in btrfs_create()
6412 btrfs_btree_balance_dirty(root); in btrfs_create()
6425 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_link() local
6432 if (root->objectid != BTRFS_I(inode)->root->objectid) in btrfs_link()
6447 trans = btrfs_start_transaction(root, 5); in btrfs_link()
6468 err = btrfs_update_inode(trans, root, inode); in btrfs_link()
6484 btrfs_balance_delayed_items(root); in btrfs_link()
6487 btrfs_end_transaction(trans, root); in btrfs_link()
6492 btrfs_btree_balance_dirty(root); in btrfs_link()
6500 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_mkdir() local
6511 trans = btrfs_start_transaction(root, 5); in btrfs_mkdir()
6515 err = btrfs_find_free_ino(root, &objectid); in btrfs_mkdir()
6519 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_mkdir()
6537 err = btrfs_update_inode(trans, root, inode); in btrfs_mkdir()
6555 btrfs_end_transaction(trans, root); in btrfs_mkdir()
6560 btrfs_balance_delayed_items(root); in btrfs_mkdir()
6561 btrfs_btree_balance_dirty(root); in btrfs_mkdir()
6683 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_get_extent() local
6697 em->bdev = root->fs_info->fs_devices->latest_bdev; in btrfs_get_extent()
6713 em->bdev = root->fs_info->fs_devices->latest_bdev; in btrfs_get_extent()
6732 ret = btrfs_lookup_file_extent(trans, root, path, in btrfs_get_extent()
6772 extent_end = ALIGN(extent_start + size, root->sectorsize); in btrfs_get_extent()
6778 ret = btrfs_next_leaf(root, path); in btrfs_get_extent()
6821 em->len = ALIGN(copy_size, root->sectorsize); in btrfs_get_extent()
6855 trans = btrfs_join_transaction(root); in btrfs_get_extent()
6881 btrfs_err(root->fs_info, "bad extent! em: [%llu %llu] passed [%llu %llu]", in btrfs_get_extent()
6926 trace_btrfs_get_extent(root, em); in btrfs_get_extent()
6931 ret = btrfs_end_transaction(trans, root); in btrfs_get_extent()
7073 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_new_extent_direct() local
7080 ret = btrfs_reserve_extent(root, len, root->sectorsize, 0, in btrfs_new_extent_direct()
7088 btrfs_free_reserved_extent(root, ins.objectid, ins.offset, 1); in btrfs_new_extent_direct()
7095 btrfs_free_reserved_extent(root, ins.objectid, ins.offset, 1); in btrfs_new_extent_direct()
7115 struct btrfs_root *root = BTRFS_I(inode)->root; in can_nocow_extent() local
7131 ret = btrfs_lookup_file_extent(NULL, root, path, btrfs_ino(inode), in can_nocow_extent()
7191 if (btrfs_extent_readonly(root, disk_bytenr)) in can_nocow_extent()
7198 range_end = round_up(offset + num_bytes, root->sectorsize) - 1; in can_nocow_extent()
7213 trans = btrfs_join_transaction(root); in can_nocow_extent()
7219 ret = btrfs_cross_ref_exist(trans, root, btrfs_ino(inode), in can_nocow_extent()
7221 btrfs_end_transaction(trans, root); in can_nocow_extent()
7235 if (csum_exist_in_range(root, disk_bytenr, num_bytes)) in can_nocow_extent()
7250 struct radix_tree_root *root = &inode->i_mapping->page_tree; in btrfs_page_exists_in_range() local
7273 radix_tree_gang_lookup_slot(root, &pagep, NULL, start_idx, 1)) { in btrfs_page_exists_in_range()
7389 struct btrfs_root *root = BTRFS_I(inode)->root; in create_pinned_em() local
7404 em->bdev = root->fs_info->fs_devices->latest_bdev; in create_pinned_em()
7433 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_get_blocks_direct() local
7445 len = min_t(u64, len, root->sectorsize); in btrfs_get_blocks_direct()
7628 struct btrfs_root *root = BTRFS_I(inode)->root; in submit_dio_repair_bio() local
7635 ret = btrfs_bio_wq_end_io(root->fs_info, bio, in submit_dio_repair_bio()
7640 ret = btrfs_map_bio(root, rw, bio, mirror_num, 0); in submit_dio_repair_bio()
7653 num_copies = btrfs_num_copies(BTRFS_I(inode)->root->fs_info, in btrfs_check_dio_repairable()
7718 btrfs_debug(BTRFS_I(inode)->root->fs_info, in dio_read_error()
7916 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_endio_direct_write() local
7934 btrfs_queue_work(root->fs_info->endio_write_workers, in btrfs_endio_direct_write()
7964 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_submit_bio_start_direct_io() local
7965 ret = btrfs_csum_one_bio(root, inode, bio, offset, 1); in __btrfs_submit_bio_start_direct_io()
7975 btrfs_warn(BTRFS_I(dip->inode)->root->fs_info, in btrfs_end_dio_bio()
8015 static inline int btrfs_lookup_and_bind_dio_csum(struct btrfs_root *root, in btrfs_lookup_and_bind_dio_csum() argument
8031 ret = btrfs_lookup_bio_sums_dio(root, inode, dip->orig_bio, in btrfs_lookup_and_bind_dio_csum()
8053 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_submit_dio_bio() local
8062 ret = btrfs_bio_wq_end_io(root->fs_info, bio, in __btrfs_submit_dio_bio()
8072 ret = btrfs_wq_submit_bio(root->fs_info, in __btrfs_submit_dio_bio()
8083 ret = btrfs_csum_one_bio(root, inode, bio, file_offset, 1); in __btrfs_submit_dio_bio()
8087 ret = btrfs_lookup_and_bind_dio_csum(root, inode, dip, bio, in __btrfs_submit_dio_bio()
8093 ret = btrfs_map_bio(root, rw, bio, 0, async_submit); in __btrfs_submit_dio_bio()
8103 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_submit_direct_hook() local
8116 ret = btrfs_map_block(root->fs_info, rw, start_sector << 9, in btrfs_submit_direct_hook()
8128 if (btrfs_get_alloc_profile(root, 1) & BTRFS_BLOCK_GROUP_RAID56_MASK) in btrfs_submit_direct_hook()
8177 ret = btrfs_map_block(root->fs_info, rw, in btrfs_submit_direct_hook()
8215 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_submit_direct() local
8275 btrfs_free_reserved_extent(root, ordered->start, in btrfs_submit_direct()
8283 static ssize_t check_direct_IO(struct btrfs_root *root, struct kiocb *iocb, in check_direct_IO() argument
8288 unsigned blocksize_mask = root->sectorsize - 1; in check_direct_IO()
8328 if (check_direct_IO(BTRFS_I(inode)->root, iocb, iter, offset)) in btrfs_direct_IO()
8377 BTRFS_I(inode)->root->fs_info->fs_devices->latest_bdev, in btrfs_direct_IO()
8594 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_page_mkwrite() local
8691 BTRFS_I(inode)->last_trans = root->fs_info->generation; in btrfs_page_mkwrite()
8692 BTRFS_I(inode)->last_sub_trans = BTRFS_I(inode)->root->log_transid; in btrfs_page_mkwrite()
8693 BTRFS_I(inode)->last_log_commit = BTRFS_I(inode)->root->last_log_commit; in btrfs_page_mkwrite()
8712 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_truncate() local
8717 u64 mask = root->sectorsize - 1; in btrfs_truncate()
8718 u64 min_size = btrfs_calc_trunc_metadata_size(root, 1); in btrfs_truncate()
8761 rsv = btrfs_alloc_block_rsv(root, BTRFS_BLOCK_RSV_TEMP); in btrfs_truncate()
8771 trans = btrfs_start_transaction(root, 2); in btrfs_truncate()
8778 ret = btrfs_block_rsv_migrate(&root->fs_info->trans_block_rsv, rsv, in btrfs_truncate()
8793 ret = btrfs_truncate_inode_items(trans, root, inode, in btrfs_truncate()
8801 trans->block_rsv = &root->fs_info->trans_block_rsv; in btrfs_truncate()
8802 ret = btrfs_update_inode(trans, root, inode); in btrfs_truncate()
8808 btrfs_end_transaction(trans, root); in btrfs_truncate()
8809 btrfs_btree_balance_dirty(root); in btrfs_truncate()
8811 trans = btrfs_start_transaction(root, 2); in btrfs_truncate()
8818 ret = btrfs_block_rsv_migrate(&root->fs_info->trans_block_rsv, in btrfs_truncate()
8825 trans->block_rsv = root->orphan_block_rsv; in btrfs_truncate()
8832 trans->block_rsv = &root->fs_info->trans_block_rsv; in btrfs_truncate()
8833 ret = btrfs_update_inode(trans, root, inode); in btrfs_truncate()
8837 ret = btrfs_end_transaction(trans, root); in btrfs_truncate()
8838 btrfs_btree_balance_dirty(root); in btrfs_truncate()
8842 btrfs_free_block_rsv(root, rsv); in btrfs_truncate()
8896 ei->root = NULL; in btrfs_alloc_inode()
8958 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_destroy_inode() local
8973 if (!root) in btrfs_destroy_inode()
8978 btrfs_info(root->fs_info, "inode %llu still on the orphan list", in btrfs_destroy_inode()
8980 atomic_dec(&root->orphan_inodes); in btrfs_destroy_inode()
8988 btrfs_err(root->fs_info, "found ordered extent %llu %llu on inode cleanup", in btrfs_destroy_inode()
9003 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_drop_inode() local
9005 if (root == NULL) in btrfs_drop_inode()
9009 if (btrfs_root_refs(&root->root_item) == 0) in btrfs_drop_inode()
9096 stat->dev = BTRFS_I(inode)->root->anon_dev; in btrfs_getattr()
9111 struct btrfs_root *root = BTRFS_I(old_dir)->root; in btrfs_rename() local
9112 struct btrfs_root *dest = BTRFS_I(new_dir)->root; in btrfs_rename()
9125 if (old_ino != BTRFS_FIRST_FREE_OBJECTID && root != dest) in btrfs_rename()
9165 down_read(&root->fs_info->subvol_sem); in btrfs_rename()
9174 trans = btrfs_start_transaction(root, 11); in btrfs_rename()
9180 if (dest != root) in btrfs_rename()
9190 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_rename()
9206 btrfs_pin_log_trans(root); in btrfs_rename()
9220 root_objectid = BTRFS_I(old_inode)->root->root_key.objectid; in btrfs_rename()
9221 ret = btrfs_unlink_subvol(trans, root, old_dir, root_objectid, in btrfs_rename()
9225 ret = __btrfs_unlink_inode(trans, root, old_dir, in btrfs_rename()
9230 ret = btrfs_update_inode(trans, root, old_inode); in btrfs_rename()
9233 btrfs_abort_transaction(trans, root, ret); in btrfs_rename()
9257 btrfs_abort_transaction(trans, root, ret); in btrfs_rename()
9266 btrfs_abort_transaction(trans, root, ret); in btrfs_rename()
9276 btrfs_end_log_trans(root); in btrfs_rename()
9279 btrfs_end_transaction(trans, root); in btrfs_rename()
9282 up_read(&root->fs_info->subvol_sem); in btrfs_rename()
9352 static int __start_delalloc_inodes(struct btrfs_root *root, int delay_iput, in __start_delalloc_inodes() argument
9365 mutex_lock(&root->delalloc_mutex); in __start_delalloc_inodes()
9366 spin_lock(&root->delalloc_lock); in __start_delalloc_inodes()
9367 list_splice_init(&root->delalloc_inodes, &splice); in __start_delalloc_inodes()
9373 &root->delalloc_inodes); in __start_delalloc_inodes()
9376 cond_resched_lock(&root->delalloc_lock); in __start_delalloc_inodes()
9379 spin_unlock(&root->delalloc_lock); in __start_delalloc_inodes()
9391 btrfs_queue_work(root->fs_info->flush_workers, in __start_delalloc_inodes()
9397 spin_lock(&root->delalloc_lock); in __start_delalloc_inodes()
9399 spin_unlock(&root->delalloc_lock); in __start_delalloc_inodes()
9408 spin_lock(&root->delalloc_lock); in __start_delalloc_inodes()
9409 list_splice_tail(&splice, &root->delalloc_inodes); in __start_delalloc_inodes()
9410 spin_unlock(&root->delalloc_lock); in __start_delalloc_inodes()
9412 mutex_unlock(&root->delalloc_mutex); in __start_delalloc_inodes()
9416 int btrfs_start_delalloc_inodes(struct btrfs_root *root, int delay_iput) in btrfs_start_delalloc_inodes() argument
9420 if (test_bit(BTRFS_FS_STATE_ERROR, &root->fs_info->fs_state)) in btrfs_start_delalloc_inodes()
9423 ret = __start_delalloc_inodes(root, delay_iput, -1); in btrfs_start_delalloc_inodes()
9431 atomic_inc(&root->fs_info->async_submit_draining); in btrfs_start_delalloc_inodes()
9432 while (atomic_read(&root->fs_info->nr_async_submits) || in btrfs_start_delalloc_inodes()
9433 atomic_read(&root->fs_info->async_delalloc_pages)) { in btrfs_start_delalloc_inodes()
9434 wait_event(root->fs_info->async_submit_wait, in btrfs_start_delalloc_inodes()
9435 (atomic_read(&root->fs_info->nr_async_submits) == 0 && in btrfs_start_delalloc_inodes()
9436 atomic_read(&root->fs_info->async_delalloc_pages) == 0)); in btrfs_start_delalloc_inodes()
9438 atomic_dec(&root->fs_info->async_submit_draining); in btrfs_start_delalloc_inodes()
9445 struct btrfs_root *root; in btrfs_start_delalloc_roots() local
9458 root = list_first_entry(&splice, struct btrfs_root, in btrfs_start_delalloc_roots()
9460 root = btrfs_grab_fs_root(root); in btrfs_start_delalloc_roots()
9461 BUG_ON(!root); in btrfs_start_delalloc_roots()
9462 list_move_tail(&root->delalloc_root, in btrfs_start_delalloc_roots()
9466 ret = __start_delalloc_inodes(root, delay_iput, nr); in btrfs_start_delalloc_roots()
9467 btrfs_put_fs_root(root); in btrfs_start_delalloc_roots()
9502 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_symlink() local
9517 if (name_len > BTRFS_MAX_INLINE_DATA_SIZE(root)) in btrfs_symlink()
9527 trans = btrfs_start_transaction(root, 7); in btrfs_symlink()
9531 err = btrfs_find_free_ino(root, &objectid); in btrfs_symlink()
9535 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_symlink()
9571 err = btrfs_insert_empty_item(trans, root, path, &key, in btrfs_symlink()
9597 err = btrfs_update_inode(trans, root, inode); in btrfs_symlink()
9607 btrfs_end_transaction(trans, root); in btrfs_symlink()
9612 btrfs_btree_balance_dirty(root); in btrfs_symlink()
9628 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_prealloc_file_range() local
9640 trans = btrfs_start_transaction(root, 3); in __btrfs_prealloc_file_range()
9649 ret = btrfs_reserve_extent(root, cur_bytes, min_size, 0, in __btrfs_prealloc_file_range()
9653 btrfs_end_transaction(trans, root); in __btrfs_prealloc_file_range()
9663 btrfs_free_reserved_extent(root, ins.objectid, in __btrfs_prealloc_file_range()
9665 btrfs_abort_transaction(trans, root, ret); in __btrfs_prealloc_file_range()
9667 btrfs_end_transaction(trans, root); in __btrfs_prealloc_file_range()
9688 em->bdev = root->fs_info->fs_devices->latest_bdev; in __btrfs_prealloc_file_range()
9722 ret = btrfs_update_inode(trans, root, inode); in __btrfs_prealloc_file_range()
9725 btrfs_abort_transaction(trans, root, ret); in __btrfs_prealloc_file_range()
9727 btrfs_end_transaction(trans, root); in __btrfs_prealloc_file_range()
9732 btrfs_end_transaction(trans, root); in __btrfs_prealloc_file_range()
9762 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_permission() local
9767 if (btrfs_root_readonly(root)) in btrfs_permission()
9778 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_tmpfile() local
9787 trans = btrfs_start_transaction(root, 5); in btrfs_tmpfile()
9791 ret = btrfs_find_free_ino(root, &objectid); in btrfs_tmpfile()
9795 inode = btrfs_new_inode(trans, root, dir, NULL, 0, in btrfs_tmpfile()
9813 ret = btrfs_update_inode(trans, root, inode); in btrfs_tmpfile()
9833 btrfs_end_transaction(trans, root); in btrfs_tmpfile()
9836 btrfs_balance_delayed_items(root); in btrfs_tmpfile()
9837 btrfs_btree_balance_dirty(root); in btrfs_tmpfile()