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()
535 ret = cow_file_range_inline(root, inode, start, end, in compress_file_range()
539 ret = cow_file_range_inline(root, inode, start, end, in compress_file_range()
600 if (!btrfs_test_opt(root, FORCE_COMPRESS) && in compress_file_range()
682 struct btrfs_root *root = BTRFS_I(inode)->root; in submit_compressed_extents() local
737 ret = btrfs_reserve_extent(root, in submit_compressed_extents()
787 em->bdev = root->fs_info->fs_devices->latest_bdev; in submit_compressed_extents()
859 btrfs_free_reserved_extent(root, ins.objectid, ins.offset, 1); in submit_compressed_extents()
925 struct btrfs_root *root = BTRFS_I(inode)->root; in cow_file_range() local
931 u64 blocksize = root->sectorsize; in cow_file_range()
953 ret = cow_file_range_inline(root, inode, start, end, 0, 0, in cow_file_range()
971 BUG_ON(num_bytes > btrfs_super_total_bytes(root->fs_info->super_copy)); in cow_file_range()
987 if (root->root_key.objectid == BTRFS_DATA_RELOC_TREE_OBJECTID) in cow_file_range()
990 min_alloc_size = root->sectorsize; in cow_file_range()
996 ret = btrfs_reserve_extent(root, cur_alloc_size, in cow_file_range()
1018 em->bdev = root->fs_info->fs_devices->latest_bdev; in cow_file_range()
1042 if (root->root_key.objectid == in cow_file_range()
1080 btrfs_free_reserved_extent(root, ins.objectid, ins.offset, 1); in cow_file_range()
1114 struct btrfs_root *root; in async_cow_submit() local
1119 root = async_cow->root; in async_cow_submit()
1126 if (atomic_sub_return(nr_pages, &root->fs_info->async_delalloc_pages) < in async_cow_submit()
1128 waitqueue_active(&root->fs_info->async_submit_wait)) in async_cow_submit()
1129 wake_up(&root->fs_info->async_submit_wait); in async_cow_submit()
1149 struct btrfs_root *root = BTRFS_I(inode)->root; in cow_file_range_async() local
1160 async_cow->root = root; in cow_file_range_async()
1165 !btrfs_test_opt(root, FORCE_COMPRESS)) in cow_file_range_async()
1180 atomic_add(nr_pages, &root->fs_info->async_delalloc_pages); in cow_file_range_async()
1182 btrfs_queue_work(root->fs_info->delalloc_workers, in cow_file_range_async()
1185 if (atomic_read(&root->fs_info->async_delalloc_pages) > limit) { in cow_file_range_async()
1186 wait_event(root->fs_info->async_submit_wait, in cow_file_range_async()
1187 (atomic_read(&root->fs_info->async_delalloc_pages) < in cow_file_range_async()
1191 while (atomic_read(&root->fs_info->async_submit_draining) && in cow_file_range_async()
1192 atomic_read(&root->fs_info->async_delalloc_pages)) { in cow_file_range_async()
1193 wait_event(root->fs_info->async_submit_wait, in cow_file_range_async()
1194 (atomic_read(&root->fs_info->async_delalloc_pages) == in cow_file_range_async()
1205 static noinline int csum_exist_in_range(struct btrfs_root *root, in csum_exist_in_range() argument
1212 ret = btrfs_lookup_csums_range(root->fs_info->csum_root, bytenr, in csum_exist_in_range()
1239 struct btrfs_root *root = BTRFS_I(inode)->root; in run_delalloc_nocow() local
1276 trans = btrfs_join_transaction_nolock(root); in run_delalloc_nocow()
1278 trans = btrfs_join_transaction(root); in run_delalloc_nocow()
1292 trans->block_rsv = &root->fs_info->delalloc_block_rsv; in run_delalloc_nocow()
1297 ret = btrfs_lookup_file_extent(trans, root, path, ino, in run_delalloc_nocow()
1313 ret = btrfs_next_leaf(root, path); in run_delalloc_nocow()
1371 if (btrfs_extent_readonly(root, disk_bytenr)) in run_delalloc_nocow()
1373 ret = btrfs_cross_ref_exist(trans, root, ino, in run_delalloc_nocow()
1398 err = btrfs_start_write_no_snapshoting(root); in run_delalloc_nocow()
1407 ret = csum_exist_in_range(root, disk_bytenr, num_bytes); in run_delalloc_nocow()
1426 extent_end = ALIGN(extent_end, root->sectorsize); in run_delalloc_nocow()
1434 btrfs_end_write_no_snapshoting(root); in run_delalloc_nocow()
1454 btrfs_end_write_no_snapshoting(root); in run_delalloc_nocow()
1473 em->bdev = root->fs_info->fs_devices->latest_bdev; in run_delalloc_nocow()
1499 if (root->root_key.objectid == in run_delalloc_nocow()
1505 btrfs_end_write_no_snapshoting(root); in run_delalloc_nocow()
1516 btrfs_end_write_no_snapshoting(root); in run_delalloc_nocow()
1536 err = btrfs_end_transaction(trans, root); in run_delalloc_nocow()
1698 static void btrfs_add_delalloc_inodes(struct btrfs_root *root, in btrfs_add_delalloc_inodes() argument
1701 spin_lock(&root->delalloc_lock); in btrfs_add_delalloc_inodes()
1704 &root->delalloc_inodes); in btrfs_add_delalloc_inodes()
1707 root->nr_delalloc_inodes++; in btrfs_add_delalloc_inodes()
1708 if (root->nr_delalloc_inodes == 1) { in btrfs_add_delalloc_inodes()
1709 spin_lock(&root->fs_info->delalloc_root_lock); in btrfs_add_delalloc_inodes()
1710 BUG_ON(!list_empty(&root->delalloc_root)); in btrfs_add_delalloc_inodes()
1711 list_add_tail(&root->delalloc_root, in btrfs_add_delalloc_inodes()
1712 &root->fs_info->delalloc_roots); in btrfs_add_delalloc_inodes()
1713 spin_unlock(&root->fs_info->delalloc_root_lock); in btrfs_add_delalloc_inodes()
1716 spin_unlock(&root->delalloc_lock); in btrfs_add_delalloc_inodes()
1719 static void btrfs_del_delalloc_inode(struct btrfs_root *root, in btrfs_del_delalloc_inode() argument
1722 spin_lock(&root->delalloc_lock); in btrfs_del_delalloc_inode()
1727 root->nr_delalloc_inodes--; in btrfs_del_delalloc_inode()
1728 if (!root->nr_delalloc_inodes) { in btrfs_del_delalloc_inode()
1729 spin_lock(&root->fs_info->delalloc_root_lock); in btrfs_del_delalloc_inode()
1730 BUG_ON(list_empty(&root->delalloc_root)); in btrfs_del_delalloc_inode()
1731 list_del_init(&root->delalloc_root); in btrfs_del_delalloc_inode()
1732 spin_unlock(&root->fs_info->delalloc_root_lock); in btrfs_del_delalloc_inode()
1735 spin_unlock(&root->delalloc_lock); in btrfs_del_delalloc_inode()
1755 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_set_bit_hook() local
1768 if (btrfs_test_is_dummy_root(root)) in btrfs_set_bit_hook()
1771 __percpu_counter_add(&root->fs_info->delalloc_bytes, len, in btrfs_set_bit_hook()
1772 root->fs_info->delalloc_batch); in btrfs_set_bit_hook()
1779 btrfs_add_delalloc_inodes(root, inode); in btrfs_set_bit_hook()
1806 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_clear_bit_hook() local
1823 root != root->fs_info->tree_root) in btrfs_clear_bit_hook()
1827 if (btrfs_test_is_dummy_root(root)) in btrfs_clear_bit_hook()
1830 if (root->root_key.objectid != BTRFS_DATA_RELOC_TREE_OBJECTID in btrfs_clear_bit_hook()
1835 __percpu_counter_add(&root->fs_info->delalloc_bytes, -len, in btrfs_clear_bit_hook()
1836 root->fs_info->delalloc_batch); in btrfs_clear_bit_hook()
1842 btrfs_del_delalloc_inode(root, inode); in btrfs_clear_bit_hook()
1855 struct btrfs_root *root = BTRFS_I(page->mapping->host)->root; in btrfs_merge_bio_hook() local
1866 ret = btrfs_map_block(root->fs_info, rw, logical, in btrfs_merge_bio_hook()
1888 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_submit_bio_start() local
1891 ret = btrfs_csum_one_bio(root, inode, bio, 0, 0); in __btrfs_submit_bio_start()
1908 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_submit_bio_done() local
1911 ret = btrfs_map_bio(root, rw, bio, mirror_num, 1); in __btrfs_submit_bio_done()
1927 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_submit_bio_hook() local
1939 ret = btrfs_bio_wq_end_io(root->fs_info, bio, metadata); in btrfs_submit_bio_hook()
1949 ret = btrfs_lookup_bio_sums(root, inode, bio, NULL); in btrfs_submit_bio_hook()
1956 if (root->root_key.objectid == BTRFS_DATA_RELOC_TREE_OBJECTID) in btrfs_submit_bio_hook()
1959 ret = btrfs_wq_submit_bio(BTRFS_I(inode)->root->fs_info, in btrfs_submit_bio_hook()
1966 ret = btrfs_csum_one_bio(root, inode, bio, 0, 0); in btrfs_submit_bio_hook()
1972 ret = btrfs_map_bio(root, rw, bio, mirror_num, 0); in btrfs_submit_bio_hook()
1995 BTRFS_I(inode)->root->fs_info->csum_root, sum); in add_pending_csums()
2100 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_writepage_start_hook() local
2118 btrfs_queue_work(root->fs_info->fixup_workers, &fixup->work); in btrfs_writepage_start_hook()
2129 struct btrfs_root *root = BTRFS_I(inode)->root; in insert_reserved_file_extent() local
2150 ret = __btrfs_drop_extents(trans, root, inode, path, file_pos, in insert_reserved_file_extent()
2162 ret = btrfs_insert_empty_item(trans, root, path, &ins, in insert_reserved_file_extent()
2189 ret = btrfs_alloc_reserved_file_extent(trans, root, in insert_reserved_file_extent()
2190 root->root_key.objectid, in insert_reserved_file_extent()
2228 struct rb_root root; member
2272 static void backref_insert(struct rb_root *root, in backref_insert() argument
2275 struct rb_node **p = &root->rb_node; in backref_insert()
2292 rb_insert_color(&backref->node, root); in backref_insert()
2307 struct btrfs_root *root; in record_one_backref() local
2316 if (BTRFS_I(inode)->root->root_key.objectid == root_id && in record_one_backref()
2324 fs_info = BTRFS_I(inode)->root->fs_info; in record_one_backref()
2325 root = btrfs_read_fs_root_no_name(fs_info, &key); in record_one_backref()
2326 if (IS_ERR(root)) { in record_one_backref()
2327 if (PTR_ERR(root) == -ENOENT) in record_one_backref()
2332 return PTR_ERR(root); in record_one_backref()
2342 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in record_one_backref()
2354 ret = btrfs_next_leaf(root, path); in record_one_backref()
2411 backref_insert(&new->root, backref); in record_one_backref()
2422 struct btrfs_fs_info *fs_info = BTRFS_I(new->inode)->root->fs_info; in record_extent_backrefs()
2481 struct btrfs_root *root; in relink_extent_backref() local
2507 fs_info = BTRFS_I(src_inode)->root->fs_info; in relink_extent_backref()
2510 root = btrfs_read_fs_root_no_name(fs_info, &key); in relink_extent_backref()
2511 if (IS_ERR(root)) { in relink_extent_backref()
2513 if (PTR_ERR(root) == -ENOENT) in relink_extent_backref()
2515 return PTR_ERR(root); in relink_extent_backref()
2518 if (btrfs_root_readonly(root)) { in relink_extent_backref()
2528 inode = btrfs_iget(fs_info->sb, &key, root, NULL); in relink_extent_backref()
2548 trans = btrfs_join_transaction(root); in relink_extent_backref()
2558 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in relink_extent_backref()
2584 ret = btrfs_drop_extents(trans, root, inode, start, in relink_extent_backref()
2599 ret = btrfs_search_slot(trans, root, &key, path, 0, 1); in relink_extent_backref()
2627 ret = btrfs_insert_empty_item(trans, root, path, &key, in relink_extent_backref()
2630 btrfs_abort_transaction(trans, root, ret); in relink_extent_backref()
2652 ret = btrfs_inc_extent_ref(trans, root, new->bytenr, in relink_extent_backref()
2657 btrfs_abort_transaction(trans, root, ret); in relink_extent_backref()
2665 btrfs_end_transaction(trans, root); in relink_extent_backref()
2692 struct btrfs_root *root; in relink_file_extents() local
2697 root = BTRFS_I(inode)->root; in relink_file_extents()
2710 node = rb_first(&new->root); in relink_file_extents()
2713 rb_erase(node, &new->root); in relink_file_extents()
2734 atomic_dec(&root->fs_info->defrag_running); in relink_file_extents()
2735 wake_up(&root->fs_info->transaction_wait); in relink_file_extents()
2742 struct btrfs_root *root = BTRFS_I(inode)->root; in record_old_file_extents() local
2759 new->root = RB_ROOT; in record_old_file_extents()
2770 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in record_old_file_extents()
2791 ret = btrfs_next_leaf(root, path); in record_old_file_extents()
2840 atomic_inc(&root->fs_info->defrag_running); in record_old_file_extents()
2851 static void btrfs_release_delalloc_bytes(struct btrfs_root *root, in btrfs_release_delalloc_bytes() argument
2856 cache = btrfs_lookup_block_group(root->fs_info, start); in btrfs_release_delalloc_bytes()
2873 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_finish_ordered_io() local
2915 trans = btrfs_join_transaction_nolock(root); in btrfs_finish_ordered_io()
2917 trans = btrfs_join_transaction(root); in btrfs_finish_ordered_io()
2923 trans->block_rsv = &root->fs_info->delalloc_block_rsv; in btrfs_finish_ordered_io()
2924 ret = btrfs_update_inode_fallback(trans, root, inode); in btrfs_finish_ordered_io()
2926 btrfs_abort_transaction(trans, root, ret); in btrfs_finish_ordered_io()
2938 u64 last_snapshot = btrfs_root_last_snapshot(&root->root_item); in btrfs_finish_ordered_io()
2949 trans = btrfs_join_transaction_nolock(root); in btrfs_finish_ordered_io()
2951 trans = btrfs_join_transaction(root); in btrfs_finish_ordered_io()
2958 trans->block_rsv = &root->fs_info->delalloc_block_rsv; in btrfs_finish_ordered_io()
2969 BUG_ON(root == root->fs_info->tree_root); in btrfs_finish_ordered_io()
2978 btrfs_release_delalloc_bytes(root, in btrfs_finish_ordered_io()
2986 btrfs_abort_transaction(trans, root, ret); in btrfs_finish_ordered_io()
2994 ret = btrfs_update_inode_fallback(trans, root, inode); in btrfs_finish_ordered_io()
2996 btrfs_abort_transaction(trans, root, ret); in btrfs_finish_ordered_io()
3005 if (root != root->fs_info->tree_root) in btrfs_finish_ordered_io()
3008 btrfs_end_transaction(trans, root); in btrfs_finish_ordered_io()
3032 btrfs_free_reserved_extent(root, ordered_extent->start, in btrfs_finish_ordered_io()
3047 atomic_dec(&root->fs_info->defrag_running); in btrfs_finish_ordered_io()
3072 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_writepage_end_io_hook() local
3085 wq = root->fs_info->endio_freespace_worker; in btrfs_writepage_end_io_hook()
3088 wq = root->fs_info->endio_write_workers; in btrfs_writepage_end_io_hook()
3119 btrfs_warn_rl(BTRFS_I(inode)->root->fs_info, in __readpage_endio_check()
3142 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_readpage_end_io_hook() local
3152 if (root->root_key.objectid == BTRFS_DATA_RELOC_TREE_OBJECTID && in btrfs_readpage_end_io_hook()
3173 struct btrfs_fs_info *fs_info = BTRFS_I(inode)->root->fs_info; in btrfs_add_delayed_iput()
3187 void btrfs_run_delayed_iputs(struct btrfs_root *root) in btrfs_run_delayed_iputs() argument
3190 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_run_delayed_iputs()
3218 struct btrfs_root *root) in btrfs_orphan_commit_root() argument
3223 if (atomic_read(&root->orphan_inodes) || in btrfs_orphan_commit_root()
3224 root->orphan_cleanup_state != ORPHAN_CLEANUP_DONE) in btrfs_orphan_commit_root()
3227 spin_lock(&root->orphan_lock); in btrfs_orphan_commit_root()
3228 if (atomic_read(&root->orphan_inodes)) { in btrfs_orphan_commit_root()
3229 spin_unlock(&root->orphan_lock); in btrfs_orphan_commit_root()
3233 if (root->orphan_cleanup_state != ORPHAN_CLEANUP_DONE) { in btrfs_orphan_commit_root()
3234 spin_unlock(&root->orphan_lock); in btrfs_orphan_commit_root()
3238 block_rsv = root->orphan_block_rsv; in btrfs_orphan_commit_root()
3239 root->orphan_block_rsv = NULL; in btrfs_orphan_commit_root()
3240 spin_unlock(&root->orphan_lock); in btrfs_orphan_commit_root()
3242 if (test_bit(BTRFS_ROOT_ORPHAN_ITEM_INSERTED, &root->state) && in btrfs_orphan_commit_root()
3243 btrfs_root_refs(&root->root_item) > 0) { in btrfs_orphan_commit_root()
3244 ret = btrfs_del_orphan_item(trans, root->fs_info->tree_root, in btrfs_orphan_commit_root()
3245 root->root_key.objectid); in btrfs_orphan_commit_root()
3247 btrfs_abort_transaction(trans, root, ret); in btrfs_orphan_commit_root()
3250 &root->state); in btrfs_orphan_commit_root()
3255 btrfs_free_block_rsv(root, block_rsv); in btrfs_orphan_commit_root()
3268 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_orphan_add() local
3274 if (!root->orphan_block_rsv) { in btrfs_orphan_add()
3275 block_rsv = btrfs_alloc_block_rsv(root, BTRFS_BLOCK_RSV_TEMP); in btrfs_orphan_add()
3280 spin_lock(&root->orphan_lock); in btrfs_orphan_add()
3281 if (!root->orphan_block_rsv) { in btrfs_orphan_add()
3282 root->orphan_block_rsv = block_rsv; in btrfs_orphan_add()
3284 btrfs_free_block_rsv(root, block_rsv); in btrfs_orphan_add()
3296 if (!xchg(&root->orphan_item_inserted, 1)) in btrfs_orphan_add()
3302 atomic_inc(&root->orphan_inodes); in btrfs_orphan_add()
3308 spin_unlock(&root->orphan_lock); in btrfs_orphan_add()
3318 ret = btrfs_insert_orphan_item(trans, root, btrfs_ino(inode)); in btrfs_orphan_add()
3320 atomic_dec(&root->orphan_inodes); in btrfs_orphan_add()
3329 btrfs_abort_transaction(trans, root, ret); in btrfs_orphan_add()
3338 ret = btrfs_insert_orphan_item(trans, root->fs_info->tree_root, in btrfs_orphan_add()
3339 root->root_key.objectid); in btrfs_orphan_add()
3341 btrfs_abort_transaction(trans, root, ret); in btrfs_orphan_add()
3355 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_orphan_del() local
3360 spin_lock(&root->orphan_lock); in btrfs_orphan_del()
3368 spin_unlock(&root->orphan_lock); in btrfs_orphan_del()
3371 atomic_dec(&root->orphan_inodes); in btrfs_orphan_del()
3373 ret = btrfs_del_orphan_item(trans, root, in btrfs_orphan_del()
3387 int btrfs_orphan_cleanup(struct btrfs_root *root) in btrfs_orphan_cleanup() argument
3397 if (cmpxchg(&root->orphan_cleanup_state, 0, ORPHAN_CLEANUP_STARTED)) in btrfs_orphan_cleanup()
3412 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in btrfs_orphan_cleanup()
3448 btrfs_err(root->fs_info, in btrfs_orphan_cleanup()
3459 inode = btrfs_iget(root->fs_info->sb, &found_key, root, NULL); in btrfs_orphan_cleanup()
3464 if (ret == -ESTALE && root == root->fs_info->tree_root) { in btrfs_orphan_cleanup()
3466 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_orphan_cleanup()
3501 trans = btrfs_start_transaction(root, 1); in btrfs_orphan_cleanup()
3506 btrfs_debug(root->fs_info, "auto deleting %Lu", in btrfs_orphan_cleanup()
3508 ret = btrfs_del_orphan_item(trans, root, in btrfs_orphan_cleanup()
3510 btrfs_end_transaction(trans, root); in btrfs_orphan_cleanup()
3522 atomic_inc(&root->orphan_inodes); in btrfs_orphan_cleanup()
3533 trans = btrfs_start_transaction(root, 1); in btrfs_orphan_cleanup()
3540 btrfs_end_transaction(trans, root); in btrfs_orphan_cleanup()
3561 root->orphan_cleanup_state = ORPHAN_CLEANUP_DONE; in btrfs_orphan_cleanup()
3563 if (root->orphan_block_rsv) in btrfs_orphan_cleanup()
3564 btrfs_block_rsv_release(root, root->orphan_block_rsv, in btrfs_orphan_cleanup()
3567 if (root->orphan_block_rsv || in btrfs_orphan_cleanup()
3568 test_bit(BTRFS_ROOT_ORPHAN_ITEM_INSERTED, &root->state)) { in btrfs_orphan_cleanup()
3569 trans = btrfs_join_transaction(root); in btrfs_orphan_cleanup()
3571 btrfs_end_transaction(trans, root); in btrfs_orphan_cleanup()
3575 btrfs_debug(root->fs_info, "unlinked %d orphans", nr_unlink); in btrfs_orphan_cleanup()
3577 btrfs_debug(root->fs_info, "truncated %d orphans", nr_truncate); in btrfs_orphan_cleanup()
3581 btrfs_err(root->fs_info, in btrfs_orphan_cleanup()
3664 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_read_locked_inode() local
3683 ret = btrfs_lookup_inode(NULL, root, path, &location, 0); in btrfs_read_locked_inode()
3736 if (BTRFS_I(inode)->last_trans == root->fs_info->generation) in btrfs_read_locked_inode()
3802 btrfs_err(root->fs_info, in btrfs_read_locked_inode()
3805 root->root_key.objectid, ret); in btrfs_read_locked_inode()
3821 if (root == root->fs_info->tree_root) in btrfs_read_locked_inode()
3898 struct btrfs_root *root, struct inode *inode) in btrfs_update_inode_item() argument
3910 ret = btrfs_lookup_inode(trans, root, path, &BTRFS_I(inode)->location, in btrfs_update_inode_item()
3935 struct btrfs_root *root, struct inode *inode) in btrfs_update_inode() argument
3947 && root->root_key.objectid != BTRFS_DATA_RELOC_TREE_OBJECTID in btrfs_update_inode()
3948 && !root->fs_info->log_root_recovering) { in btrfs_update_inode()
3949 btrfs_update_root_times(trans, root); in btrfs_update_inode()
3951 ret = btrfs_delayed_update_inode(trans, root, inode); in btrfs_update_inode()
3957 return btrfs_update_inode_item(trans, root, inode); in btrfs_update_inode()
3961 struct btrfs_root *root, in btrfs_update_inode_fallback() argument
3966 ret = btrfs_update_inode(trans, root, inode); in btrfs_update_inode_fallback()
3968 return btrfs_update_inode_item(trans, root, inode); in btrfs_update_inode_fallback()
3978 struct btrfs_root *root, in __btrfs_unlink_inode() argument
3998 di = btrfs_lookup_dir_item(trans, root, path, dir_ino, in __btrfs_unlink_inode()
4010 ret = btrfs_delete_one_dir_name(trans, root, path, di); in __btrfs_unlink_inode()
4033 ret = btrfs_del_inode_ref(trans, root, name, name_len, ino, in __btrfs_unlink_inode()
4036 btrfs_info(root->fs_info, in __btrfs_unlink_inode()
4039 btrfs_abort_transaction(trans, root, ret); in __btrfs_unlink_inode()
4043 ret = btrfs_delete_delayed_dir_index(trans, root, dir, index); in __btrfs_unlink_inode()
4045 btrfs_abort_transaction(trans, root, ret); in __btrfs_unlink_inode()
4049 ret = btrfs_del_inode_ref_in_log(trans, root, name, name_len, in __btrfs_unlink_inode()
4052 btrfs_abort_transaction(trans, root, ret); in __btrfs_unlink_inode()
4056 ret = btrfs_del_dir_entries_in_log(trans, root, name, name_len, in __btrfs_unlink_inode()
4061 btrfs_abort_transaction(trans, root, ret); in __btrfs_unlink_inode()
4071 ret = btrfs_update_inode(trans, root, dir); in __btrfs_unlink_inode()
4077 struct btrfs_root *root, in btrfs_unlink_inode() argument
4082 ret = __btrfs_unlink_inode(trans, root, dir, inode, name, name_len); in btrfs_unlink_inode()
4085 ret = btrfs_update_inode(trans, root, inode); in btrfs_unlink_inode()
4100 struct btrfs_root *root = BTRFS_I(dir)->root; in __unlink_start_trans() local
4109 return btrfs_start_transaction_fallback_global_rsv(root, 5, 5); in __unlink_start_trans()
4114 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_unlink() local
4125 ret = btrfs_unlink_inode(trans, root, dir, d_inode(dentry), in btrfs_unlink()
4137 btrfs_end_transaction(trans, root); in btrfs_unlink()
4138 btrfs_btree_balance_dirty(root); in btrfs_unlink()
4143 struct btrfs_root *root, in btrfs_unlink_subvol() argument
4159 di = btrfs_lookup_dir_item(trans, root, path, dir_ino, in btrfs_unlink_subvol()
4172 ret = btrfs_delete_one_dir_name(trans, root, path, di); in btrfs_unlink_subvol()
4174 btrfs_abort_transaction(trans, root, ret); in btrfs_unlink_subvol()
4179 ret = btrfs_del_root_ref(trans, root->fs_info->tree_root, in btrfs_unlink_subvol()
4180 objectid, root->root_key.objectid, in btrfs_unlink_subvol()
4184 btrfs_abort_transaction(trans, root, ret); in btrfs_unlink_subvol()
4187 di = btrfs_search_dir_index_item(root, path, dir_ino, in btrfs_unlink_subvol()
4194 btrfs_abort_transaction(trans, root, ret); in btrfs_unlink_subvol()
4205 ret = btrfs_delete_delayed_dir_index(trans, root, dir, index); in btrfs_unlink_subvol()
4207 btrfs_abort_transaction(trans, root, ret); in btrfs_unlink_subvol()
4214 ret = btrfs_update_inode_fallback(trans, root, dir); in btrfs_unlink_subvol()
4216 btrfs_abort_transaction(trans, root, ret); in btrfs_unlink_subvol()
4226 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_rmdir() local
4239 err = btrfs_unlink_subvol(trans, root, dir, in btrfs_rmdir()
4251 err = btrfs_unlink_inode(trans, root, dir, d_inode(dentry), in btrfs_rmdir()
4256 btrfs_end_transaction(trans, root); in btrfs_rmdir()
4257 btrfs_btree_balance_dirty(root); in btrfs_rmdir()
4263 struct btrfs_root *root, in truncate_space_check() argument
4268 bytes_deleted = btrfs_csum_bytes_to_leaves(root, bytes_deleted); in truncate_space_check()
4269 ret = btrfs_block_rsv_add(root, &root->fs_info->trans_block_rsv, in truncate_space_check()
4287 struct btrfs_root *root = BTRFS_I(inode)->root; in truncate_inline_extent() local
4310 btrfs_truncate_item(root, path, size, 1); in truncate_inline_extent()
4312 if (test_bit(BTRFS_ROOT_REF_COWS, &root->state)) in truncate_inline_extent()
4330 struct btrfs_root *root, in btrfs_truncate_inode_items() argument
4365 test_bit(BTRFS_ROOT_REF_COWS, &root->state)) in btrfs_truncate_inode_items()
4378 if (test_bit(BTRFS_ROOT_REF_COWS, &root->state) || in btrfs_truncate_inode_items()
4379 root == root->fs_info->tree_root) in btrfs_truncate_inode_items()
4381 root->sectorsize), (u64)-1, 0); in btrfs_truncate_inode_items()
4389 if (min_type == 0 && root == BTRFS_I(inode)->root) in btrfs_truncate_inode_items()
4403 if (btrfs_should_end_transaction(trans, root)) { in btrfs_truncate_inode_items()
4411 ret = btrfs_search_slot(trans, root, &key, path, -1, 1); in btrfs_truncate_inode_items()
4464 if (btrfs_fs_incompat(root->fs_info, NO_HOLES)) in btrfs_truncate_inode_items()
4491 root->sectorsize); in btrfs_truncate_inode_items()
4497 &root->state) && in btrfs_truncate_inode_items()
4513 &root->state)) in btrfs_truncate_inode_items()
4533 err = btrfs_del_items(trans, root, path, in btrfs_truncate_inode_items()
4538 root, in btrfs_truncate_inode_items()
4551 root, err); in btrfs_truncate_inode_items()
4555 &root->state)) { in btrfs_truncate_inode_items()
4579 (test_bit(BTRFS_ROOT_REF_COWS, &root->state) || in btrfs_truncate_inode_items()
4580 root == root->fs_info->tree_root)) { in btrfs_truncate_inode_items()
4583 ret = btrfs_free_extent(trans, root, extent_start, in btrfs_truncate_inode_items()
4588 if (btrfs_should_throttle_delayed_refs(trans, root)) in btrfs_truncate_inode_items()
4589 btrfs_async_run_delayed_refs(root, in btrfs_truncate_inode_items()
4592 if (truncate_space_check(trans, root, in btrfs_truncate_inode_items()
4597 root)) { in btrfs_truncate_inode_items()
4610 ret = btrfs_del_items(trans, root, path, in btrfs_truncate_inode_items()
4615 root, ret); in btrfs_truncate_inode_items()
4625 ret = btrfs_run_delayed_refs(trans, root, updates * 2); in btrfs_truncate_inode_items()
4645 ret = btrfs_del_items(trans, root, path, pending_del_slot, in btrfs_truncate_inode_items()
4648 btrfs_abort_transaction(trans, root, ret); in btrfs_truncate_inode_items()
4651 if (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID) in btrfs_truncate_inode_items()
4660 ret = btrfs_run_delayed_refs(trans, root, updates * 2); in btrfs_truncate_inode_items()
4683 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_truncate_page() local
4688 u32 blocksize = root->sectorsize; in btrfs_truncate_page()
4786 static int maybe_insert_hole(struct btrfs_root *root, struct inode *inode, in maybe_insert_hole() argument
4796 if (btrfs_fs_incompat(root->fs_info, NO_HOLES)) { in maybe_insert_hole()
4797 BTRFS_I(inode)->last_trans = root->fs_info->generation; in maybe_insert_hole()
4798 BTRFS_I(inode)->last_sub_trans = root->log_transid; in maybe_insert_hole()
4799 BTRFS_I(inode)->last_log_commit = root->last_log_commit; in maybe_insert_hole()
4808 trans = btrfs_start_transaction(root, 3); in maybe_insert_hole()
4812 ret = btrfs_drop_extents(trans, root, inode, offset, offset + len, 1); in maybe_insert_hole()
4814 btrfs_abort_transaction(trans, root, ret); in maybe_insert_hole()
4815 btrfs_end_transaction(trans, root); in maybe_insert_hole()
4819 ret = btrfs_insert_file_extent(trans, root, btrfs_ino(inode), offset, in maybe_insert_hole()
4822 btrfs_abort_transaction(trans, root, ret); in maybe_insert_hole()
4824 btrfs_update_inode(trans, root, inode); in maybe_insert_hole()
4825 btrfs_end_transaction(trans, root); in maybe_insert_hole()
4837 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_cont_expand() local
4842 u64 hole_start = ALIGN(oldsize, root->sectorsize); in btrfs_cont_expand()
4843 u64 block_end = ALIGN(size, root->sectorsize); in btrfs_cont_expand()
4886 last_byte = ALIGN(last_byte , root->sectorsize); in btrfs_cont_expand()
4891 err = maybe_insert_hole(root, inode, cur_offset, in btrfs_cont_expand()
4911 hole_em->bdev = root->fs_info->fs_devices->latest_bdev; in btrfs_cont_expand()
4913 hole_em->generation = root->fs_info->generation; in btrfs_cont_expand()
4946 static void wait_for_snapshot_creation(struct btrfs_root *root) in wait_for_snapshot_creation() argument
4951 ret = btrfs_start_write_no_snapshoting(root); in wait_for_snapshot_creation()
4954 wait_on_atomic_t(&root->will_be_snapshoted, in wait_for_snapshot_creation()
4962 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_setsize() local
4991 wait_for_snapshot_creation(root); in btrfs_setsize()
4994 btrfs_end_write_no_snapshoting(root); in btrfs_setsize()
4998 trans = btrfs_start_transaction(root, 1); in btrfs_setsize()
5000 btrfs_end_write_no_snapshoting(root); in btrfs_setsize()
5006 ret = btrfs_update_inode(trans, root, inode); in btrfs_setsize()
5007 btrfs_end_write_no_snapshoting(root); in btrfs_setsize()
5008 btrfs_end_transaction(trans, root); in btrfs_setsize()
5024 trans = btrfs_start_transaction(root, 2); in btrfs_setsize()
5039 btrfs_end_transaction(trans, root); in btrfs_setsize()
5061 trans = btrfs_join_transaction(root); in btrfs_setsize()
5069 btrfs_abort_transaction(trans, root, err); in btrfs_setsize()
5070 btrfs_end_transaction(trans, root); in btrfs_setsize()
5080 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_setattr() local
5083 if (btrfs_root_readonly(root)) in btrfs_setattr()
5204 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_evict_inode() local
5207 u64 min_size = btrfs_calc_trunc_metadata_size(root, 1); in btrfs_evict_inode()
5215 ((btrfs_root_refs(&root->root_item) != 0 && in btrfs_evict_inode()
5216 root->root_key.objectid != BTRFS_ROOT_TREE_OBJECTID) || in btrfs_evict_inode()
5230 if (root->fs_info->log_root_recovering) { in btrfs_evict_inode()
5237 BUG_ON(btrfs_root_refs(&root->root_item) != 0 && in btrfs_evict_inode()
5238 root->root_key.objectid != BTRFS_ROOT_TREE_OBJECTID); in btrfs_evict_inode()
5248 rsv = btrfs_alloc_block_rsv(root, BTRFS_BLOCK_RSV_TEMP); in btrfs_evict_inode()
5255 global_rsv = &root->fs_info->global_block_rsv; in btrfs_evict_inode()
5266 ret = btrfs_block_rsv_refill(root, rsv, min_size, in btrfs_evict_inode()
5289 btrfs_warn(root->fs_info, in btrfs_evict_inode()
5293 btrfs_free_block_rsv(root, rsv); in btrfs_evict_inode()
5297 trans = btrfs_join_transaction(root); in btrfs_evict_inode()
5300 btrfs_free_block_rsv(root, rsv); in btrfs_evict_inode()
5310 if (!btrfs_check_space_for_delayed_refs(trans, root)) in btrfs_evict_inode()
5323 ret = btrfs_commit_transaction(trans, root); in btrfs_evict_inode()
5326 btrfs_free_block_rsv(root, rsv); in btrfs_evict_inode()
5336 ret = btrfs_truncate_inode_items(trans, root, inode, 0, 0); in btrfs_evict_inode()
5340 trans->block_rsv = &root->fs_info->trans_block_rsv; in btrfs_evict_inode()
5341 btrfs_end_transaction(trans, root); in btrfs_evict_inode()
5343 btrfs_btree_balance_dirty(root); in btrfs_evict_inode()
5346 btrfs_free_block_rsv(root, rsv); in btrfs_evict_inode()
5353 trans->block_rsv = root->orphan_block_rsv; in btrfs_evict_inode()
5359 trans->block_rsv = &root->fs_info->trans_block_rsv; in btrfs_evict_inode()
5360 if (!(root == root->fs_info->tree_root || in btrfs_evict_inode()
5361 root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID)) in btrfs_evict_inode()
5362 btrfs_return_ino(root, btrfs_ino(inode)); in btrfs_evict_inode()
5364 btrfs_end_transaction(trans, root); in btrfs_evict_inode()
5365 btrfs_btree_balance_dirty(root); in btrfs_evict_inode()
5385 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_inode_by_name() local
5392 di = btrfs_lookup_dir_item(NULL, root, path, btrfs_ino(dir), name, in btrfs_inode_by_name()
5416 static int fixup_tree_root_location(struct btrfs_root *root, in fixup_tree_root_location() argument
5437 key.objectid = BTRFS_I(dir)->root->root_key.objectid; in fixup_tree_root_location()
5441 ret = btrfs_search_slot(NULL, root->fs_info->tree_root, &key, path, in fixup_tree_root_location()
5463 new_root = btrfs_read_fs_root_no_name(root->fs_info, location); in fixup_tree_root_location()
5481 struct btrfs_root *root = BTRFS_I(inode)->root; in inode_tree_add() local
5491 spin_lock(&root->inode_lock); in inode_tree_add()
5492 p = &root->inode_tree.rb_node; in inode_tree_add()
5504 rb_replace_node(parent, new, &root->inode_tree); in inode_tree_add()
5506 spin_unlock(&root->inode_lock); in inode_tree_add()
5511 rb_insert_color(new, &root->inode_tree); in inode_tree_add()
5512 spin_unlock(&root->inode_lock); in inode_tree_add()
5517 struct btrfs_root *root = BTRFS_I(inode)->root; in inode_tree_del() local
5520 spin_lock(&root->inode_lock); in inode_tree_del()
5522 rb_erase(&BTRFS_I(inode)->rb_node, &root->inode_tree); in inode_tree_del()
5524 empty = RB_EMPTY_ROOT(&root->inode_tree); in inode_tree_del()
5526 spin_unlock(&root->inode_lock); in inode_tree_del()
5528 if (empty && btrfs_root_refs(&root->root_item) == 0) { in inode_tree_del()
5529 spin_lock(&root->inode_lock); in inode_tree_del()
5530 empty = RB_EMPTY_ROOT(&root->inode_tree); in inode_tree_del()
5531 spin_unlock(&root->inode_lock); in inode_tree_del()
5533 btrfs_add_dead_root(root); in inode_tree_del()
5537 void btrfs_invalidate_inodes(struct btrfs_root *root) in btrfs_invalidate_inodes() argument
5545 if (!test_bit(BTRFS_FS_STATE_ERROR, &root->fs_info->fs_state)) in btrfs_invalidate_inodes()
5546 WARN_ON(btrfs_root_refs(&root->root_item) != 0); in btrfs_invalidate_inodes()
5548 spin_lock(&root->inode_lock); in btrfs_invalidate_inodes()
5550 node = root->inode_tree.rb_node; in btrfs_invalidate_inodes()
5578 spin_unlock(&root->inode_lock); in btrfs_invalidate_inodes()
5588 spin_lock(&root->inode_lock); in btrfs_invalidate_inodes()
5592 if (cond_resched_lock(&root->inode_lock)) in btrfs_invalidate_inodes()
5597 spin_unlock(&root->inode_lock); in btrfs_invalidate_inodes()
5606 BTRFS_I(inode)->root = args->root; in btrfs_init_locked_inode()
5614 args->root == BTRFS_I(inode)->root; in btrfs_find_actor()
5619 struct btrfs_root *root) in btrfs_iget_locked() argument
5623 unsigned long hashval = btrfs_inode_hash(location->objectid, root); in btrfs_iget_locked()
5626 args.root = root; in btrfs_iget_locked()
5638 struct btrfs_root *root, int *new) in btrfs_iget() argument
5642 inode = btrfs_iget_locked(s, location, root); in btrfs_iget()
5665 struct btrfs_root *root) in new_simple_dir() argument
5672 BTRFS_I(inode)->root = root; in new_simple_dir()
5696 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_lookup_dentry() local
5697 struct btrfs_root *sub_root = root; in btrfs_lookup_dentry()
5714 inode = btrfs_iget(dir->i_sb, &location, root, NULL); in btrfs_lookup_dentry()
5720 btrfs_crit(root->fs_info, in btrfs_lookup_dentry()
5732 index = srcu_read_lock(&root->fs_info->subvol_srcu); in btrfs_lookup_dentry()
5733 ret = fixup_tree_root_location(root, dir, dentry, in btrfs_lookup_dentry()
5743 srcu_read_unlock(&root->fs_info->subvol_srcu, index); in btrfs_lookup_dentry()
5745 if (!IS_ERR(inode) && root != sub_root) { in btrfs_lookup_dentry()
5746 down_read(&root->fs_info->cleanup_work_sem); in btrfs_lookup_dentry()
5749 up_read(&root->fs_info->cleanup_work_sem); in btrfs_lookup_dentry()
5761 struct btrfs_root *root; in btrfs_dentry_delete() local
5768 root = BTRFS_I(inode)->root; in btrfs_dentry_delete()
5769 if (btrfs_root_refs(&root->root_item) == 0) in btrfs_dentry_delete()
5806 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_real_readdir() local
5830 if (root->fs_info->tree_root == root) in btrfs_real_readdir()
5852 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in btrfs_real_readdir()
5861 ret = btrfs_next_leaf(root, path); in btrfs_real_readdir()
5893 if (verify_dir_item(root, leaf, di)) in btrfs_real_readdir()
5923 location.objectid == root->root_key.objectid) { in btrfs_real_readdir()
6000 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_write_inode() local
6008 if (btrfs_fs_closing(root->fs_info) && btrfs_is_free_space_inode(inode)) in btrfs_write_inode()
6013 trans = btrfs_join_transaction_nolock(root); in btrfs_write_inode()
6015 trans = btrfs_join_transaction(root); in btrfs_write_inode()
6018 ret = btrfs_commit_transaction(trans, root); in btrfs_write_inode()
6031 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_dirty_inode() local
6038 trans = btrfs_join_transaction(root); in btrfs_dirty_inode()
6042 ret = btrfs_update_inode(trans, root, inode); in btrfs_dirty_inode()
6045 btrfs_end_transaction(trans, root); in btrfs_dirty_inode()
6046 trans = btrfs_start_transaction(root, 1); in btrfs_dirty_inode()
6050 ret = btrfs_update_inode(trans, root, inode); in btrfs_dirty_inode()
6052 btrfs_end_transaction(trans, root); in btrfs_dirty_inode()
6054 btrfs_balance_delayed_items(root); in btrfs_dirty_inode()
6066 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_update_time() local
6068 if (btrfs_root_readonly(root)) in btrfs_update_time()
6089 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_set_inode_index_count() local
6103 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in btrfs_set_inode_index_count()
6166 args.root = BTRFS_I(inode)->root; in btrfs_insert_inode_locked()
6169 btrfs_inode_hash(inode->i_ino, BTRFS_I(inode)->root), in btrfs_insert_inode_locked()
6174 struct btrfs_root *root, in btrfs_new_inode() argument
6195 inode = new_inode(root->fs_info->sb); in btrfs_new_inode()
6233 BTRFS_I(inode)->root = root; in btrfs_new_inode()
6275 ret = btrfs_insert_empty_items(trans, root, path, key, sizes, nitems); in btrfs_new_inode()
6308 if (btrfs_test_opt(root, NODATASUM)) in btrfs_new_inode()
6310 if (btrfs_test_opt(root, NODATACOW)) in btrfs_new_inode()
6320 btrfs_update_root_times(trans, root); in btrfs_new_inode()
6324 btrfs_err(root->fs_info, in btrfs_new_inode()
6326 btrfs_ino(inode), root->root_key.objectid, ret); in btrfs_new_inode()
6352 struct btrfs_root *root = BTRFS_I(parent_inode)->root; in btrfs_add_link() local
6357 memcpy(&key, &BTRFS_I(inode)->root->root_key, sizeof(key)); in btrfs_add_link()
6365 ret = btrfs_add_root_ref(trans, root->fs_info->tree_root, in btrfs_add_link()
6366 key.objectid, root->root_key.objectid, in btrfs_add_link()
6369 ret = btrfs_insert_inode_ref(trans, root, name, name_len, ino, in btrfs_add_link()
6377 ret = btrfs_insert_dir_item(trans, root, name, name_len, in btrfs_add_link()
6383 btrfs_abort_transaction(trans, root, ret); in btrfs_add_link()
6391 ret = btrfs_update_inode(trans, root, parent_inode); in btrfs_add_link()
6393 btrfs_abort_transaction(trans, root, ret); in btrfs_add_link()
6400 err = btrfs_del_root_ref(trans, root->fs_info->tree_root, in btrfs_add_link()
6401 key.objectid, root->root_key.objectid, in btrfs_add_link()
6408 err = btrfs_del_inode_ref(trans, root, name, name_len, in btrfs_add_link()
6430 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_mknod() local
6442 trans = btrfs_start_transaction(root, 5); in btrfs_mknod()
6446 err = btrfs_find_free_ino(root, &objectid); in btrfs_mknod()
6450 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_mknod()
6475 btrfs_update_inode(trans, root, inode); in btrfs_mknod()
6480 btrfs_end_transaction(trans, root); in btrfs_mknod()
6481 btrfs_balance_delayed_items(root); in btrfs_mknod()
6482 btrfs_btree_balance_dirty(root); in btrfs_mknod()
6500 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_create() local
6512 trans = btrfs_start_transaction(root, 5); in btrfs_create()
6516 err = btrfs_find_free_ino(root, &objectid); in btrfs_create()
6520 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_create()
6542 err = btrfs_update_inode(trans, root, inode); in btrfs_create()
6554 btrfs_end_transaction(trans, root); in btrfs_create()
6559 btrfs_balance_delayed_items(root); in btrfs_create()
6560 btrfs_btree_balance_dirty(root); in btrfs_create()
6573 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_link() local
6580 if (root->objectid != BTRFS_I(inode)->root->objectid) in btrfs_link()
6595 trans = btrfs_start_transaction(root, 5); in btrfs_link()
6616 err = btrfs_update_inode(trans, root, inode); in btrfs_link()
6632 btrfs_balance_delayed_items(root); in btrfs_link()
6635 btrfs_end_transaction(trans, root); in btrfs_link()
6640 btrfs_btree_balance_dirty(root); in btrfs_link()
6648 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_mkdir() local
6659 trans = btrfs_start_transaction(root, 5); in btrfs_mkdir()
6663 err = btrfs_find_free_ino(root, &objectid); in btrfs_mkdir()
6667 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_mkdir()
6685 err = btrfs_update_inode(trans, root, inode); in btrfs_mkdir()
6698 btrfs_end_transaction(trans, root); in btrfs_mkdir()
6703 btrfs_balance_delayed_items(root); in btrfs_mkdir()
6704 btrfs_btree_balance_dirty(root); in btrfs_mkdir()
6840 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_get_extent() local
6854 em->bdev = root->fs_info->fs_devices->latest_bdev; in btrfs_get_extent()
6870 em->bdev = root->fs_info->fs_devices->latest_bdev; in btrfs_get_extent()
6889 ret = btrfs_lookup_file_extent(trans, root, path, in btrfs_get_extent()
6927 btrfs_crit(root->fs_info, in btrfs_get_extent()
6937 extent_end = ALIGN(extent_start + size, root->sectorsize); in btrfs_get_extent()
6943 ret = btrfs_next_leaf(root, path); in btrfs_get_extent()
6986 em->len = ALIGN(copy_size, root->sectorsize); in btrfs_get_extent()
7020 trans = btrfs_join_transaction(root); in btrfs_get_extent()
7046 btrfs_err(root->fs_info, "bad extent! em: [%llu %llu] passed [%llu %llu]", in btrfs_get_extent()
7091 trace_btrfs_get_extent(root, em); in btrfs_get_extent()
7095 ret = btrfs_end_transaction(trans, root); in btrfs_get_extent()
7237 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_new_extent_direct() local
7244 ret = btrfs_reserve_extent(root, len, root->sectorsize, 0, in btrfs_new_extent_direct()
7252 btrfs_free_reserved_extent(root, ins.objectid, ins.offset, 1); in btrfs_new_extent_direct()
7259 btrfs_free_reserved_extent(root, ins.objectid, ins.offset, 1); in btrfs_new_extent_direct()
7279 struct btrfs_root *root = BTRFS_I(inode)->root; in can_nocow_extent() local
7295 ret = btrfs_lookup_file_extent(NULL, root, path, btrfs_ino(inode), in can_nocow_extent()
7355 if (btrfs_extent_readonly(root, disk_bytenr)) in can_nocow_extent()
7362 range_end = round_up(offset + num_bytes, root->sectorsize) - 1; in can_nocow_extent()
7377 trans = btrfs_join_transaction(root); in can_nocow_extent()
7383 ret = btrfs_cross_ref_exist(trans, root, btrfs_ino(inode), in can_nocow_extent()
7385 btrfs_end_transaction(trans, root); in can_nocow_extent()
7399 if (csum_exist_in_range(root, disk_bytenr, num_bytes)) in can_nocow_extent()
7414 struct radix_tree_root *root = &inode->i_mapping->page_tree; in btrfs_page_exists_in_range() local
7437 radix_tree_gang_lookup_slot(root, &pagep, NULL, start_idx, 1)) { in btrfs_page_exists_in_range()
7553 struct btrfs_root *root = BTRFS_I(inode)->root; in create_pinned_em() local
7568 em->bdev = root->fs_info->fs_devices->latest_bdev; in create_pinned_em()
7630 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_get_blocks_direct() local
7642 len = min_t(u64, len, root->sectorsize); in btrfs_get_blocks_direct()
7827 struct btrfs_root *root = BTRFS_I(inode)->root; in submit_dio_repair_bio() local
7834 ret = btrfs_bio_wq_end_io(root->fs_info, bio, in submit_dio_repair_bio()
7839 ret = btrfs_map_bio(root, rw, bio, mirror_num, 0); in submit_dio_repair_bio()
7852 num_copies = btrfs_num_copies(BTRFS_I(inode)->root->fs_info, in btrfs_check_dio_repairable()
7917 btrfs_debug(BTRFS_I(inode)->root->fs_info, in dio_read_error()
8114 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_endio_direct_write() local
8131 btrfs_queue_work(root->fs_info->endio_write_workers, in btrfs_endio_direct_write()
8158 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_submit_bio_start_direct_io() local
8159 ret = btrfs_csum_one_bio(root, inode, bio, offset, 1); in __btrfs_submit_bio_start_direct_io()
8170 btrfs_warn(BTRFS_I(dip->inode)->root->fs_info, in btrfs_end_dio_bio()
8213 static inline int btrfs_lookup_and_bind_dio_csum(struct btrfs_root *root, in btrfs_lookup_and_bind_dio_csum() argument
8229 ret = btrfs_lookup_bio_sums_dio(root, inode, dip->orig_bio, in btrfs_lookup_and_bind_dio_csum()
8251 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_submit_dio_bio() local
8260 ret = btrfs_bio_wq_end_io(root->fs_info, bio, in __btrfs_submit_dio_bio()
8270 ret = btrfs_wq_submit_bio(root->fs_info, in __btrfs_submit_dio_bio()
8281 ret = btrfs_csum_one_bio(root, inode, bio, file_offset, 1); in __btrfs_submit_dio_bio()
8285 ret = btrfs_lookup_and_bind_dio_csum(root, inode, dip, bio, in __btrfs_submit_dio_bio()
8291 ret = btrfs_map_bio(root, rw, bio, 0, async_submit); in __btrfs_submit_dio_bio()
8301 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_submit_direct_hook() local
8314 ret = btrfs_map_block(root->fs_info, rw, start_sector << 9, in btrfs_submit_direct_hook()
8326 if (btrfs_get_alloc_profile(root, 1) & BTRFS_BLOCK_GROUP_RAID56_MASK) in btrfs_submit_direct_hook()
8374 ret = btrfs_map_block(root->fs_info, rw, in btrfs_submit_direct_hook()
8511 static ssize_t check_direct_IO(struct btrfs_root *root, struct kiocb *iocb, in check_direct_IO() argument
8516 unsigned blocksize_mask = root->sectorsize - 1; in check_direct_IO()
8549 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_direct_IO() local
8557 if (check_direct_IO(BTRFS_I(inode)->root, iocb, iter, offset)) in btrfs_direct_IO()
8597 dio_data.reserve = round_up(count, root->sectorsize); in btrfs_direct_IO()
8607 BTRFS_I(inode)->root->fs_info->fs_devices->latest_bdev, in btrfs_direct_IO()
8843 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_page_mkwrite() local
8942 BTRFS_I(inode)->last_trans = root->fs_info->generation; in btrfs_page_mkwrite()
8943 BTRFS_I(inode)->last_sub_trans = BTRFS_I(inode)->root->log_transid; in btrfs_page_mkwrite()
8944 BTRFS_I(inode)->last_log_commit = BTRFS_I(inode)->root->last_log_commit; in btrfs_page_mkwrite()
8963 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_truncate() local
8968 u64 mask = root->sectorsize - 1; in btrfs_truncate()
8969 u64 min_size = btrfs_calc_trunc_metadata_size(root, 1); in btrfs_truncate()
9012 rsv = btrfs_alloc_block_rsv(root, BTRFS_BLOCK_RSV_TEMP); in btrfs_truncate()
9022 trans = btrfs_start_transaction(root, 2); in btrfs_truncate()
9029 ret = btrfs_block_rsv_migrate(&root->fs_info->trans_block_rsv, rsv, in btrfs_truncate()
9044 ret = btrfs_truncate_inode_items(trans, root, inode, in btrfs_truncate()
9052 trans->block_rsv = &root->fs_info->trans_block_rsv; in btrfs_truncate()
9053 ret = btrfs_update_inode(trans, root, inode); in btrfs_truncate()
9059 btrfs_end_transaction(trans, root); in btrfs_truncate()
9060 btrfs_btree_balance_dirty(root); in btrfs_truncate()
9062 trans = btrfs_start_transaction(root, 2); in btrfs_truncate()
9069 ret = btrfs_block_rsv_migrate(&root->fs_info->trans_block_rsv, in btrfs_truncate()
9076 trans->block_rsv = root->orphan_block_rsv; in btrfs_truncate()
9083 trans->block_rsv = &root->fs_info->trans_block_rsv; in btrfs_truncate()
9084 ret = btrfs_update_inode(trans, root, inode); in btrfs_truncate()
9088 ret = btrfs_end_transaction(trans, root); in btrfs_truncate()
9089 btrfs_btree_balance_dirty(root); in btrfs_truncate()
9093 btrfs_free_block_rsv(root, rsv); in btrfs_truncate()
9147 ei->root = NULL; in btrfs_alloc_inode()
9207 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_destroy_inode() local
9222 if (!root) in btrfs_destroy_inode()
9227 btrfs_info(root->fs_info, "inode %llu still on the orphan list", in btrfs_destroy_inode()
9229 atomic_dec(&root->orphan_inodes); in btrfs_destroy_inode()
9237 btrfs_err(root->fs_info, "found ordered extent %llu %llu on inode cleanup", in btrfs_destroy_inode()
9253 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_drop_inode() local
9255 if (root == NULL) in btrfs_drop_inode()
9259 if (btrfs_root_refs(&root->root_item) == 0) in btrfs_drop_inode()
9346 stat->dev = BTRFS_I(inode)->root->anon_dev; in btrfs_getattr()
9361 struct btrfs_root *root = BTRFS_I(old_dir)->root; in btrfs_rename() local
9362 struct btrfs_root *dest = BTRFS_I(new_dir)->root; in btrfs_rename()
9375 if (old_ino != BTRFS_FIRST_FREE_OBJECTID && root != dest) in btrfs_rename()
9415 down_read(&root->fs_info->subvol_sem); in btrfs_rename()
9424 trans = btrfs_start_transaction(root, 11); in btrfs_rename()
9430 if (dest != root) in btrfs_rename()
9440 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_rename()
9456 btrfs_pin_log_trans(root); in btrfs_rename()
9470 root_objectid = BTRFS_I(old_inode)->root->root_key.objectid; in btrfs_rename()
9471 ret = btrfs_unlink_subvol(trans, root, old_dir, root_objectid, in btrfs_rename()
9475 ret = __btrfs_unlink_inode(trans, root, old_dir, in btrfs_rename()
9480 ret = btrfs_update_inode(trans, root, old_inode); in btrfs_rename()
9483 btrfs_abort_transaction(trans, root, ret); in btrfs_rename()
9507 btrfs_abort_transaction(trans, root, ret); in btrfs_rename()
9516 btrfs_abort_transaction(trans, root, ret); in btrfs_rename()
9526 btrfs_end_log_trans(root); in btrfs_rename()
9529 btrfs_end_transaction(trans, root); in btrfs_rename()
9532 up_read(&root->fs_info->subvol_sem); in btrfs_rename()
9602 static int __start_delalloc_inodes(struct btrfs_root *root, int delay_iput, in __start_delalloc_inodes() argument
9615 mutex_lock(&root->delalloc_mutex); in __start_delalloc_inodes()
9616 spin_lock(&root->delalloc_lock); in __start_delalloc_inodes()
9617 list_splice_init(&root->delalloc_inodes, &splice); in __start_delalloc_inodes()
9623 &root->delalloc_inodes); in __start_delalloc_inodes()
9626 cond_resched_lock(&root->delalloc_lock); in __start_delalloc_inodes()
9629 spin_unlock(&root->delalloc_lock); in __start_delalloc_inodes()
9641 btrfs_queue_work(root->fs_info->flush_workers, in __start_delalloc_inodes()
9647 spin_lock(&root->delalloc_lock); in __start_delalloc_inodes()
9649 spin_unlock(&root->delalloc_lock); in __start_delalloc_inodes()
9658 spin_lock(&root->delalloc_lock); in __start_delalloc_inodes()
9659 list_splice_tail(&splice, &root->delalloc_inodes); in __start_delalloc_inodes()
9660 spin_unlock(&root->delalloc_lock); in __start_delalloc_inodes()
9662 mutex_unlock(&root->delalloc_mutex); in __start_delalloc_inodes()
9666 int btrfs_start_delalloc_inodes(struct btrfs_root *root, int delay_iput) in btrfs_start_delalloc_inodes() argument
9670 if (test_bit(BTRFS_FS_STATE_ERROR, &root->fs_info->fs_state)) in btrfs_start_delalloc_inodes()
9673 ret = __start_delalloc_inodes(root, delay_iput, -1); in btrfs_start_delalloc_inodes()
9681 atomic_inc(&root->fs_info->async_submit_draining); in btrfs_start_delalloc_inodes()
9682 while (atomic_read(&root->fs_info->nr_async_submits) || in btrfs_start_delalloc_inodes()
9683 atomic_read(&root->fs_info->async_delalloc_pages)) { in btrfs_start_delalloc_inodes()
9684 wait_event(root->fs_info->async_submit_wait, in btrfs_start_delalloc_inodes()
9685 (atomic_read(&root->fs_info->nr_async_submits) == 0 && in btrfs_start_delalloc_inodes()
9686 atomic_read(&root->fs_info->async_delalloc_pages) == 0)); in btrfs_start_delalloc_inodes()
9688 atomic_dec(&root->fs_info->async_submit_draining); in btrfs_start_delalloc_inodes()
9695 struct btrfs_root *root; in btrfs_start_delalloc_roots() local
9708 root = list_first_entry(&splice, struct btrfs_root, in btrfs_start_delalloc_roots()
9710 root = btrfs_grab_fs_root(root); in btrfs_start_delalloc_roots()
9711 BUG_ON(!root); in btrfs_start_delalloc_roots()
9712 list_move_tail(&root->delalloc_root, in btrfs_start_delalloc_roots()
9716 ret = __start_delalloc_inodes(root, delay_iput, nr); in btrfs_start_delalloc_roots()
9717 btrfs_put_fs_root(root); in btrfs_start_delalloc_roots()
9752 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_symlink() local
9767 if (name_len > BTRFS_MAX_INLINE_DATA_SIZE(root)) in btrfs_symlink()
9777 trans = btrfs_start_transaction(root, 7); in btrfs_symlink()
9781 err = btrfs_find_free_ino(root, &objectid); in btrfs_symlink()
9785 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_symlink()
9821 err = btrfs_insert_empty_item(trans, root, path, &key, in btrfs_symlink()
9847 err = btrfs_update_inode(trans, root, inode); in btrfs_symlink()
9856 btrfs_end_transaction(trans, root); in btrfs_symlink()
9861 btrfs_btree_balance_dirty(root); in btrfs_symlink()
9877 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_prealloc_file_range() local
9890 trans = btrfs_start_transaction(root, 3); in __btrfs_prealloc_file_range()
9906 ret = btrfs_reserve_extent(root, cur_bytes, min_size, 0, in __btrfs_prealloc_file_range()
9910 btrfs_end_transaction(trans, root); in __btrfs_prealloc_file_range()
9921 btrfs_free_reserved_extent(root, ins.objectid, in __btrfs_prealloc_file_range()
9923 btrfs_abort_transaction(trans, root, ret); in __btrfs_prealloc_file_range()
9925 btrfs_end_transaction(trans, root); in __btrfs_prealloc_file_range()
9946 em->bdev = root->fs_info->fs_devices->latest_bdev; in __btrfs_prealloc_file_range()
9980 ret = btrfs_update_inode(trans, root, inode); in __btrfs_prealloc_file_range()
9983 btrfs_abort_transaction(trans, root, ret); in __btrfs_prealloc_file_range()
9985 btrfs_end_transaction(trans, root); in __btrfs_prealloc_file_range()
9990 btrfs_end_transaction(trans, root); in __btrfs_prealloc_file_range()
10020 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_permission() local
10025 if (btrfs_root_readonly(root)) in btrfs_permission()
10036 struct btrfs_root *root = BTRFS_I(dir)->root; in btrfs_tmpfile() local
10045 trans = btrfs_start_transaction(root, 5); in btrfs_tmpfile()
10049 ret = btrfs_find_free_ino(root, &objectid); in btrfs_tmpfile()
10053 inode = btrfs_new_inode(trans, root, dir, NULL, 0, in btrfs_tmpfile()
10071 ret = btrfs_update_inode(trans, root, inode); in btrfs_tmpfile()
10091 btrfs_end_transaction(trans, root); in btrfs_tmpfile()
10094 btrfs_balance_delayed_items(root); in btrfs_tmpfile()
10095 btrfs_btree_balance_dirty(root); in btrfs_tmpfile()