Lines Matching defs:trans
879 static int remove_block_group_item(struct btrfs_trans_handle *trans,
883 struct btrfs_fs_info *fs_info = trans->fs_info;
893 ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
899 ret = btrfs_del_item(trans, root, path);
903 int btrfs_remove_block_group(struct btrfs_trans_handle *trans,
906 struct btrfs_fs_info *fs_info = trans->fs_info;
964 mutex_lock(&trans->transaction->cache_write_mutex);
969 spin_lock(&trans->transaction->dirty_bgs_lock);
975 spin_unlock(&trans->transaction->dirty_bgs_lock);
976 btrfs_wait_cache_io(trans, block_group, path);
978 spin_lock(&trans->transaction->dirty_bgs_lock);
986 spin_unlock(&trans->transaction->dirty_bgs_lock);
987 mutex_unlock(&trans->transaction->cache_write_mutex);
990 ret = btrfs_orphan_add(trans, BTRFS_I(inode));
1014 ret = btrfs_search_slot(trans, tree_root, &key, path, -1, 1);
1020 ret = btrfs_del_item(trans, tree_root, path);
1083 spin_lock(&trans->transaction->dirty_bgs_lock);
1086 spin_unlock(&trans->transaction->dirty_bgs_lock);
1118 ret = remove_block_group_free_space(trans, block_group);
1122 ret = remove_block_group_item(trans, path, block_group);
1296 static bool clean_pinned_extents(struct btrfs_trans_handle *trans,
1306 if (trans->transaction->list.prev != &fs_info->trans_list) {
1307 prev_trans = list_last_entry(&trans->transaction->list,
1331 ret = clear_extent_bits(&trans->transaction->pinned_extents, start, end,
1349 struct btrfs_trans_handle *trans;
1424 trans = btrfs_start_trans_remove_block_group(fs_info,
1426 if (IS_ERR(trans)) {
1428 ret = PTR_ERR(trans);
1436 if (!clean_pinned_extents(trans, block_group)) {
1492 ret = btrfs_remove_chunk(trans, block_group->start);
1513 &trans->transaction->deleted_bgs);
1518 btrfs_end_transaction(trans);
1528 btrfs_end_transaction(trans);
2086 static int insert_block_group_item(struct btrfs_trans_handle *trans,
2089 struct btrfs_fs_info *fs_info = trans->fs_info;
2105 return btrfs_insert_item(trans, root, &key, &bgi, sizeof(bgi));
2108 void btrfs_create_pending_block_groups(struct btrfs_trans_handle *trans)
2110 struct btrfs_fs_info *fs_info = trans->fs_info;
2114 if (!trans->can_flush_pending_bgs)
2117 while (!list_empty(&trans->new_bgs)) {
2120 block_group = list_first_entry(&trans->new_bgs,
2128 ret = insert_block_group_item(trans, block_group);
2130 btrfs_abort_transaction(trans, ret);
2131 ret = btrfs_finish_chunk_alloc(trans, block_group->start,
2134 btrfs_abort_transaction(trans, ret);
2135 add_block_group_free_space(trans, block_group);
2151 btrfs_trans_release_chunk_metadata(trans);
2154 int btrfs_make_block_group(struct btrfs_trans_handle *trans, u64 bytes_used,
2157 struct btrfs_fs_info *fs_info = trans->fs_info;
2161 btrfs_set_log_full_commit(trans);
2220 list_add_tail(&cache->bg_list, &trans->new_bgs);
2221 trans->delayed_ref_updates++;
2222 btrfs_update_delayed_refs_rsv(trans);
2241 struct btrfs_trans_handle *trans;
2246 trans = btrfs_join_transaction(fs_info->extent_root);
2247 if (IS_ERR(trans))
2248 return PTR_ERR(trans);
2256 if (test_bit(BTRFS_TRANS_DIRTY_BG_RUN, &trans->transaction->flags)) {
2257 u64 transid = trans->transid;
2260 btrfs_end_transaction(trans);
2275 ret = btrfs_chunk_alloc(trans, alloc_flags,
2304 ret = btrfs_chunk_alloc(trans, alloc_flags, CHUNK_ALLOC_FORCE);
2314 check_system_chunk(trans, alloc_flags);
2320 btrfs_end_transaction(trans);
2343 static int update_block_group_item(struct btrfs_trans_handle *trans,
2347 struct btrfs_fs_info *fs_info = trans->fs_info;
2359 ret = btrfs_search_slot(trans, root, &key, path, 0, 1);
2381 struct btrfs_trans_handle *trans,
2405 if (TRANS_ABORTED(trans))
2422 ret = create_free_space_inode(trans, block_group, path);
2434 ret = btrfs_update_inode(trans, root, inode);
2446 btrfs_abort_transaction(trans, ret);
2452 if (block_group->cache_generation == trans->transid &&
2464 ret = btrfs_truncate_free_space_cache(trans, NULL, inode);
2488 if (test_bit(BTRFS_TRANS_CACHE_ENOSPC, &trans->transaction->flags)) {
2511 ret = btrfs_prealloc_file_range_trans(inode, trans, 0, 0, num_pages,
2525 set_bit(BTRFS_TRANS_CACHE_ENOSPC, &trans->transaction->flags);
2534 block_group->cache_generation = trans->transid;
2542 int btrfs_setup_space_cache(struct btrfs_trans_handle *trans)
2544 struct btrfs_fs_info *fs_info = trans->fs_info;
2546 struct btrfs_transaction *cur_trans = trans->transaction;
2561 cache_save_setup(cache, trans, path);
2580 int btrfs_start_dirty_block_groups(struct btrfs_trans_handle *trans)
2582 struct btrfs_fs_info *fs_info = trans->fs_info;
2584 struct btrfs_transaction *cur_trans = trans->transaction;
2602 btrfs_create_pending_block_groups(trans);
2617 mutex_lock(&trans->transaction->cache_write_mutex);
2630 btrfs_wait_cache_io(trans, cache, path);
2649 cache_save_setup(cache, trans, path);
2653 ret = btrfs_write_out_cache(trans, cache, path);
2672 ret = update_block_group_item(trans, path, cache);
2693 btrfs_abort_transaction(trans, ret);
2707 mutex_unlock(&trans->transaction->cache_write_mutex);
2710 mutex_lock(&trans->transaction->cache_write_mutex);
2712 mutex_unlock(&trans->transaction->cache_write_mutex);
2719 ret = btrfs_run_delayed_refs(trans, 0);
2746 int btrfs_write_dirty_block_groups(struct btrfs_trans_handle *trans)
2748 struct btrfs_fs_info *fs_info = trans->fs_info;
2750 struct btrfs_transaction *cur_trans = trans->transaction;
2789 btrfs_wait_cache_io(trans, cache, path);
2802 cache_save_setup(cache, trans, path);
2805 ret = btrfs_run_delayed_refs(trans,
2810 ret = btrfs_write_out_cache(trans, cache, path);
2823 ret = update_block_group_item(trans, path, cache);
2840 ret = update_block_group_item(trans, path, cache);
2843 btrfs_abort_transaction(trans, ret);
2862 btrfs_wait_cache_io(trans, cache, path);
2870 int btrfs_update_block_group(struct btrfs_trans_handle *trans,
2873 struct btrfs_fs_info *info = trans->fs_info;
2942 set_extent_dirty(&trans->transaction->pinned_extents,
2947 spin_lock(&trans->transaction->dirty_bgs_lock);
2950 &trans->transaction->dirty_bgs);
2951 trans->delayed_ref_updates++;
2954 spin_unlock(&trans->transaction->dirty_bgs_lock);
2973 btrfs_update_delayed_refs_rsv(trans);
3090 int btrfs_force_chunk_alloc(struct btrfs_trans_handle *trans, u64 type)
3092 u64 alloc_flags = btrfs_get_alloc_profile(trans->fs_info, type);
3094 return btrfs_chunk_alloc(trans, alloc_flags, CHUNK_ALLOC_FORCE);
3106 int btrfs_chunk_alloc(struct btrfs_trans_handle *trans, u64 flags,
3109 struct btrfs_fs_info *fs_info = trans->fs_info;
3116 if (trans->allocating_chunk)
3161 trans->allocating_chunk = true;
3186 check_system_chunk(trans, flags);
3188 ret = btrfs_alloc_chunk(trans, flags);
3189 trans->allocating_chunk = false;
3221 if (trans->chunk_bytes_reserved >= (u64)SZ_2M)
3222 btrfs_create_pending_block_groups(trans);
3241 void check_system_chunk(struct btrfs_trans_handle *trans, u64 type)
3243 struct btrfs_fs_info *fs_info = trans->fs_info;
3282 ret = btrfs_alloc_chunk(trans, flags);
3290 trans->chunk_bytes_reserved += thresh;