Lines Matching refs:transaction

56 void jbd2_journal_free_transaction(transaction_t *transaction)  in jbd2_journal_free_transaction()  argument
58 if (unlikely(ZERO_OR_NULL_PTR(transaction))) in jbd2_journal_free_transaction()
60 kmem_cache_free(transaction_cache, transaction); in jbd2_journal_free_transaction()
79 jbd2_get_transaction(journal_t *journal, transaction_t *transaction) in jbd2_get_transaction() argument
81 transaction->t_journal = journal; in jbd2_get_transaction()
82 transaction->t_state = T_RUNNING; in jbd2_get_transaction()
83 transaction->t_start_time = ktime_get(); in jbd2_get_transaction()
84 transaction->t_tid = journal->j_transaction_sequence++; in jbd2_get_transaction()
85 transaction->t_expires = jiffies + journal->j_commit_interval; in jbd2_get_transaction()
86 spin_lock_init(&transaction->t_handle_lock); in jbd2_get_transaction()
87 atomic_set(&transaction->t_updates, 0); in jbd2_get_transaction()
88 atomic_set(&transaction->t_outstanding_credits, in jbd2_get_transaction()
90 atomic_set(&transaction->t_handle_count, 0); in jbd2_get_transaction()
91 INIT_LIST_HEAD(&transaction->t_inode_list); in jbd2_get_transaction()
92 INIT_LIST_HEAD(&transaction->t_private_list); in jbd2_get_transaction()
95 journal->j_commit_timer.expires = round_jiffies_up(transaction->t_expires); in jbd2_get_transaction()
99 journal->j_running_transaction = transaction; in jbd2_get_transaction()
100 transaction->t_max_wait = 0; in jbd2_get_transaction()
101 transaction->t_start = jiffies; in jbd2_get_transaction()
102 transaction->t_requested = 0; in jbd2_get_transaction()
104 return transaction; in jbd2_get_transaction()
125 static inline void update_t_max_wait(transaction_t *transaction, in update_t_max_wait() argument
130 time_after(transaction->t_start, ts)) { in update_t_max_wait()
131 ts = jbd2_time_diff(ts, transaction->t_start); in update_t_max_wait()
132 spin_lock(&transaction->t_handle_lock); in update_t_max_wait()
133 if (ts > transaction->t_max_wait) in update_t_max_wait()
134 transaction->t_max_wait = ts; in update_t_max_wait()
135 spin_unlock(&transaction->t_handle_lock); in update_t_max_wait()
274 transaction_t *transaction, *new_transaction = NULL; in start_this_handle() local
353 transaction = journal->j_running_transaction; in start_this_handle()
372 update_t_max_wait(transaction, ts); in start_this_handle()
373 handle->h_transaction = transaction; in start_this_handle()
376 atomic_inc(&transaction->t_updates); in start_this_handle()
377 atomic_inc(&transaction->t_handle_count); in start_this_handle()
380 atomic_read(&transaction->t_outstanding_credits), in start_this_handle()
565 transaction_t *transaction = handle->h_transaction; in jbd2_journal_extend() local
572 journal = transaction->t_journal; in jbd2_journal_extend()
579 if (transaction->t_state != T_RUNNING) { in jbd2_journal_extend()
585 spin_lock(&transaction->t_handle_lock); in jbd2_journal_extend()
587 &transaction->t_outstanding_credits); in jbd2_journal_extend()
592 atomic_sub(nblocks, &transaction->t_outstanding_credits); in jbd2_journal_extend()
600 atomic_sub(nblocks, &transaction->t_outstanding_credits); in jbd2_journal_extend()
605 transaction->t_tid, in jbd2_journal_extend()
616 spin_unlock(&transaction->t_handle_lock); in jbd2_journal_extend()
641 transaction_t *transaction = handle->h_transaction; in jbd2__journal_restart() local
650 journal = transaction->t_journal; in jbd2__journal_restart()
656 J_ASSERT(atomic_read(&transaction->t_updates) > 0); in jbd2__journal_restart()
660 spin_lock(&transaction->t_handle_lock); in jbd2__journal_restart()
662 &transaction->t_outstanding_credits); in jbd2__journal_restart()
667 if (atomic_dec_and_test(&transaction->t_updates)) in jbd2__journal_restart()
669 tid = transaction->t_tid; in jbd2__journal_restart()
670 spin_unlock(&transaction->t_handle_lock); in jbd2__journal_restart()
729 transaction_t *transaction = journal->j_running_transaction; in jbd2_journal_lock_updates() local
731 if (!transaction) in jbd2_journal_lock_updates()
734 spin_lock(&transaction->t_handle_lock); in jbd2_journal_lock_updates()
737 if (!atomic_read(&transaction->t_updates)) { in jbd2_journal_lock_updates()
738 spin_unlock(&transaction->t_handle_lock); in jbd2_journal_lock_updates()
742 spin_unlock(&transaction->t_handle_lock); in jbd2_journal_lock_updates()
826 transaction_t *transaction = handle->h_transaction; in do_get_write_access() local
834 journal = transaction->t_journal; in do_get_write_access()
874 jh->b_transaction == transaction || in do_get_write_access()
879 transaction); in do_get_write_access()
905 if (jh->b_transaction == transaction || in do_get_write_access()
906 jh->b_next_transaction == transaction) in do_get_write_access()
931 __jbd2_journal_file_buffer(jh, transaction, BJ_Reserved); in do_get_write_access()
997 jh->b_next_transaction = transaction; in do_get_write_access()
1119 transaction_t *transaction = handle->h_transaction; in jbd2_journal_get_create_access() local
1128 journal = transaction->t_journal; in jbd2_journal_get_create_access()
1140 J_ASSERT_JH(jh, (jh->b_transaction == transaction || in jbd2_journal_get_create_access()
1163 __jbd2_journal_file_buffer(jh, transaction, BJ_Reserved); in jbd2_journal_get_create_access()
1171 jh->b_next_transaction = transaction; in jbd2_journal_get_create_access()
1330 transaction_t *transaction = handle->h_transaction; in jbd2_journal_dirty_metadata() local
1352 if (jh->b_transaction != transaction && in jbd2_journal_dirty_metadata()
1353 jh->b_next_transaction != transaction) { in jbd2_journal_dirty_metadata()
1355 J_ASSERT_JH(jh, jh->b_transaction == transaction || in jbd2_journal_dirty_metadata()
1356 jh->b_next_transaction == transaction); in jbd2_journal_dirty_metadata()
1361 if (jh->b_transaction == transaction && in jbd2_journal_dirty_metadata()
1364 if (jh->b_transaction == transaction && in jbd2_journal_dirty_metadata()
1371 J_ASSERT_JH(jh, jh->b_transaction != transaction || in jbd2_journal_dirty_metadata()
1378 journal = transaction->t_journal; in jbd2_journal_dirty_metadata()
1405 if (jh->b_transaction == transaction && jh->b_jlist == BJ_Metadata) { in jbd2_journal_dirty_metadata()
1432 if (jh->b_transaction != transaction) { in jbd2_journal_dirty_metadata()
1436 (jh->b_next_transaction != transaction))) { in jbd2_journal_dirty_metadata()
1444 transaction, transaction->t_tid, in jbd2_journal_dirty_metadata()
1465 __jbd2_journal_file_buffer(jh, transaction, BJ_Metadata); in jbd2_journal_dirty_metadata()
1493 transaction_t *transaction = handle->h_transaction; in jbd2_journal_forget() local
1502 journal = transaction->t_journal; in jbd2_journal_forget()
1529 if (jh->b_transaction == transaction) { in jbd2_journal_forget()
1562 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); in jbd2_journal_forget()
1583 J_ASSERT(jh->b_next_transaction == transaction); in jbd2_journal_forget()
1626 transaction_t *transaction = handle->h_transaction; in jbd2_journal_stop() local
1632 if (!transaction) { in jbd2_journal_stop()
1648 journal = transaction->t_journal; in jbd2_journal_stop()
1655 J_ASSERT(atomic_read(&transaction->t_updates) > 0); in jbd2_journal_stop()
1665 transaction->t_tid, in jbd2_journal_stop()
1713 transaction->t_start_time)); in jbd2_journal_stop()
1729 transaction->t_synchronous_commit = 1; in jbd2_journal_stop()
1732 &transaction->t_outstanding_credits); in jbd2_journal_stop()
1741 (atomic_read(&transaction->t_outstanding_credits) > in jbd2_journal_stop()
1743 time_after_eq(jiffies, transaction->t_expires)) { in jbd2_journal_stop()
1751 jbd2_log_start_commit(journal, transaction->t_tid); in jbd2_journal_stop()
1767 tid = transaction->t_tid; in jbd2_journal_stop()
1768 if (atomic_dec_and_test(&transaction->t_updates)) { in jbd2_journal_stop()
1857 transaction_t *transaction; in __jbd2_journal_temp_unlink_buffer() local
1861 transaction = jh->b_transaction; in __jbd2_journal_temp_unlink_buffer()
1862 if (transaction) in __jbd2_journal_temp_unlink_buffer()
1863 assert_spin_locked(&transaction->t_journal->j_list_lock); in __jbd2_journal_temp_unlink_buffer()
1867 J_ASSERT_JH(jh, transaction != NULL); in __jbd2_journal_temp_unlink_buffer()
1873 transaction->t_nr_buffers--; in __jbd2_journal_temp_unlink_buffer()
1874 J_ASSERT_JH(jh, transaction->t_nr_buffers >= 0); in __jbd2_journal_temp_unlink_buffer()
1875 list = &transaction->t_buffers; in __jbd2_journal_temp_unlink_buffer()
1878 list = &transaction->t_forget; in __jbd2_journal_temp_unlink_buffer()
1881 list = &transaction->t_shadow_list; in __jbd2_journal_temp_unlink_buffer()
1884 list = &transaction->t_reserved_list; in __jbd2_journal_temp_unlink_buffer()
1890 if (transaction && is_journal_aborted(transaction->t_journal)) in __jbd2_journal_temp_unlink_buffer()
2040 static int __dispose_buffer(struct journal_head *jh, transaction_t *transaction) in __dispose_buffer() argument
2054 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); in __dispose_buffer()
2113 transaction_t *transaction; in journal_unmap_buffer() local
2160 transaction = jh->b_transaction; in journal_unmap_buffer()
2161 if (transaction == NULL) { in journal_unmap_buffer()
2207 } else if (transaction == journal->j_committing_transaction) { in journal_unmap_buffer()
2242 J_ASSERT_JH(jh, transaction == journal->j_running_transaction); in journal_unmap_buffer()
2244 may_free = __dispose_buffer(jh, transaction); in journal_unmap_buffer()
2342 transaction_t *transaction, int jlist) in __jbd2_journal_file_buffer() argument
2349 assert_spin_locked(&transaction->t_journal->j_list_lock); in __jbd2_journal_file_buffer()
2352 J_ASSERT_JH(jh, jh->b_transaction == transaction || in __jbd2_journal_file_buffer()
2378 jh->b_transaction = transaction; in __jbd2_journal_file_buffer()
2386 transaction->t_nr_buffers++; in __jbd2_journal_file_buffer()
2387 list = &transaction->t_buffers; in __jbd2_journal_file_buffer()
2390 list = &transaction->t_forget; in __jbd2_journal_file_buffer()
2393 list = &transaction->t_shadow_list; in __jbd2_journal_file_buffer()
2396 list = &transaction->t_reserved_list; in __jbd2_journal_file_buffer()
2408 transaction_t *transaction, int jlist) in jbd2_journal_file_buffer() argument
2411 spin_lock(&transaction->t_journal->j_list_lock); in jbd2_journal_file_buffer()
2412 __jbd2_journal_file_buffer(jh, transaction, jlist); in jbd2_journal_file_buffer()
2413 spin_unlock(&transaction->t_journal->j_list_lock); in jbd2_journal_file_buffer()
2496 transaction_t *transaction = handle->h_transaction; in jbd2_journal_file_inode() local
2501 journal = transaction->t_journal; in jbd2_journal_file_inode()
2504 transaction->t_tid); in jbd2_journal_file_inode()
2519 if ((jinode->i_transaction == transaction || in jbd2_journal_file_inode()
2520 jinode->i_next_transaction == transaction) && in jbd2_journal_file_inode()
2527 if (jinode->i_transaction == transaction || in jbd2_journal_file_inode()
2528 jinode->i_next_transaction == transaction) in jbd2_journal_file_inode()
2536 if (!transaction->t_need_data_flush) in jbd2_journal_file_inode()
2537 transaction->t_need_data_flush = 1; in jbd2_journal_file_inode()
2544 jinode->i_next_transaction = transaction; in jbd2_journal_file_inode()
2549 jinode->i_transaction = transaction; in jbd2_journal_file_inode()
2550 list_add(&jinode->i_list, &transaction->t_inode_list); in jbd2_journal_file_inode()