Lines Matching refs:cur_trans

160 	struct btrfs_transaction *cur_trans;  in join_transaction()  local
170 cur_trans = fs_info->running_transaction; in join_transaction()
171 if (cur_trans) { in join_transaction()
172 if (cur_trans->aborted) { in join_transaction()
174 return cur_trans->aborted; in join_transaction()
176 if (btrfs_blocked_trans_types[cur_trans->state] & type) { in join_transaction()
180 refcount_inc(&cur_trans->use_count); in join_transaction()
181 atomic_inc(&cur_trans->num_writers); in join_transaction()
182 extwriter_counter_inc(cur_trans, type); in join_transaction()
201 cur_trans = kmalloc(sizeof(*cur_trans), GFP_NOFS); in join_transaction()
202 if (!cur_trans) in join_transaction()
211 kfree(cur_trans); in join_transaction()
215 kfree(cur_trans); in join_transaction()
219 cur_trans->fs_info = fs_info; in join_transaction()
220 atomic_set(&cur_trans->num_writers, 1); in join_transaction()
221 extwriter_counter_init(cur_trans, type); in join_transaction()
222 init_waitqueue_head(&cur_trans->writer_wait); in join_transaction()
223 init_waitqueue_head(&cur_trans->commit_wait); in join_transaction()
224 cur_trans->state = TRANS_STATE_RUNNING; in join_transaction()
229 refcount_set(&cur_trans->use_count, 2); in join_transaction()
230 cur_trans->flags = 0; in join_transaction()
231 cur_trans->start_time = ktime_get_seconds(); in join_transaction()
233 memset(&cur_trans->delayed_refs, 0, sizeof(cur_trans->delayed_refs)); in join_transaction()
235 cur_trans->delayed_refs.href_root = RB_ROOT_CACHED; in join_transaction()
236 cur_trans->delayed_refs.dirty_extent_root = RB_ROOT; in join_transaction()
237 atomic_set(&cur_trans->delayed_refs.num_entries, 0); in join_transaction()
250 spin_lock_init(&cur_trans->delayed_refs.lock); in join_transaction()
252 INIT_LIST_HEAD(&cur_trans->pending_snapshots); in join_transaction()
253 INIT_LIST_HEAD(&cur_trans->dev_update_list); in join_transaction()
254 INIT_LIST_HEAD(&cur_trans->switch_commits); in join_transaction()
255 INIT_LIST_HEAD(&cur_trans->dirty_bgs); in join_transaction()
256 INIT_LIST_HEAD(&cur_trans->io_bgs); in join_transaction()
257 INIT_LIST_HEAD(&cur_trans->dropped_roots); in join_transaction()
258 mutex_init(&cur_trans->cache_write_mutex); in join_transaction()
259 spin_lock_init(&cur_trans->dirty_bgs_lock); in join_transaction()
260 INIT_LIST_HEAD(&cur_trans->deleted_bgs); in join_transaction()
261 spin_lock_init(&cur_trans->dropped_roots_lock); in join_transaction()
262 list_add_tail(&cur_trans->list, &fs_info->trans_list); in join_transaction()
263 extent_io_tree_init(fs_info, &cur_trans->dirty_pages, in join_transaction()
266 cur_trans->transid = fs_info->generation; in join_transaction()
267 fs_info->running_transaction = cur_trans; in join_transaction()
268 cur_trans->aborted = 0; in join_transaction()
345 struct btrfs_transaction *cur_trans = trans->transaction; in btrfs_add_dropped_root() local
348 spin_lock(&cur_trans->dropped_roots_lock); in btrfs_add_dropped_root()
349 list_add_tail(&root->root_list, &cur_trans->dropped_roots); in btrfs_add_dropped_root()
350 spin_unlock(&cur_trans->dropped_roots_lock); in btrfs_add_dropped_root()
397 struct btrfs_transaction *cur_trans; in wait_current_trans() local
400 cur_trans = fs_info->running_transaction; in wait_current_trans()
401 if (cur_trans && is_transaction_blocked(cur_trans)) { in wait_current_trans()
402 refcount_inc(&cur_trans->use_count); in wait_current_trans()
406 cur_trans->state >= TRANS_STATE_UNBLOCKED || in wait_current_trans()
407 cur_trans->aborted); in wait_current_trans()
408 btrfs_put_transaction(cur_trans); in wait_current_trans()
446 struct btrfs_transaction *cur_trans; in start_transaction() local
560 cur_trans = fs_info->running_transaction; in start_transaction()
562 h->transid = cur_trans->transid; in start_transaction()
563 h->transaction = cur_trans; in start_transaction()
573 if (cur_trans->state >= TRANS_STATE_BLOCKED && in start_transaction()
725 struct btrfs_transaction *cur_trans = NULL, *t; in btrfs_wait_for_commit() local
736 cur_trans = t; in btrfs_wait_for_commit()
737 refcount_inc(&cur_trans->use_count); in btrfs_wait_for_commit()
752 if (!cur_trans) { in btrfs_wait_for_commit()
765 cur_trans = t; in btrfs_wait_for_commit()
766 refcount_inc(&cur_trans->use_count); in btrfs_wait_for_commit()
771 if (!cur_trans) in btrfs_wait_for_commit()
775 wait_for_commit(cur_trans); in btrfs_wait_for_commit()
776 btrfs_put_transaction(cur_trans); in btrfs_wait_for_commit()
798 struct btrfs_transaction *cur_trans = trans->transaction; in btrfs_should_end_transaction() local
801 if (cur_trans->state >= TRANS_STATE_BLOCKED || in btrfs_should_end_transaction()
802 cur_trans->delayed_refs.flushing) in btrfs_should_end_transaction()
833 struct btrfs_transaction *cur_trans = trans->transaction; in __btrfs_end_transaction() local
850 if (lock && READ_ONCE(cur_trans->state) == TRANS_STATE_BLOCKED) { in __btrfs_end_transaction()
860 WARN_ON(cur_trans != info->running_transaction); in __btrfs_end_transaction()
861 WARN_ON(atomic_read(&cur_trans->num_writers) < 1); in __btrfs_end_transaction()
862 atomic_dec(&cur_trans->num_writers); in __btrfs_end_transaction()
863 extwriter_counter_dec(cur_trans, trans->type); in __btrfs_end_transaction()
865 cond_wake_up(&cur_trans->writer_wait); in __btrfs_end_transaction()
866 btrfs_put_transaction(cur_trans); in __btrfs_end_transaction()
1778 struct btrfs_transaction *cur_trans; in btrfs_commit_transaction_async() local
1793 cur_trans = trans->transaction; in btrfs_commit_transaction_async()
1794 refcount_inc(&cur_trans->use_count); in btrfs_commit_transaction_async()
1809 wait_current_trans_commit_start_and_unblock(fs_info, cur_trans); in btrfs_commit_transaction_async()
1811 wait_current_trans_commit_start(fs_info, cur_trans); in btrfs_commit_transaction_async()
1816 btrfs_put_transaction(cur_trans); in btrfs_commit_transaction_async()
1824 struct btrfs_transaction *cur_trans = trans->transaction; in cleanup_transaction() local
1837 BUG_ON(list_empty(&cur_trans->list)); in cleanup_transaction()
1839 list_del_init(&cur_trans->list); in cleanup_transaction()
1840 if (cur_trans == fs_info->running_transaction) { in cleanup_transaction()
1841 cur_trans->state = TRANS_STATE_COMMIT_DOING; in cleanup_transaction()
1843 wait_event(cur_trans->writer_wait, in cleanup_transaction()
1844 atomic_read(&cur_trans->num_writers) == 1); in cleanup_transaction()
1853 if (cur_trans == fs_info->running_transaction) in cleanup_transaction()
1859 btrfs_put_transaction(cur_trans); in cleanup_transaction()
1860 btrfs_put_transaction(cur_trans); in cleanup_transaction()
1948 struct btrfs_transaction *cur_trans = trans->transaction; in btrfs_commit_transaction() local
1953 if (unlikely(READ_ONCE(cur_trans->aborted))) { in btrfs_commit_transaction()
1954 ret = cur_trans->aborted; in btrfs_commit_transaction()
1971 cur_trans = trans->transaction; in btrfs_commit_transaction()
1977 cur_trans->delayed_refs.flushing = 1; in btrfs_commit_transaction()
1988 if (!test_bit(BTRFS_TRANS_DIRTY_BG_RUN, &cur_trans->flags)) { in btrfs_commit_transaction()
2006 &cur_trans->flags)) in btrfs_commit_transaction()
2020 if (cur_trans->state >= TRANS_STATE_COMMIT_START) { in btrfs_commit_transaction()
2022 refcount_inc(&cur_trans->use_count); in btrfs_commit_transaction()
2025 wait_for_commit(cur_trans); in btrfs_commit_transaction()
2027 if (unlikely(cur_trans->aborted)) in btrfs_commit_transaction()
2028 ret = cur_trans->aborted; in btrfs_commit_transaction()
2030 btrfs_put_transaction(cur_trans); in btrfs_commit_transaction()
2035 cur_trans->state = TRANS_STATE_COMMIT_START; in btrfs_commit_transaction()
2038 if (cur_trans->list.prev != &fs_info->trans_list) { in btrfs_commit_transaction()
2039 prev_trans = list_entry(cur_trans->list.prev, in btrfs_commit_transaction()
2068 extwriter_counter_dec(cur_trans, trans->type); in btrfs_commit_transaction()
2078 wait_event(cur_trans->writer_wait, in btrfs_commit_transaction()
2079 extwriter_counter_read(cur_trans) == 0); in btrfs_commit_transaction()
2095 cur_trans->state = TRANS_STATE_COMMIT_DOING; in btrfs_commit_transaction()
2097 wait_event(cur_trans->writer_wait, in btrfs_commit_transaction()
2098 atomic_read(&cur_trans->num_writers) == 1); in btrfs_commit_transaction()
2101 if (unlikely(READ_ONCE(cur_trans->aborted))) { in btrfs_commit_transaction()
2102 ret = cur_trans->aborted; in btrfs_commit_transaction()
2151 WARN_ON(cur_trans != trans->transaction); in btrfs_commit_transaction()
2219 if (unlikely(READ_ONCE(cur_trans->aborted))) { in btrfs_commit_transaction()
2220 ret = cur_trans->aborted; in btrfs_commit_transaction()
2228 cur_trans = fs_info->running_transaction; in btrfs_commit_transaction()
2233 &cur_trans->switch_commits); in btrfs_commit_transaction()
2238 &cur_trans->switch_commits); in btrfs_commit_transaction()
2240 switch_commit_roots(cur_trans); in btrfs_commit_transaction()
2242 ASSERT(list_empty(&cur_trans->dirty_bgs)); in btrfs_commit_transaction()
2243 ASSERT(list_empty(&cur_trans->io_bgs)); in btrfs_commit_transaction()
2251 btrfs_commit_device_sizes(cur_trans); in btrfs_commit_transaction()
2259 cur_trans->state = TRANS_STATE_UNBLOCKED; in btrfs_commit_transaction()
2285 if (test_bit(BTRFS_TRANS_HAVE_FREE_BGS, &cur_trans->flags)) in btrfs_commit_transaction()
2288 fs_info->last_trans_committed = cur_trans->transid; in btrfs_commit_transaction()
2293 cur_trans->state = TRANS_STATE_COMPLETED; in btrfs_commit_transaction()
2294 wake_up(&cur_trans->commit_wait); in btrfs_commit_transaction()
2298 list_del_init(&cur_trans->list); in btrfs_commit_transaction()
2301 btrfs_put_transaction(cur_trans); in btrfs_commit_transaction()
2302 btrfs_put_transaction(cur_trans); in btrfs_commit_transaction()