Lines Matching refs:cur_trans

171 	struct btrfs_transaction *cur_trans;  in join_transaction()  local
182 cur_trans = fs_info->running_transaction; in join_transaction()
183 if (cur_trans) { in join_transaction()
184 if (cur_trans->aborted) { in join_transaction()
186 return cur_trans->aborted; in join_transaction()
188 if (btrfs_blocked_trans_types[cur_trans->state] & type) { in join_transaction()
192 atomic_inc(&cur_trans->use_count); in join_transaction()
193 atomic_inc(&cur_trans->num_writers); in join_transaction()
194 extwriter_counter_inc(cur_trans, type); in join_transaction()
213 cur_trans = kmem_cache_alloc(btrfs_transaction_cachep, GFP_NOFS); in join_transaction()
214 if (!cur_trans) in join_transaction()
223 kmem_cache_free(btrfs_transaction_cachep, cur_trans); in join_transaction()
227 kmem_cache_free(btrfs_transaction_cachep, cur_trans); in join_transaction()
231 atomic_set(&cur_trans->num_writers, 1); in join_transaction()
232 extwriter_counter_init(cur_trans, type); in join_transaction()
233 init_waitqueue_head(&cur_trans->writer_wait); in join_transaction()
234 init_waitqueue_head(&cur_trans->commit_wait); in join_transaction()
235 init_waitqueue_head(&cur_trans->pending_wait); in join_transaction()
236 cur_trans->state = TRANS_STATE_RUNNING; in join_transaction()
241 atomic_set(&cur_trans->use_count, 2); in join_transaction()
242 atomic_set(&cur_trans->pending_ordered, 0); in join_transaction()
243 cur_trans->flags = 0; in join_transaction()
244 cur_trans->start_time = get_seconds(); in join_transaction()
246 memset(&cur_trans->delayed_refs, 0, sizeof(cur_trans->delayed_refs)); in join_transaction()
248 cur_trans->delayed_refs.href_root = RB_ROOT; in join_transaction()
249 cur_trans->delayed_refs.dirty_extent_root = RB_ROOT; in join_transaction()
250 atomic_set(&cur_trans->delayed_refs.num_entries, 0); in join_transaction()
265 spin_lock_init(&cur_trans->delayed_refs.lock); in join_transaction()
267 INIT_LIST_HEAD(&cur_trans->pending_snapshots); in join_transaction()
268 INIT_LIST_HEAD(&cur_trans->pending_chunks); in join_transaction()
269 INIT_LIST_HEAD(&cur_trans->switch_commits); in join_transaction()
270 INIT_LIST_HEAD(&cur_trans->dirty_bgs); in join_transaction()
271 INIT_LIST_HEAD(&cur_trans->io_bgs); in join_transaction()
272 INIT_LIST_HEAD(&cur_trans->dropped_roots); in join_transaction()
273 mutex_init(&cur_trans->cache_write_mutex); in join_transaction()
274 cur_trans->num_dirty_bgs = 0; in join_transaction()
275 spin_lock_init(&cur_trans->dirty_bgs_lock); in join_transaction()
276 INIT_LIST_HEAD(&cur_trans->deleted_bgs); in join_transaction()
277 spin_lock_init(&cur_trans->dropped_roots_lock); in join_transaction()
278 list_add_tail(&cur_trans->list, &fs_info->trans_list); in join_transaction()
279 extent_io_tree_init(&cur_trans->dirty_pages, in join_transaction()
282 cur_trans->transid = fs_info->generation; in join_transaction()
283 fs_info->running_transaction = cur_trans; in join_transaction()
284 cur_trans->aborted = 0; in join_transaction()
357 struct btrfs_transaction *cur_trans = trans->transaction; in btrfs_add_dropped_root() local
360 spin_lock(&cur_trans->dropped_roots_lock); in btrfs_add_dropped_root()
361 list_add_tail(&root->root_list, &cur_trans->dropped_roots); in btrfs_add_dropped_root()
362 spin_unlock(&cur_trans->dropped_roots_lock); in btrfs_add_dropped_root()
407 struct btrfs_transaction *cur_trans; in wait_current_trans() local
410 cur_trans = root->fs_info->running_transaction; in wait_current_trans()
411 if (cur_trans && is_transaction_blocked(cur_trans)) { in wait_current_trans()
412 atomic_inc(&cur_trans->use_count); in wait_current_trans()
416 cur_trans->state >= TRANS_STATE_UNBLOCKED || in wait_current_trans()
417 cur_trans->aborted); in wait_current_trans()
418 btrfs_put_transaction(cur_trans); in wait_current_trans()
455 struct btrfs_transaction *cur_trans; in start_transaction() local
540 cur_trans = root->fs_info->running_transaction; in start_transaction()
542 h->transid = cur_trans->transid; in start_transaction()
543 h->transaction = cur_trans; in start_transaction()
553 if (cur_trans->state >= TRANS_STATE_BLOCKED && in start_transaction()
696 struct btrfs_transaction *cur_trans = NULL, *t; in btrfs_wait_for_commit() local
707 cur_trans = t; in btrfs_wait_for_commit()
708 atomic_inc(&cur_trans->use_count); in btrfs_wait_for_commit()
723 if (!cur_trans) { in btrfs_wait_for_commit()
736 cur_trans = t; in btrfs_wait_for_commit()
737 atomic_inc(&cur_trans->use_count); in btrfs_wait_for_commit()
742 if (!cur_trans) in btrfs_wait_for_commit()
746 wait_for_commit(root, cur_trans); in btrfs_wait_for_commit()
747 btrfs_put_transaction(cur_trans); in btrfs_wait_for_commit()
771 struct btrfs_transaction *cur_trans = trans->transaction; in btrfs_should_end_transaction() local
776 if (cur_trans->state >= TRANS_STATE_BLOCKED || in btrfs_should_end_transaction()
777 cur_trans->delayed_refs.flushing) in btrfs_should_end_transaction()
794 struct btrfs_transaction *cur_trans = trans->transaction; in __btrfs_end_transaction() local
838 ACCESS_ONCE(cur_trans->state) == TRANS_STATE_RUNNING) { in __btrfs_end_transaction()
840 if (cur_trans->state == TRANS_STATE_RUNNING) in __btrfs_end_transaction()
841 cur_trans->state = TRANS_STATE_BLOCKED; in __btrfs_end_transaction()
845 if (lock && ACCESS_ONCE(cur_trans->state) == TRANS_STATE_BLOCKED) { in __btrfs_end_transaction()
855 WARN_ON(cur_trans != info->running_transaction); in __btrfs_end_transaction()
856 WARN_ON(atomic_read(&cur_trans->num_writers) < 1); in __btrfs_end_transaction()
857 atomic_dec(&cur_trans->num_writers); in __btrfs_end_transaction()
858 extwriter_counter_dec(cur_trans, trans->type); in __btrfs_end_transaction()
864 if (waitqueue_active(&cur_trans->writer_wait)) in __btrfs_end_transaction()
865 wake_up(&cur_trans->writer_wait); in __btrfs_end_transaction()
866 btrfs_put_transaction(cur_trans); in __btrfs_end_transaction()
1694 struct btrfs_transaction *cur_trans; in btrfs_commit_transaction_async() local
1710 cur_trans = trans->transaction; in btrfs_commit_transaction_async()
1711 atomic_inc(&cur_trans->use_count); in btrfs_commit_transaction_async()
1726 wait_current_trans_commit_start_and_unblock(root, cur_trans); in btrfs_commit_transaction_async()
1728 wait_current_trans_commit_start(root, cur_trans); in btrfs_commit_transaction_async()
1733 btrfs_put_transaction(cur_trans); in btrfs_commit_transaction_async()
1741 struct btrfs_transaction *cur_trans = trans->transaction; in cleanup_transaction() local
1755 BUG_ON(list_empty(&cur_trans->list)); in cleanup_transaction()
1757 list_del_init(&cur_trans->list); in cleanup_transaction()
1758 if (cur_trans == root->fs_info->running_transaction) { in cleanup_transaction()
1759 cur_trans->state = TRANS_STATE_COMMIT_DOING; in cleanup_transaction()
1761 wait_event(cur_trans->writer_wait, in cleanup_transaction()
1762 atomic_read(&cur_trans->num_writers) == 1); in cleanup_transaction()
1771 if (cur_trans == root->fs_info->running_transaction) in cleanup_transaction()
1777 btrfs_put_transaction(cur_trans); in cleanup_transaction()
1778 btrfs_put_transaction(cur_trans); in cleanup_transaction()
1803 btrfs_wait_pending_ordered(struct btrfs_transaction *cur_trans) in btrfs_wait_pending_ordered() argument
1805 wait_event(cur_trans->pending_wait, in btrfs_wait_pending_ordered()
1806 atomic_read(&cur_trans->pending_ordered) == 0); in btrfs_wait_pending_ordered()
1812 struct btrfs_transaction *cur_trans = trans->transaction; in btrfs_commit_transaction() local
1818 if (unlikely(ACCESS_ONCE(cur_trans->aborted))) { in btrfs_commit_transaction()
1819 ret = cur_trans->aborted; in btrfs_commit_transaction()
1836 cur_trans = trans->transaction; in btrfs_commit_transaction()
1842 cur_trans->delayed_refs.flushing = 1; in btrfs_commit_transaction()
1854 if (!test_bit(BTRFS_TRANS_DIRTY_BG_RUN, &cur_trans->flags)) { in btrfs_commit_transaction()
1872 &cur_trans->flags)) in btrfs_commit_transaction()
1885 if (cur_trans->state >= TRANS_STATE_COMMIT_START) { in btrfs_commit_transaction()
1887 atomic_inc(&cur_trans->use_count); in btrfs_commit_transaction()
1890 wait_for_commit(root, cur_trans); in btrfs_commit_transaction()
1892 if (unlikely(cur_trans->aborted)) in btrfs_commit_transaction()
1893 ret = cur_trans->aborted; in btrfs_commit_transaction()
1895 btrfs_put_transaction(cur_trans); in btrfs_commit_transaction()
1900 cur_trans->state = TRANS_STATE_COMMIT_START; in btrfs_commit_transaction()
1903 if (cur_trans->list.prev != &root->fs_info->trans_list) { in btrfs_commit_transaction()
1904 prev_trans = list_entry(cur_trans->list.prev, in btrfs_commit_transaction()
1923 extwriter_counter_dec(cur_trans, trans->type); in btrfs_commit_transaction()
1933 wait_event(cur_trans->writer_wait, in btrfs_commit_transaction()
1934 extwriter_counter_read(cur_trans) == 0); in btrfs_commit_transaction()
1943 btrfs_wait_pending_ordered(cur_trans); in btrfs_commit_transaction()
1952 cur_trans->state = TRANS_STATE_COMMIT_DOING; in btrfs_commit_transaction()
1954 wait_event(cur_trans->writer_wait, in btrfs_commit_transaction()
1955 atomic_read(&cur_trans->num_writers) == 1); in btrfs_commit_transaction()
1958 if (unlikely(ACCESS_ONCE(cur_trans->aborted))) { in btrfs_commit_transaction()
1959 ret = cur_trans->aborted; in btrfs_commit_transaction()
2015 WARN_ON(cur_trans != trans->transaction); in btrfs_commit_transaction()
2072 if (unlikely(ACCESS_ONCE(cur_trans->aborted))) { in btrfs_commit_transaction()
2073 ret = cur_trans->aborted; in btrfs_commit_transaction()
2081 cur_trans = root->fs_info->running_transaction; in btrfs_commit_transaction()
2086 &cur_trans->switch_commits); in btrfs_commit_transaction()
2091 &cur_trans->switch_commits); in btrfs_commit_transaction()
2093 switch_commit_roots(cur_trans, root->fs_info); in btrfs_commit_transaction()
2096 ASSERT(list_empty(&cur_trans->dirty_bgs)); in btrfs_commit_transaction()
2097 ASSERT(list_empty(&cur_trans->io_bgs)); in btrfs_commit_transaction()
2106 btrfs_update_commit_device_bytes_used(root, cur_trans); in btrfs_commit_transaction()
2114 cur_trans->state = TRANS_STATE_UNBLOCKED; in btrfs_commit_transaction()
2143 if (test_bit(BTRFS_TRANS_HAVE_FREE_BGS, &cur_trans->flags)) in btrfs_commit_transaction()
2146 root->fs_info->last_trans_committed = cur_trans->transid; in btrfs_commit_transaction()
2151 cur_trans->state = TRANS_STATE_COMPLETED; in btrfs_commit_transaction()
2152 wake_up(&cur_trans->commit_wait); in btrfs_commit_transaction()
2155 list_del_init(&cur_trans->list); in btrfs_commit_transaction()
2158 btrfs_put_transaction(cur_trans); in btrfs_commit_transaction()
2159 btrfs_put_transaction(cur_trans); in btrfs_commit_transaction()