Lines Matching full:trans
405 struct btrfs_trans_handle *trans, in build_backref_tree() argument
437 ret = btrfs_backref_add_tree_node(trans, cache, path, iter, in build_backref_tree()
582 static struct btrfs_root *create_reloc_root(struct btrfs_trans_handle *trans, in create_reloc_root() argument
622 ret = btrfs_copy_root(trans, root, root->commit_root, &eb, in create_reloc_root()
645 ret = btrfs_copy_root(trans, root, root->node, &eb, in create_reloc_root()
659 btrfs_set_root_generation(root_item, trans->transid); in create_reloc_root()
671 ret = btrfs_insert_root(trans, fs_info->tree_root, in create_reloc_root()
682 btrfs_set_root_last_trans(reloc_root, trans->transid); in create_reloc_root()
686 btrfs_abort_transaction(trans, ret); in create_reloc_root()
697 int btrfs_init_reloc_root(struct btrfs_trans_handle *trans, in btrfs_init_reloc_root() argument
720 * corresponding fs root, and then here we update the last trans for the in btrfs_init_reloc_root()
727 btrfs_set_root_last_trans(reloc_root, trans->transid); in btrfs_init_reloc_root()
738 if (!trans->reloc_reserved) { in btrfs_init_reloc_root()
739 rsv = trans->block_rsv; in btrfs_init_reloc_root()
740 trans->block_rsv = rc->block_rsv; in btrfs_init_reloc_root()
743 reloc_root = create_reloc_root(trans, root, btrfs_root_id(root)); in btrfs_init_reloc_root()
745 trans->block_rsv = rsv; in btrfs_init_reloc_root()
763 int btrfs_update_reloc_root(struct btrfs_trans_handle *trans, in btrfs_update_reloc_root() argument
803 ret = btrfs_update_root(trans, fs_info->tree_root, in btrfs_update_reloc_root()
854 int replace_file_extents(struct btrfs_trans_handle *trans, in replace_file_extents() argument
961 ret = btrfs_inc_extent_ref(trans, &ref); in replace_file_extents()
963 btrfs_abort_transaction(trans, ret); in replace_file_extents()
975 ret = btrfs_free_extent(trans, &ref); in replace_file_extents()
977 btrfs_abort_transaction(trans, ret); in replace_file_extents()
1007 int replace_path(struct btrfs_trans_handle *trans, struct reloc_control *rc, in replace_path() argument
1046 ret = btrfs_cow_block(trans, dest, eb, NULL, 0, &eb, in replace_path()
1109 ret = btrfs_cow_block(trans, dest, eb, parent, in replace_path()
1139 ret = btrfs_search_slot(trans, src, &key, path, 0, 1); in replace_path()
1186 ret = btrfs_inc_extent_ref(trans, &ref); in replace_path()
1188 btrfs_abort_transaction(trans, ret); in replace_path()
1199 ret = btrfs_inc_extent_ref(trans, &ref); in replace_path()
1201 btrfs_abort_transaction(trans, ret); in replace_path()
1213 ret = btrfs_free_extent(trans, &ref); in replace_path()
1215 btrfs_abort_transaction(trans, ret); in replace_path()
1227 ret = btrfs_free_extent(trans, &ref); in replace_path()
1229 btrfs_abort_transaction(trans, ret); in replace_path()
1422 static int insert_dirty_subvol(struct btrfs_trans_handle *trans, in insert_dirty_subvol() argument
1439 ret = btrfs_update_reloc_root(trans, root); in insert_dirty_subvol()
1509 struct btrfs_trans_handle *trans = NULL; in merge_reloc_root() local
1572 trans = btrfs_start_transaction(root, 0); in merge_reloc_root()
1573 if (IS_ERR(trans)) { in merge_reloc_root()
1574 ret = PTR_ERR(trans); in merge_reloc_root()
1575 trans = NULL; in merge_reloc_root()
1583 * But that's ok, we started the trans handle on our in merge_reloc_root()
1589 btrfs_set_root_last_trans(reloc_root, trans->transid); in merge_reloc_root()
1590 trans->block_rsv = rc->block_rsv; in merge_reloc_root()
1605 ret = replace_path(trans, rc, root, reloc_root, path, in merge_reloc_root()
1630 btrfs_end_transaction_throttle(trans); in merge_reloc_root()
1631 trans = NULL; in merge_reloc_root()
1644 ret = btrfs_cow_block(trans, root, leaf, NULL, 0, &leaf, in merge_reloc_root()
1652 ret = insert_dirty_subvol(trans, rc, root); in merge_reloc_root()
1654 btrfs_abort_transaction(trans, ret); in merge_reloc_root()
1657 if (trans) in merge_reloc_root()
1658 btrfs_end_transaction_throttle(trans); in merge_reloc_root()
1674 struct btrfs_trans_handle *trans; in prepare_to_merge() local
1693 trans = btrfs_join_transaction(rc->extent_root); in prepare_to_merge()
1694 if (IS_ERR(trans)) { in prepare_to_merge()
1698 return PTR_ERR(trans); in prepare_to_merge()
1703 btrfs_end_transaction(trans); in prepare_to_merge()
1725 btrfs_abort_transaction(trans, (int)PTR_ERR(root)); in prepare_to_merge()
1758 btrfs_abort_transaction(trans, -EUCLEAN); in prepare_to_merge()
1770 ret = btrfs_update_reloc_root(trans, root); in prepare_to_merge()
1780 btrfs_abort_transaction(trans, ret); in prepare_to_merge()
1790 err = btrfs_commit_transaction(trans); in prepare_to_merge()
1792 btrfs_end_transaction(trans); in prepare_to_merge()
1924 static int record_reloc_root_in_trans(struct btrfs_trans_handle *trans, in record_reloc_root_in_trans() argument
1931 if (btrfs_get_root_last_trans(reloc_root) == trans->transid) in record_reloc_root_in_trans()
1956 ret = btrfs_record_root_in_trans(trans, root); in record_reloc_root_in_trans()
1963 struct btrfs_root *select_reloc_root(struct btrfs_trans_handle *trans, in select_reloc_root() argument
1988 btrfs_err(trans->fs_info, in select_reloc_root()
1994 btrfs_err(trans->fs_info, in select_reloc_root()
2001 ret = record_reloc_root_in_trans(trans, root); in select_reloc_root()
2007 ret = btrfs_record_root_in_trans(trans, root); in select_reloc_root()
2027 btrfs_err(trans->fs_info, in select_reloc_root()
2134 static int refill_metadata_space(struct btrfs_trans_handle *trans, in refill_metadata_space() argument
2137 struct btrfs_fs_info *fs_info = trans->fs_info; in refill_metadata_space()
2140 trans->block_rsv = rc->block_rsv; in refill_metadata_space()
2170 static int reserve_metadata_space(struct btrfs_trans_handle *trans, in reserve_metadata_space() argument
2177 return refill_metadata_space(trans, rc, num_bytes); in reserve_metadata_space()
2187 static int do_relocation(struct btrfs_trans_handle *trans, in do_relocation() argument
2215 root = select_reloc_root(trans, rc, upper, edges); in do_relocation()
2235 ret = btrfs_search_slot(trans, root, key, path, 0, 1); in do_relocation()
2287 ret = btrfs_cow_block(trans, root, eb, upper->eb, in do_relocation()
2311 trans->transid); in do_relocation()
2312 btrfs_mark_buffer_dirty(trans, upper->eb); in do_relocation()
2316 ret = btrfs_inc_extent_ref(trans, &ref); in do_relocation()
2318 ret = btrfs_drop_subtree(trans, root, eb, in do_relocation()
2321 btrfs_abort_transaction(trans, ret); in do_relocation()
2348 static int link_to_upper(struct btrfs_trans_handle *trans, in link_to_upper() argument
2356 return do_relocation(trans, rc, node, &key, path, 0); in link_to_upper()
2359 static int finish_pending_nodes(struct btrfs_trans_handle *trans, in finish_pending_nodes() argument
2377 ret = link_to_upper(trans, rc, node, path); in finish_pending_nodes()
2458 static int relocate_tree_block(struct btrfs_trans_handle *trans, in relocate_tree_block() argument
2474 ret = reserve_metadata_space(trans, rc, node); in relocate_tree_block()
2514 ret = btrfs_record_root_in_trans(trans, root); in relocate_tree_block()
2540 ret = do_relocation(trans, rc, node, key, path, 1); in relocate_tree_block()
2548 static int relocate_cowonly_block(struct btrfs_trans_handle *trans, in relocate_cowonly_block() argument
2552 struct btrfs_fs_info *fs_info = trans->fs_info; in relocate_cowonly_block()
2565 ret = refill_metadata_space(trans, rc, num_bytes); in relocate_cowonly_block()
2572 btrfs_reserve_chunk_metadata(trans, false); in relocate_cowonly_block()
2574 ret = btrfs_search_slot(trans, root, &block->key, path, 0, 1); in relocate_cowonly_block()
2579 btrfs_trans_release_chunk_metadata(trans); in relocate_cowonly_block()
2591 int relocate_tree_blocks(struct btrfs_trans_handle *trans, in relocate_tree_blocks() argument
2634 ret = relocate_cowonly_block(trans, rc, block, path); in relocate_tree_blocks()
2640 node = build_backref_tree(trans, rc, &block->key, in relocate_tree_blocks()
2647 ret = relocate_tree_block(trans, rc, node, &block->key, in relocate_tree_blocks()
2653 ret = finish_pending_nodes(trans, rc, path, ret); in relocate_tree_blocks()
3211 struct btrfs_trans_handle *trans; in delete_block_group_cache() local
3229 trans = btrfs_join_transaction(root); in delete_block_group_cache()
3230 if (IS_ERR(trans)) { in delete_block_group_cache()
3231 ret = PTR_ERR(trans); in delete_block_group_cache()
3235 ret = btrfs_truncate_free_space_cache(trans, block_group, inode); in delete_block_group_cache()
3237 btrfs_end_transaction(trans); in delete_block_group_cache()
3443 struct btrfs_trans_handle *trans; in prepare_to_relocate() local
3468 trans = btrfs_join_transaction(rc->extent_root); in prepare_to_relocate()
3469 if (IS_ERR(trans)) { in prepare_to_relocate()
3476 return PTR_ERR(trans); in prepare_to_relocate()
3479 ret = btrfs_commit_transaction(trans); in prepare_to_relocate()
3491 struct btrfs_trans_handle *trans = NULL; in relocate_block_group() local
3520 trans = btrfs_start_transaction(rc->extent_root, 0); in relocate_block_group()
3521 if (IS_ERR(trans)) { in relocate_block_group()
3522 err = PTR_ERR(trans); in relocate_block_group()
3523 trans = NULL; in relocate_block_group()
3527 if (rc->backref_cache.last_trans != trans->transid) in relocate_block_group()
3529 rc->backref_cache.last_trans = trans->transid; in relocate_block_group()
3573 ret = relocate_tree_blocks(trans, rc, &blocks); in relocate_block_group()
3584 btrfs_end_transaction_throttle(trans); in relocate_block_group()
3586 trans = NULL; in relocate_block_group()
3602 if (trans && progress && err == -ENOSPC) { in relocate_block_group()
3603 ret = btrfs_force_chunk_alloc(trans, rc->block_group->flags); in relocate_block_group()
3614 if (trans) { in relocate_block_group()
3615 btrfs_end_transaction_throttle(trans); in relocate_block_group()
3648 trans = btrfs_join_transaction(rc->extent_root); in relocate_block_group()
3649 if (IS_ERR(trans)) { in relocate_block_group()
3650 err = PTR_ERR(trans); in relocate_block_group()
3653 ret = btrfs_commit_transaction(trans); in relocate_block_group()
3664 static int __insert_orphan_inode(struct btrfs_trans_handle *trans, in __insert_orphan_inode() argument
3676 ret = btrfs_insert_empty_inode(trans, root, path, objectid); in __insert_orphan_inode()
3691 static void delete_orphan_inode(struct btrfs_trans_handle *trans, in delete_orphan_inode() argument
3707 ret = btrfs_search_slot(trans, root, &key, path, -1, 1); in delete_orphan_inode()
3713 ret = btrfs_del_item(trans, root, path); in delete_orphan_inode()
3716 btrfs_abort_transaction(trans, ret); in delete_orphan_inode()
3728 struct btrfs_trans_handle *trans; in create_reloc_inode() local
3734 trans = btrfs_start_transaction(root, 6); in create_reloc_inode()
3735 if (IS_ERR(trans)) { in create_reloc_inode()
3737 return ERR_CAST(trans); in create_reloc_inode()
3744 ret = __insert_orphan_inode(trans, root, objectid); in create_reloc_inode()
3750 delete_orphan_inode(trans, root, objectid); in create_reloc_inode()
3757 ret = btrfs_orphan_add(trans, inode); in create_reloc_inode()
3760 btrfs_end_transaction(trans); in create_reloc_inode()
4020 struct btrfs_trans_handle *trans; in mark_garbage_root() local
4023 trans = btrfs_start_transaction(fs_info->tree_root, 0); in mark_garbage_root()
4024 if (IS_ERR(trans)) in mark_garbage_root()
4025 return PTR_ERR(trans); in mark_garbage_root()
4031 ret = btrfs_update_root(trans, fs_info->tree_root, in mark_garbage_root()
4034 err = btrfs_end_transaction(trans); in mark_garbage_root()
4055 struct btrfs_trans_handle *trans; in btrfs_recover_relocation() local
4136 trans = btrfs_join_transaction(rc->extent_root); in btrfs_recover_relocation()
4137 if (IS_ERR(trans)) { in btrfs_recover_relocation()
4138 ret = PTR_ERR(trans); in btrfs_recover_relocation()
4159 btrfs_end_transaction(trans); in btrfs_recover_relocation()
4168 btrfs_end_transaction(trans); in btrfs_recover_relocation()
4175 ret = btrfs_commit_transaction(trans); in btrfs_recover_relocation()
4183 trans = btrfs_join_transaction(rc->extent_root); in btrfs_recover_relocation()
4184 if (IS_ERR(trans)) { in btrfs_recover_relocation()
4185 ret = PTR_ERR(trans); in btrfs_recover_relocation()
4188 ret = btrfs_commit_transaction(trans); in btrfs_recover_relocation()
4261 int btrfs_reloc_cow_block(struct btrfs_trans_handle *trans, in btrfs_reloc_cow_block() argument
4320 ret = replace_file_extents(trans, rc, root, cow); in btrfs_reloc_cow_block()
4363 int btrfs_reloc_post_snapshot(struct btrfs_trans_handle *trans, in btrfs_reloc_post_snapshot() argument
4387 reloc_root = create_reloc_root(trans, root->reloc_root, btrfs_root_id(new_root)); in btrfs_reloc_post_snapshot()