Lines Matching refs:cur_trans
153 struct btrfs_transaction *cur_trans; in join_transaction() local
164 cur_trans = fs_info->running_transaction; in join_transaction()
165 if (cur_trans) { in join_transaction()
166 if (cur_trans->aborted) { in join_transaction()
168 return cur_trans->aborted; in join_transaction()
170 if (btrfs_blocked_trans_types[cur_trans->state] & type) { in join_transaction()
174 atomic_inc(&cur_trans->use_count); in join_transaction()
175 atomic_inc(&cur_trans->num_writers); in join_transaction()
176 extwriter_counter_inc(cur_trans, type); in join_transaction()
195 cur_trans = kmem_cache_alloc(btrfs_transaction_cachep, GFP_NOFS); in join_transaction()
196 if (!cur_trans) in join_transaction()
205 kmem_cache_free(btrfs_transaction_cachep, cur_trans); in join_transaction()
209 kmem_cache_free(btrfs_transaction_cachep, cur_trans); in join_transaction()
213 atomic_set(&cur_trans->num_writers, 1); in join_transaction()
214 extwriter_counter_init(cur_trans, type); in join_transaction()
215 init_waitqueue_head(&cur_trans->writer_wait); in join_transaction()
216 init_waitqueue_head(&cur_trans->commit_wait); in join_transaction()
217 cur_trans->state = TRANS_STATE_RUNNING; in join_transaction()
222 atomic_set(&cur_trans->use_count, 2); in join_transaction()
223 cur_trans->have_free_bgs = 0; in join_transaction()
224 cur_trans->start_time = get_seconds(); in join_transaction()
225 cur_trans->dirty_bg_run = 0; in join_transaction()
227 cur_trans->delayed_refs.href_root = RB_ROOT; in join_transaction()
228 atomic_set(&cur_trans->delayed_refs.num_entries, 0); in join_transaction()
229 cur_trans->delayed_refs.num_heads_ready = 0; in join_transaction()
230 cur_trans->delayed_refs.pending_csums = 0; in join_transaction()
231 cur_trans->delayed_refs.num_heads = 0; in join_transaction()
232 cur_trans->delayed_refs.flushing = 0; in join_transaction()
233 cur_trans->delayed_refs.run_delayed_start = 0; in join_transaction()
248 spin_lock_init(&cur_trans->delayed_refs.lock); in join_transaction()
250 INIT_LIST_HEAD(&cur_trans->pending_snapshots); in join_transaction()
251 INIT_LIST_HEAD(&cur_trans->pending_chunks); in join_transaction()
252 INIT_LIST_HEAD(&cur_trans->switch_commits); in join_transaction()
253 INIT_LIST_HEAD(&cur_trans->pending_ordered); in join_transaction()
254 INIT_LIST_HEAD(&cur_trans->dirty_bgs); in join_transaction()
255 INIT_LIST_HEAD(&cur_trans->io_bgs); in join_transaction()
256 mutex_init(&cur_trans->cache_write_mutex); in join_transaction()
257 cur_trans->num_dirty_bgs = 0; in join_transaction()
258 spin_lock_init(&cur_trans->dirty_bgs_lock); in join_transaction()
259 list_add_tail(&cur_trans->list, &fs_info->trans_list); in join_transaction()
260 extent_io_tree_init(&cur_trans->dirty_pages, in join_transaction()
263 cur_trans->transid = fs_info->generation; in join_transaction()
264 fs_info->running_transaction = cur_trans; in join_transaction()
265 cur_trans->aborted = 0; in join_transaction()
370 struct btrfs_transaction *cur_trans; in wait_current_trans() local
373 cur_trans = root->fs_info->running_transaction; in wait_current_trans()
374 if (cur_trans && is_transaction_blocked(cur_trans)) { in wait_current_trans()
375 atomic_inc(&cur_trans->use_count); in wait_current_trans()
379 cur_trans->state >= TRANS_STATE_UNBLOCKED || in wait_current_trans()
380 cur_trans->aborted); in wait_current_trans()
381 btrfs_put_transaction(cur_trans); in wait_current_trans()
418 struct btrfs_transaction *cur_trans; in start_transaction() local
506 cur_trans = root->fs_info->running_transaction; in start_transaction()
508 h->transid = cur_trans->transid; in start_transaction()
509 h->transaction = cur_trans; in start_transaction()
530 if (cur_trans->state >= TRANS_STATE_BLOCKED && in start_transaction()
642 struct btrfs_transaction *cur_trans = NULL, *t; in btrfs_wait_for_commit() local
653 cur_trans = t; in btrfs_wait_for_commit()
654 atomic_inc(&cur_trans->use_count); in btrfs_wait_for_commit()
669 if (!cur_trans) { in btrfs_wait_for_commit()
682 cur_trans = t; in btrfs_wait_for_commit()
683 atomic_inc(&cur_trans->use_count); in btrfs_wait_for_commit()
688 if (!cur_trans) in btrfs_wait_for_commit()
692 wait_for_commit(root, cur_trans); in btrfs_wait_for_commit()
693 btrfs_put_transaction(cur_trans); in btrfs_wait_for_commit()
717 struct btrfs_transaction *cur_trans = trans->transaction; in btrfs_should_end_transaction() local
722 if (cur_trans->state >= TRANS_STATE_BLOCKED || in btrfs_should_end_transaction()
723 cur_trans->delayed_refs.flushing) in btrfs_should_end_transaction()
740 struct btrfs_transaction *cur_trans = trans->transaction; in __btrfs_end_transaction() local
761 list_splice_init(&trans->ordered, &cur_trans->pending_ordered); in __btrfs_end_transaction()
797 ACCESS_ONCE(cur_trans->state) == TRANS_STATE_RUNNING) { in __btrfs_end_transaction()
799 if (cur_trans->state == TRANS_STATE_RUNNING) in __btrfs_end_transaction()
800 cur_trans->state = TRANS_STATE_BLOCKED; in __btrfs_end_transaction()
804 if (lock && ACCESS_ONCE(cur_trans->state) == TRANS_STATE_BLOCKED) { in __btrfs_end_transaction()
814 WARN_ON(cur_trans != info->running_transaction); in __btrfs_end_transaction()
815 WARN_ON(atomic_read(&cur_trans->num_writers) < 1); in __btrfs_end_transaction()
816 atomic_dec(&cur_trans->num_writers); in __btrfs_end_transaction()
817 extwriter_counter_dec(cur_trans, trans->type); in __btrfs_end_transaction()
820 if (waitqueue_active(&cur_trans->writer_wait)) in __btrfs_end_transaction()
821 wake_up(&cur_trans->writer_wait); in __btrfs_end_transaction()
822 btrfs_put_transaction(cur_trans); in __btrfs_end_transaction()
1638 struct btrfs_transaction *cur_trans; in btrfs_commit_transaction_async() local
1654 cur_trans = trans->transaction; in btrfs_commit_transaction_async()
1655 atomic_inc(&cur_trans->use_count); in btrfs_commit_transaction_async()
1672 wait_current_trans_commit_start_and_unblock(root, cur_trans); in btrfs_commit_transaction_async()
1674 wait_current_trans_commit_start(root, cur_trans); in btrfs_commit_transaction_async()
1679 btrfs_put_transaction(cur_trans); in btrfs_commit_transaction_async()
1687 struct btrfs_transaction *cur_trans = trans->transaction; in cleanup_transaction() local
1701 BUG_ON(list_empty(&cur_trans->list)); in cleanup_transaction()
1703 list_del_init(&cur_trans->list); in cleanup_transaction()
1704 if (cur_trans == root->fs_info->running_transaction) { in cleanup_transaction()
1705 cur_trans->state = TRANS_STATE_COMMIT_DOING; in cleanup_transaction()
1707 wait_event(cur_trans->writer_wait, in cleanup_transaction()
1708 atomic_read(&cur_trans->num_writers) == 1); in cleanup_transaction()
1717 if (cur_trans == root->fs_info->running_transaction) in cleanup_transaction()
1723 btrfs_put_transaction(cur_trans); in cleanup_transaction()
1724 btrfs_put_transaction(cur_trans); in cleanup_transaction()
1749 btrfs_wait_pending_ordered(struct btrfs_transaction *cur_trans, in btrfs_wait_pending_ordered() argument
1755 while (!list_empty(&cur_trans->pending_ordered)) { in btrfs_wait_pending_ordered()
1756 ordered = list_first_entry(&cur_trans->pending_ordered, in btrfs_wait_pending_ordered()
1773 struct btrfs_transaction *cur_trans = trans->transaction; in btrfs_commit_transaction() local
1779 if (unlikely(ACCESS_ONCE(cur_trans->aborted))) { in btrfs_commit_transaction()
1780 ret = cur_trans->aborted; in btrfs_commit_transaction()
1801 cur_trans = trans->transaction; in btrfs_commit_transaction()
1807 cur_trans->delayed_refs.flushing = 1; in btrfs_commit_transaction()
1819 if (!cur_trans->dirty_bg_run) { in btrfs_commit_transaction()
1836 if (!cur_trans->dirty_bg_run) { in btrfs_commit_transaction()
1838 cur_trans->dirty_bg_run = 1; in btrfs_commit_transaction()
1851 list_splice_init(&trans->ordered, &cur_trans->pending_ordered); in btrfs_commit_transaction()
1852 if (cur_trans->state >= TRANS_STATE_COMMIT_START) { in btrfs_commit_transaction()
1854 atomic_inc(&cur_trans->use_count); in btrfs_commit_transaction()
1857 wait_for_commit(root, cur_trans); in btrfs_commit_transaction()
1859 if (unlikely(cur_trans->aborted)) in btrfs_commit_transaction()
1860 ret = cur_trans->aborted; in btrfs_commit_transaction()
1862 btrfs_put_transaction(cur_trans); in btrfs_commit_transaction()
1867 cur_trans->state = TRANS_STATE_COMMIT_START; in btrfs_commit_transaction()
1870 if (cur_trans->list.prev != &root->fs_info->trans_list) { in btrfs_commit_transaction()
1871 prev_trans = list_entry(cur_trans->list.prev, in btrfs_commit_transaction()
1890 extwriter_counter_dec(cur_trans, trans->type); in btrfs_commit_transaction()
1900 wait_event(cur_trans->writer_wait, in btrfs_commit_transaction()
1901 extwriter_counter_read(cur_trans) == 0); in btrfs_commit_transaction()
1910 btrfs_wait_pending_ordered(cur_trans, root->fs_info); in btrfs_commit_transaction()
1919 cur_trans->state = TRANS_STATE_COMMIT_DOING; in btrfs_commit_transaction()
1921 wait_event(cur_trans->writer_wait, in btrfs_commit_transaction()
1922 atomic_read(&cur_trans->num_writers) == 1); in btrfs_commit_transaction()
1925 if (unlikely(ACCESS_ONCE(cur_trans->aborted))) { in btrfs_commit_transaction()
1926 ret = cur_trans->aborted; in btrfs_commit_transaction()
1975 WARN_ON(cur_trans != trans->transaction); in btrfs_commit_transaction()
2021 if (unlikely(ACCESS_ONCE(cur_trans->aborted))) { in btrfs_commit_transaction()
2022 ret = cur_trans->aborted; in btrfs_commit_transaction()
2030 cur_trans = root->fs_info->running_transaction; in btrfs_commit_transaction()
2035 &cur_trans->switch_commits); in btrfs_commit_transaction()
2040 &cur_trans->switch_commits); in btrfs_commit_transaction()
2042 switch_commit_roots(cur_trans, root->fs_info); in btrfs_commit_transaction()
2045 ASSERT(list_empty(&cur_trans->dirty_bgs)); in btrfs_commit_transaction()
2046 ASSERT(list_empty(&cur_trans->io_bgs)); in btrfs_commit_transaction()
2055 btrfs_update_commit_device_bytes_used(root, cur_trans); in btrfs_commit_transaction()
2061 cur_trans->state = TRANS_STATE_UNBLOCKED; in btrfs_commit_transaction()
2090 if (cur_trans->have_free_bgs) in btrfs_commit_transaction()
2093 root->fs_info->last_trans_committed = cur_trans->transid; in btrfs_commit_transaction()
2098 cur_trans->state = TRANS_STATE_COMPLETED; in btrfs_commit_transaction()
2099 wake_up(&cur_trans->commit_wait); in btrfs_commit_transaction()
2102 list_del_init(&cur_trans->list); in btrfs_commit_transaction()
2105 btrfs_put_transaction(cur_trans); in btrfs_commit_transaction()
2106 btrfs_put_transaction(cur_trans); in btrfs_commit_transaction()