Lines Matching defs:trans
252 static int update_backref_cache(struct btrfs_trans_handle *trans,
259 cache->last_trans = trans->transid;
263 if (cache->last_trans == trans->transid)
469 struct btrfs_trans_handle *trans,
503 ret = btrfs_backref_add_tree_node(trans, cache, path, iter,
548 static int clone_backref_node(struct btrfs_trans_handle *trans,
562 update_backref_cache(trans, cache);
612 btrfs_backref_panic(trans->fs_info, new_node->bytenr, -EEXIST);
742 static struct btrfs_root *create_reloc_root(struct btrfs_trans_handle *trans,
765 ret = btrfs_copy_root(trans, root, root->commit_root, &eb,
788 ret = btrfs_copy_root(trans, root, root->node, &eb,
803 btrfs_set_root_generation(root_item, trans->transid);
815 ret = btrfs_insert_root(trans, fs_info->tree_root,
828 reloc_root->last_trans = trans->transid;
834 btrfs_abort_transaction(trans, ret);
845 int btrfs_init_reloc_root(struct btrfs_trans_handle *trans,
868 * corresponding fs root, and then here we update the last trans for the
875 reloc_root->last_trans = trans->transid;
887 if (!trans->reloc_reserved) {
888 rsv = trans->block_rsv;
889 trans->block_rsv = rc->block_rsv;
892 reloc_root = create_reloc_root(trans, root, root->root_key.objectid);
894 trans->block_rsv = rsv;
912 int btrfs_update_reloc_root(struct btrfs_trans_handle *trans,
952 ret = btrfs_update_root(trans, fs_info->tree_root,
1064 int replace_file_extents(struct btrfs_trans_handle *trans,
1166 ret = btrfs_inc_extent_ref(trans, &ref);
1168 btrfs_abort_transaction(trans, ret);
1177 ret = btrfs_free_extent(trans, &ref);
1179 btrfs_abort_transaction(trans, ret);
1184 btrfs_mark_buffer_dirty(trans, leaf);
1211 int replace_path(struct btrfs_trans_handle *trans, struct reloc_control *rc,
1250 ret = btrfs_cow_block(trans, dest, eb, NULL, 0, &eb,
1313 ret = btrfs_cow_block(trans, dest, eb, parent,
1343 ret = btrfs_search_slot(trans, src, &key, path, 0, 1);
1366 ret = btrfs_qgroup_add_swapped_blocks(trans, dest,
1377 btrfs_mark_buffer_dirty(trans, parent);
1383 btrfs_mark_buffer_dirty(trans, path->nodes[level]);
1389 ret = btrfs_inc_extent_ref(trans, &ref);
1391 btrfs_abort_transaction(trans, ret);
1398 ret = btrfs_inc_extent_ref(trans, &ref);
1400 btrfs_abort_transaction(trans, ret);
1408 ret = btrfs_free_extent(trans, &ref);
1410 btrfs_abort_transaction(trans, ret);
1418 ret = btrfs_free_extent(trans, &ref);
1420 btrfs_abort_transaction(trans, ret);
1612 static int insert_dirty_subvol(struct btrfs_trans_handle *trans,
1629 ret = btrfs_update_reloc_root(trans, root);
1699 struct btrfs_trans_handle *trans = NULL;
1762 trans = btrfs_start_transaction(root, 0);
1763 if (IS_ERR(trans)) {
1764 ret = PTR_ERR(trans);
1765 trans = NULL;
1773 * But that's ok, we started the trans handle on our
1779 reloc_root->last_trans = trans->transid;
1780 trans->block_rsv = rc->block_rsv;
1795 ret = replace_path(trans, rc, root, reloc_root, path,
1820 btrfs_end_transaction_throttle(trans);
1821 trans = NULL;
1834 ret = btrfs_cow_block(trans, root, leaf, NULL, 0, &leaf,
1842 ret = insert_dirty_subvol(trans, rc, root);
1844 btrfs_abort_transaction(trans, ret);
1847 if (trans)
1848 btrfs_end_transaction_throttle(trans);
1864 struct btrfs_trans_handle *trans;
1883 trans = btrfs_join_transaction(rc->extent_root);
1884 if (IS_ERR(trans)) {
1888 return PTR_ERR(trans);
1893 btrfs_end_transaction(trans);
1915 btrfs_abort_transaction(trans, (int)PTR_ERR(root));
1948 btrfs_abort_transaction(trans, -EUCLEAN);
1960 ret = btrfs_update_reloc_root(trans, root);
1970 btrfs_abort_transaction(trans, ret);
1980 err = btrfs_commit_transaction(trans);
1982 btrfs_end_transaction(trans);
2115 static int record_reloc_root_in_trans(struct btrfs_trans_handle *trans,
2122 if (reloc_root->last_trans == trans->transid)
2147 ret = btrfs_record_root_in_trans(trans, root);
2154 struct btrfs_root *select_reloc_root(struct btrfs_trans_handle *trans,
2184 btrfs_err(trans->fs_info,
2191 btrfs_err(trans->fs_info,
2198 ret = record_reloc_root_in_trans(trans, root);
2204 ret = btrfs_record_root_in_trans(trans, root);
2227 btrfs_err(trans->fs_info,
2354 static int reserve_metadata_space(struct btrfs_trans_handle *trans,
2366 trans->block_rsv = rc->block_rsv;
2402 static int do_relocation(struct btrfs_trans_handle *trans,
2432 root = select_reloc_root(trans, rc, upper, edges);
2452 ret = btrfs_search_slot(trans, root, key, path, 0, 1);
2504 ret = btrfs_cow_block(trans, root, eb, upper->eb,
2519 trans->transid);
2520 btrfs_mark_buffer_dirty(trans, upper->eb);
2528 ret = btrfs_inc_extent_ref(trans, &ref);
2530 ret = btrfs_drop_subtree(trans, root, eb,
2533 btrfs_abort_transaction(trans, ret);
2560 static int link_to_upper(struct btrfs_trans_handle *trans,
2568 return do_relocation(trans, rc, node, &key, path, 0);
2571 static int finish_pending_nodes(struct btrfs_trans_handle *trans,
2589 ret = link_to_upper(trans, rc, node, path);
2670 static int relocate_tree_block(struct btrfs_trans_handle *trans,
2686 ret = reserve_metadata_space(trans, rc, node);
2728 ret = btrfs_record_root_in_trans(trans, root);
2748 btrfs_reserve_chunk_metadata(trans, false);
2749 ret = btrfs_search_slot(trans, root, key, path, 0, 1);
2752 btrfs_trans_release_chunk_metadata(trans);
2759 ret = do_relocation(trans, rc, node, key, path, 1);
2771 int relocate_tree_blocks(struct btrfs_trans_handle *trans,
2807 node = build_backref_tree(trans, rc, &block->key,
2814 ret = relocate_tree_block(trans, rc, node, &block->key,
2822 err = finish_pending_nodes(trans, rc, path, err);
3371 struct btrfs_trans_handle *trans;
3387 trans = btrfs_join_transaction(root);
3388 if (IS_ERR(trans)) {
3389 ret = PTR_ERR(trans);
3393 ret = btrfs_truncate_free_space_cache(trans, block_group, inode);
3395 btrfs_end_transaction(trans);
3603 struct btrfs_trans_handle *trans;
3628 trans = btrfs_join_transaction(rc->extent_root);
3629 if (IS_ERR(trans)) {
3636 return PTR_ERR(trans);
3639 ret = btrfs_commit_transaction(trans);
3651 struct btrfs_trans_handle *trans = NULL;
3680 trans = btrfs_start_transaction(rc->extent_root, 0);
3681 if (IS_ERR(trans)) {
3682 err = PTR_ERR(trans);
3683 trans = NULL;
3687 if (update_backref_cache(trans, &rc->backref_cache)) {
3688 btrfs_end_transaction(trans);
3689 trans = NULL;
3720 ret = relocate_tree_blocks(trans, rc, &blocks);
3731 btrfs_end_transaction_throttle(trans);
3733 trans = NULL;
3750 if (trans && progress && err == -ENOSPC) {
3751 ret = btrfs_force_chunk_alloc(trans, rc->block_group->flags);
3762 if (trans) {
3763 btrfs_end_transaction_throttle(trans);
3797 trans = btrfs_join_transaction(rc->extent_root);
3798 if (IS_ERR(trans)) {
3799 err = PTR_ERR(trans);
3802 ret = btrfs_commit_transaction(trans);
3814 static int __insert_orphan_inode(struct btrfs_trans_handle *trans,
3826 ret = btrfs_insert_empty_inode(trans, root, path, objectid);
3838 btrfs_mark_buffer_dirty(trans, leaf);
3844 static void delete_orphan_inode(struct btrfs_trans_handle *trans,
3860 ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
3866 ret = btrfs_del_item(trans, root, path);
3869 btrfs_abort_transaction(trans, ret);
3882 struct btrfs_trans_handle *trans;
3888 trans = btrfs_start_transaction(root, 6);
3889 if (IS_ERR(trans)) {
3891 return ERR_CAST(trans);
3898 err = __insert_orphan_inode(trans, root, objectid);
3904 delete_orphan_inode(trans, root, objectid);
3911 err = btrfs_orphan_add(trans, BTRFS_I(inode));
3914 btrfs_end_transaction(trans);
4178 struct btrfs_trans_handle *trans;
4181 trans = btrfs_start_transaction(fs_info->tree_root, 0);
4182 if (IS_ERR(trans))
4183 return PTR_ERR(trans);
4189 ret = btrfs_update_root(trans, fs_info->tree_root,
4192 err = btrfs_end_transaction(trans);
4213 struct btrfs_trans_handle *trans;
4300 trans = btrfs_join_transaction(rc->extent_root);
4301 if (IS_ERR(trans)) {
4302 err = PTR_ERR(trans);
4324 btrfs_end_transaction(trans);
4333 btrfs_end_transaction(trans);
4340 err = btrfs_commit_transaction(trans);
4348 trans = btrfs_join_transaction(rc->extent_root);
4349 if (IS_ERR(trans)) {
4350 err = PTR_ERR(trans);
4353 err = btrfs_commit_transaction(trans);
4424 int btrfs_reloc_cow_block(struct btrfs_trans_handle *trans,
4473 ret = replace_file_extents(trans, rc, root, cow);
4516 int btrfs_reloc_post_snapshot(struct btrfs_trans_handle *trans,
4540 reloc_root = create_reloc_root(trans, root->reloc_root,
4555 ret = clone_backref_node(trans, rc, root, reloc_root);