Lines Matching defs:trans

248 static int init_first_rw_device(struct btrfs_trans_handle *trans);
1729 static int btrfs_free_dev_extent(struct btrfs_trans_handle *trans,
1750 ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
1775 ret = btrfs_del_item(trans, root, path);
1777 set_bit(BTRFS_TRANS_HAVE_FREE_BGS, &trans->transaction->flags);
1849 static int btrfs_add_dev_item(struct btrfs_trans_handle *trans,
1867 btrfs_reserve_chunk_metadata(trans, true);
1868 ret = btrfs_insert_empty_item(trans, trans->fs_info->chunk_root, path,
1870 btrfs_trans_release_chunk_metadata(trans);
1895 write_extent_buffer(leaf, trans->fs_info->fs_devices->metadata_uuid,
1897 btrfs_mark_buffer_dirty(trans, leaf);
1924 static int btrfs_rm_dev_item(struct btrfs_trans_handle *trans,
1940 btrfs_reserve_chunk_metadata(trans, false);
1941 ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
1942 btrfs_trans_release_chunk_metadata(trans);
1949 ret = btrfs_del_item(trans, root, path);
2092 struct btrfs_trans_handle *trans;
2149 trans = btrfs_start_transaction(fs_info->chunk_root, 0);
2150 if (IS_ERR(trans)) {
2151 ret = PTR_ERR(trans);
2155 ret = btrfs_rm_dev_item(trans, device);
2161 btrfs_abort_transaction(trans, ret);
2162 btrfs_end_transaction(trans);
2247 ret = btrfs_commit_transaction(trans);
2537 static int btrfs_finish_sprout(struct btrfs_trans_handle *trans)
2540 struct btrfs_fs_info *fs_info = trans->fs_info;
2560 btrfs_reserve_chunk_metadata(trans, false);
2561 ret = btrfs_search_slot(trans, root, &key, path, 0, 1);
2562 btrfs_trans_release_chunk_metadata(trans);
2600 btrfs_mark_buffer_dirty(trans, leaf);
2615 struct btrfs_trans_handle *trans;
2676 trans = btrfs_start_transaction(root, 0);
2677 if (IS_ERR(trans)) {
2678 ret = PTR_ERR(trans);
2683 device->generation = trans->transid;
2704 btrfs_abort_transaction(trans, ret);
2756 ret = init_first_rw_device(trans);
2759 btrfs_abort_transaction(trans, ret);
2764 ret = btrfs_add_dev_item(trans, device);
2766 btrfs_abort_transaction(trans, ret);
2771 ret = btrfs_finish_sprout(trans);
2773 btrfs_abort_transaction(trans, ret);
2784 ret = btrfs_commit_transaction(trans);
2798 trans = btrfs_attach_transaction(root);
2799 if (IS_ERR(trans)) {
2800 if (PTR_ERR(trans) == -ENOENT)
2802 ret = PTR_ERR(trans);
2803 trans = NULL;
2806 ret = btrfs_commit_transaction(trans);
2844 if (trans)
2845 btrfs_end_transaction(trans);
2859 static noinline int btrfs_update_device(struct btrfs_trans_handle *trans,
2877 ret = btrfs_search_slot(trans, root, &key, path, 0, 1);
2898 btrfs_mark_buffer_dirty(trans, leaf);
2905 int btrfs_grow_device(struct btrfs_trans_handle *trans,
2938 &trans->transaction->dev_update_list);
2941 btrfs_reserve_chunk_metadata(trans, false);
2942 ret = btrfs_update_device(trans, device);
2943 btrfs_trans_release_chunk_metadata(trans);
2948 static int btrfs_free_chunk(struct btrfs_trans_handle *trans, u64 chunk_offset)
2950 struct btrfs_fs_info *fs_info = trans->fs_info;
2964 ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
2974 ret = btrfs_del_item(trans, root, path);
3066 static int remove_chunk_item(struct btrfs_trans_handle *trans,
3076 lockdep_assert_held(&trans->fs_info->chunk_mutex);
3081 ret = btrfs_update_device(trans, map->stripes[i].dev);
3086 return btrfs_free_chunk(trans, chunk_offset);
3089 int btrfs_remove_chunk(struct btrfs_trans_handle *trans, u64 chunk_offset)
3091 struct btrfs_fs_info *fs_info = trans->fs_info;
3123 ret = btrfs_free_dev_extent(trans, device,
3128 btrfs_abort_transaction(trans, ret);
3164 trans->removing_chunk = true;
3167 check_system_chunk(trans, map->type);
3169 ret = remove_chunk_item(trans, map, chunk_offset);
3188 sys_bg = btrfs_create_chunk(trans, sys_flags);
3191 btrfs_abort_transaction(trans, ret);
3195 ret = btrfs_chunk_alloc_add_chunk_item(trans, sys_bg);
3197 btrfs_abort_transaction(trans, ret);
3201 ret = remove_chunk_item(trans, map, chunk_offset);
3203 btrfs_abort_transaction(trans, ret);
3207 btrfs_abort_transaction(trans, ret);
3216 btrfs_abort_transaction(trans, ret);
3222 trans->removing_chunk = false;
3228 btrfs_trans_release_chunk_metadata(trans);
3230 ret = btrfs_remove_block_group(trans, chunk_offset, em);
3232 btrfs_abort_transaction(trans, ret);
3237 if (trans->removing_chunk) {
3239 trans->removing_chunk = false;
3249 struct btrfs_trans_handle *trans;
3309 trans = btrfs_start_trans_remove_block_group(root->fs_info,
3311 if (IS_ERR(trans)) {
3312 ret = PTR_ERR(trans);
3321 ret = btrfs_remove_chunk(trans, chunk_offset);
3322 btrfs_end_transaction(trans);
3425 struct btrfs_trans_handle *trans;
3428 trans = btrfs_join_transaction(fs_info->tree_root);
3429 if (IS_ERR(trans))
3430 return PTR_ERR(trans);
3432 ret = btrfs_force_chunk_alloc(trans, BTRFS_BLOCK_GROUP_DATA);
3433 btrfs_end_transaction(trans);
3446 struct btrfs_trans_handle *trans;
3458 trans = btrfs_start_transaction(root, 0);
3459 if (IS_ERR(trans)) {
3461 return PTR_ERR(trans);
3468 ret = btrfs_insert_empty_item(trans, root, path, &key,
3487 btrfs_mark_buffer_dirty(trans, leaf);
3490 err = btrfs_commit_transaction(trans);
3499 struct btrfs_trans_handle *trans;
3508 trans = btrfs_start_transaction_fallback_global_rsv(root, 0);
3509 if (IS_ERR(trans)) {
3511 return PTR_ERR(trans);
3518 ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
3526 ret = btrfs_del_item(trans, root, path);
3529 err = btrfs_commit_transaction(trans);
4651 struct btrfs_trans_handle *trans = NULL;
4697 if (trans)
4705 trans = btrfs_start_transaction(fs_info->uuid_root, 2);
4706 if (IS_ERR(trans)) {
4707 ret = PTR_ERR(trans);
4717 ret = btrfs_uuid_tree_add(trans, root_item.uuid,
4728 ret = btrfs_uuid_tree_add(trans,
4741 if (trans) {
4742 ret = btrfs_end_transaction(trans);
4743 trans = NULL;
4765 if (trans && !IS_ERR(trans))
4766 btrfs_end_transaction(trans);
4777 struct btrfs_trans_handle *trans;
4787 trans = btrfs_start_transaction(tree_root, 2);
4788 if (IS_ERR(trans))
4789 return PTR_ERR(trans);
4791 uuid_root = btrfs_create_tree(trans, BTRFS_UUID_TREE_OBJECTID);
4794 btrfs_abort_transaction(trans, ret);
4795 btrfs_end_transaction(trans);
4801 ret = btrfs_commit_transaction(trans);
4826 struct btrfs_trans_handle *trans;
4856 trans = btrfs_start_transaction(root, 0);
4857 if (IS_ERR(trans)) {
4859 return PTR_ERR(trans);
4877 ret = btrfs_commit_transaction(trans);
4882 btrfs_end_transaction(trans);
4966 trans = btrfs_start_transaction(root, 0);
4967 if (IS_ERR(trans)) {
4968 ret = PTR_ERR(trans);
4980 &trans->transaction->dev_update_list);
4987 btrfs_reserve_chunk_metadata(trans, false);
4989 ret = btrfs_update_device(trans, device);
4990 btrfs_trans_release_chunk_metadata(trans);
4992 btrfs_abort_transaction(trans, ret);
4993 btrfs_end_transaction(trans);
4995 ret = btrfs_commit_transaction(trans);
5375 static struct btrfs_block_group *create_chunk(struct btrfs_trans_handle *trans,
5379 struct btrfs_fs_info *info = trans->fs_info;
5433 block_group = btrfs_make_block_group(trans, type, start, ctl->chunk_size);
5444 &trans->transaction->dev_update_list);
5469 struct btrfs_block_group *btrfs_create_chunk(struct btrfs_trans_handle *trans,
5472 struct btrfs_fs_info *info = trans->fs_info;
5519 block_group = create_chunk(trans, &ctl, devices_info);
5534 int btrfs_chunk_alloc_add_chunk_item(struct btrfs_trans_handle *trans,
5537 struct btrfs_fs_info *fs_info = trans->fs_info;
5575 btrfs_abort_transaction(trans, ret);
5585 btrfs_abort_transaction(trans, ret);
5592 ret = btrfs_update_device(trans, device);
5622 ret = btrfs_insert_item(trans, chunk_root, &key, chunk, item_size);
5640 static noinline int init_first_rw_device(struct btrfs_trans_handle *trans)
5642 struct btrfs_fs_info *fs_info = trans->fs_info;
5669 meta_bg = btrfs_create_chunk(trans, alloc_profile);
5674 sys_bg = btrfs_create_chunk(trans, alloc_profile);
7480 static int update_dev_stat_item(struct btrfs_trans_handle *trans,
7483 struct btrfs_fs_info *fs_info = trans->fs_info;
7499 ret = btrfs_search_slot(trans, dev_root, &key, path, -1, 1);
7510 ret = btrfs_del_item(trans, dev_root, path);
7523 ret = btrfs_insert_empty_item(trans, dev_root, path,
7538 btrfs_mark_buffer_dirty(trans, eb);
7548 int btrfs_run_dev_stats(struct btrfs_trans_handle *trans)
7550 struct btrfs_fs_info *fs_info = trans->fs_info;
7576 ret = update_dev_stat_item(trans, device);
7667 void btrfs_commit_device_sizes(struct btrfs_transaction *trans)
7671 ASSERT(trans->state == TRANS_STATE_COMMIT_DOING);
7673 if (list_empty(&trans->dev_update_list))
7681 mutex_lock(&trans->fs_info->chunk_mutex);
7682 list_for_each_entry_safe(curr, next, &trans->dev_update_list,
7688 mutex_unlock(&trans->fs_info->chunk_mutex);