Lines Matching defs:trans

1025 static int remove_block_group_item(struct btrfs_trans_handle *trans,
1029 struct btrfs_fs_info *fs_info = trans->fs_info;
1039 ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
1045 ret = btrfs_del_item(trans, root, path);
1049 int btrfs_remove_block_group(struct btrfs_trans_handle *trans,
1052 struct btrfs_fs_info *fs_info = trans->fs_info;
1111 mutex_lock(&trans->transaction->cache_write_mutex);
1116 spin_lock(&trans->transaction->dirty_bgs_lock);
1122 spin_unlock(&trans->transaction->dirty_bgs_lock);
1123 btrfs_wait_cache_io(trans, block_group, path);
1125 spin_lock(&trans->transaction->dirty_bgs_lock);
1133 spin_unlock(&trans->transaction->dirty_bgs_lock);
1134 mutex_unlock(&trans->transaction->cache_write_mutex);
1136 ret = btrfs_remove_free_space_inode(trans, inode, block_group);
1194 spin_lock(&trans->transaction->dirty_bgs_lock);
1197 spin_unlock(&trans->transaction->dirty_bgs_lock);
1234 ret = remove_block_group_free_space(trans, block_group);
1238 ret = remove_block_group_item(trans, path, block_group);
1419 static bool clean_pinned_extents(struct btrfs_trans_handle *trans,
1429 if (trans->transaction->list.prev != &fs_info->trans_list) {
1430 prev_trans = list_last_entry(&trans->transaction->list,
1454 ret = clear_extent_bits(&trans->transaction->pinned_extents, start, end,
1473 struct btrfs_trans_handle *trans;
1604 trans = btrfs_start_trans_remove_block_group(fs_info,
1606 if (IS_ERR(trans)) {
1608 ret = PTR_ERR(trans);
1616 if (!clean_pinned_extents(trans, block_group)) {
1675 ret = btrfs_remove_chunk(trans, block_group->start);
1696 &trans->transaction->deleted_bgs);
1701 btrfs_end_transaction(trans);
1712 btrfs_end_transaction(trans);
2584 static int insert_block_group_item(struct btrfs_trans_handle *trans,
2587 struct btrfs_fs_info *fs_info = trans->fs_info;
2606 ret = btrfs_insert_item(trans, root, &key, &bgi, sizeof(bgi));
2616 static int insert_dev_extent(struct btrfs_trans_handle *trans,
2637 ret = btrfs_insert_empty_item(trans, root, path, &key, sizeof(*extent));
2649 btrfs_mark_buffer_dirty(trans, leaf);
2661 static int insert_dev_extents(struct btrfs_trans_handle *trans,
2664 struct btrfs_fs_info *fs_info = trans->fs_info;
2694 ret = insert_dev_extent(trans, device, chunk_offset, dev_offset,
2712 void btrfs_create_pending_block_groups(struct btrfs_trans_handle *trans)
2714 struct btrfs_fs_info *fs_info = trans->fs_info;
2718 while (!list_empty(&trans->new_bgs)) {
2721 block_group = list_first_entry(&trans->new_bgs,
2729 ret = insert_block_group_item(trans, block_group);
2731 btrfs_abort_transaction(trans, ret);
2735 ret = btrfs_chunk_alloc_add_chunk_item(trans, block_group);
2738 btrfs_abort_transaction(trans, ret);
2740 ret = insert_dev_extents(trans, block_group->start,
2743 btrfs_abort_transaction(trans, ret);
2744 add_block_group_free_space(trans, block_group);
2761 btrfs_trans_release_chunk_metadata(trans);
2785 struct btrfs_block_group *btrfs_make_block_group(struct btrfs_trans_handle *trans,
2789 struct btrfs_fs_info *fs_info = trans->fs_info;
2793 btrfs_set_log_full_commit(trans);
2866 list_add_tail(&cache->bg_list, &trans->new_bgs);
2867 trans->delayed_ref_updates++;
2868 btrfs_update_delayed_refs_rsv(trans);
2887 struct btrfs_trans_handle *trans;
2907 trans = btrfs_join_transaction(root);
2908 if (IS_ERR(trans))
2909 return PTR_ERR(trans);
2919 if (test_bit(BTRFS_TRANS_DIRTY_BG_RUN, &trans->transaction->flags)) {
2920 u64 transid = trans->transid;
2923 btrfs_end_transaction(trans);
2939 ret = btrfs_chunk_alloc(trans, alloc_flags,
2968 ret = btrfs_chunk_alloc(trans, alloc_flags, CHUNK_ALLOC_FORCE);
2986 check_system_chunk(trans, alloc_flags);
2992 btrfs_end_transaction(trans);
3024 static int update_block_group_item(struct btrfs_trans_handle *trans,
3028 struct btrfs_fs_info *fs_info = trans->fs_info;
3059 ret = btrfs_search_slot(trans, root, &key, path, 0, 1);
3073 btrfs_mark_buffer_dirty(trans, leaf);
3095 struct btrfs_trans_handle *trans,
3122 if (TRANS_ABORTED(trans))
3139 ret = create_free_space_inode(trans, block_group, path);
3151 ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
3163 btrfs_abort_transaction(trans, ret);
3169 if (block_group->cache_generation == trans->transid &&
3181 ret = btrfs_truncate_free_space_cache(trans, NULL, inode);
3205 if (test_bit(BTRFS_TRANS_CACHE_ENOSPC, &trans->transaction->flags)) {
3228 ret = btrfs_prealloc_file_range_trans(inode, trans, 0, 0, cache_size,
3242 set_bit(BTRFS_TRANS_CACHE_ENOSPC, &trans->transaction->flags);
3251 block_group->cache_generation = trans->transid;
3259 int btrfs_setup_space_cache(struct btrfs_trans_handle *trans)
3261 struct btrfs_fs_info *fs_info = trans->fs_info;
3263 struct btrfs_transaction *cur_trans = trans->transaction;
3278 cache_save_setup(cache, trans, path);
3297 int btrfs_start_dirty_block_groups(struct btrfs_trans_handle *trans)
3299 struct btrfs_fs_info *fs_info = trans->fs_info;
3301 struct btrfs_transaction *cur_trans = trans->transaction;
3319 btrfs_create_pending_block_groups(trans);
3334 mutex_lock(&trans->transaction->cache_write_mutex);
3347 btrfs_wait_cache_io(trans, cache, path);
3366 cache_save_setup(cache, trans, path);
3370 ret = btrfs_write_out_cache(trans, cache, path);
3389 ret = update_block_group_item(trans, path, cache);
3410 btrfs_abort_transaction(trans, ret);
3424 mutex_unlock(&trans->transaction->cache_write_mutex);
3427 mutex_lock(&trans->transaction->cache_write_mutex);
3429 mutex_unlock(&trans->transaction->cache_write_mutex);
3436 ret = btrfs_run_delayed_refs(trans, 0);
3463 int btrfs_write_dirty_block_groups(struct btrfs_trans_handle *trans)
3465 struct btrfs_fs_info *fs_info = trans->fs_info;
3467 struct btrfs_transaction *cur_trans = trans->transaction;
3506 btrfs_wait_cache_io(trans, cache, path);
3519 cache_save_setup(cache, trans, path);
3522 ret = btrfs_run_delayed_refs(trans,
3527 ret = btrfs_write_out_cache(trans, cache, path);
3540 ret = update_block_group_item(trans, path, cache);
3557 ret = update_block_group_item(trans, path, cache);
3560 btrfs_abort_transaction(trans, ret);
3579 btrfs_wait_cache_io(trans, cache, path);
3587 int btrfs_update_block_group(struct btrfs_trans_handle *trans,
3590 struct btrfs_fs_info *info = trans->fs_info;
3664 set_extent_bit(&trans->transaction->pinned_extents,
3669 spin_lock(&trans->transaction->dirty_bgs_lock);
3672 &trans->transaction->dirty_bgs);
3673 trans->delayed_ref_updates++;
3676 spin_unlock(&trans->transaction->dirty_bgs_lock);
3697 btrfs_update_delayed_refs_rsv(trans);
3826 int btrfs_force_chunk_alloc(struct btrfs_trans_handle *trans, u64 type)
3828 u64 alloc_flags = btrfs_get_alloc_profile(trans->fs_info, type);
3830 return btrfs_chunk_alloc(trans, alloc_flags, CHUNK_ALLOC_FORCE);
3833 static struct btrfs_block_group *do_chunk_alloc(struct btrfs_trans_handle *trans, u64 flags)
3844 check_system_chunk(trans, flags);
3846 bg = btrfs_create_chunk(trans, flags);
3852 ret = btrfs_chunk_alloc_add_chunk_item(trans, bg);
3892 const u64 sys_flags = btrfs_system_alloc_profile(trans->fs_info);
3895 sys_bg = btrfs_create_chunk(trans, sys_flags);
3898 btrfs_abort_transaction(trans, ret);
3902 ret = btrfs_chunk_alloc_add_chunk_item(trans, sys_bg);
3904 btrfs_abort_transaction(trans, ret);
3908 ret = btrfs_chunk_alloc_add_chunk_item(trans, bg);
3910 btrfs_abort_transaction(trans, ret);
3914 btrfs_abort_transaction(trans, ret);
3918 btrfs_trans_release_chunk_metadata(trans);
4034 int btrfs_chunk_alloc(struct btrfs_trans_handle *trans, u64 flags,
4037 struct btrfs_fs_info *fs_info = trans->fs_info;
4051 if (trans->allocating_chunk)
4119 trans->allocating_chunk = true;
4140 ret_bg = do_chunk_alloc(trans, flags);
4141 trans->allocating_chunk = false;
4187 static void reserve_chunk_space(struct btrfs_trans_handle *trans,
4191 struct btrfs_fs_info *fs_info = trans->fs_info;
4223 bg = btrfs_create_chunk(trans, flags);
4245 btrfs_chunk_alloc_add_chunk_item(trans, bg);
4254 trans->chunk_bytes_reserved += bytes;
4262 void check_system_chunk(struct btrfs_trans_handle *trans, u64 type)
4264 struct btrfs_fs_info *fs_info = trans->fs_info;
4272 reserve_chunk_space(trans, bytes, type);
4279 * @trans: A transaction handle.
4291 void btrfs_reserve_chunk_metadata(struct btrfs_trans_handle *trans,
4294 struct btrfs_fs_info *fs_info = trans->fs_info;
4303 reserve_chunk_space(trans, bytes, BTRFS_BLOCK_GROUP_SYSTEM);