Lines Matching refs:transaction

58 void jbd2_journal_free_transaction(transaction_t *transaction)  in jbd2_journal_free_transaction()  argument
60 if (unlikely(ZERO_OR_NULL_PTR(transaction))) in jbd2_journal_free_transaction()
62 kmem_cache_free(transaction_cache, transaction); in jbd2_journal_free_transaction()
103 transaction_t *transaction) in jbd2_get_transaction() argument
105 transaction->t_journal = journal; in jbd2_get_transaction()
106 transaction->t_state = T_RUNNING; in jbd2_get_transaction()
107 transaction->t_start_time = ktime_get(); in jbd2_get_transaction()
108 transaction->t_tid = journal->j_transaction_sequence++; in jbd2_get_transaction()
109 transaction->t_expires = jiffies + journal->j_commit_interval; in jbd2_get_transaction()
110 spin_lock_init(&transaction->t_handle_lock); in jbd2_get_transaction()
111 atomic_set(&transaction->t_updates, 0); in jbd2_get_transaction()
112 atomic_set(&transaction->t_outstanding_credits, in jbd2_get_transaction()
115 atomic_set(&transaction->t_outstanding_revokes, 0); in jbd2_get_transaction()
116 atomic_set(&transaction->t_handle_count, 0); in jbd2_get_transaction()
117 INIT_LIST_HEAD(&transaction->t_inode_list); in jbd2_get_transaction()
118 INIT_LIST_HEAD(&transaction->t_private_list); in jbd2_get_transaction()
121 journal->j_commit_timer.expires = round_jiffies_up(transaction->t_expires); in jbd2_get_transaction()
125 journal->j_running_transaction = transaction; in jbd2_get_transaction()
126 transaction->t_max_wait = 0; in jbd2_get_transaction()
127 transaction->t_start = jiffies; in jbd2_get_transaction()
128 transaction->t_requested = 0; in jbd2_get_transaction()
149 static inline void update_t_max_wait(transaction_t *transaction, in update_t_max_wait() argument
154 time_after(transaction->t_start, ts)) { in update_t_max_wait()
155 ts = jbd2_time_diff(ts, transaction->t_start); in update_t_max_wait()
156 spin_lock(&transaction->t_handle_lock); in update_t_max_wait()
157 if (ts > transaction->t_max_wait) in update_t_max_wait()
158 transaction->t_max_wait = ts; in update_t_max_wait()
159 spin_unlock(&transaction->t_handle_lock); in update_t_max_wait()
339 transaction_t *transaction, *new_transaction = NULL; in start_this_handle() local
423 transaction = journal->j_running_transaction; in start_this_handle()
443 if (transaction->t_state == T_SWITCH) { in start_this_handle()
454 update_t_max_wait(transaction, ts); in start_this_handle()
455 handle->h_transaction = transaction; in start_this_handle()
459 atomic_inc(&transaction->t_updates); in start_this_handle()
460 atomic_inc(&transaction->t_handle_count); in start_this_handle()
463 atomic_read(&transaction->t_outstanding_credits), in start_this_handle()
667 transaction_t *transaction = handle->h_transaction; in jbd2_journal_extend() local
674 journal = transaction->t_journal; in jbd2_journal_extend()
681 if (transaction->t_state != T_RUNNING) { in jbd2_journal_extend()
693 spin_lock(&transaction->t_handle_lock); in jbd2_journal_extend()
695 &transaction->t_outstanding_credits); in jbd2_journal_extend()
700 atomic_sub(nblocks, &transaction->t_outstanding_credits); in jbd2_journal_extend()
705 transaction->t_tid, in jbd2_journal_extend()
718 spin_unlock(&transaction->t_handle_lock); in jbd2_journal_extend()
726 transaction_t *transaction = handle->h_transaction; in stop_this_handle() local
727 journal_t *journal = transaction->t_journal; in stop_this_handle()
731 J_ASSERT(atomic_read(&transaction->t_updates) > 0); in stop_this_handle()
747 &transaction->t_outstanding_revokes); in stop_this_handle()
754 &transaction->t_outstanding_credits); in stop_this_handle()
757 transaction); in stop_this_handle()
758 if (atomic_dec_and_test(&transaction->t_updates)) in stop_this_handle()
789 transaction_t *transaction = handle->h_transaction; in jbd2__journal_restart() local
799 journal = transaction->t_journal; in jbd2__journal_restart()
800 tid = transaction->t_tid; in jbd2__journal_restart()
868 transaction_t *transaction = journal->j_running_transaction; in jbd2_journal_lock_updates() local
870 if (!transaction) in jbd2_journal_lock_updates()
873 spin_lock(&transaction->t_handle_lock); in jbd2_journal_lock_updates()
876 if (!atomic_read(&transaction->t_updates)) { in jbd2_journal_lock_updates()
877 spin_unlock(&transaction->t_handle_lock); in jbd2_journal_lock_updates()
881 spin_unlock(&transaction->t_handle_lock); in jbd2_journal_lock_updates()
965 transaction_t *transaction = handle->h_transaction; in do_get_write_access() local
971 journal = transaction->t_journal; in do_get_write_access()
1011 jh->b_transaction == transaction || in do_get_write_access()
1016 transaction); in do_get_write_access()
1042 if (jh->b_transaction == transaction || in do_get_write_access()
1043 jh->b_next_transaction == transaction) in do_get_write_access()
1068 __jbd2_journal_file_buffer(jh, transaction, BJ_Reserved); in do_get_write_access()
1134 jh->b_next_transaction = transaction; in do_get_write_access()
1260 transaction_t *transaction = handle->h_transaction; in jbd2_journal_get_create_access() local
1269 journal = transaction->t_journal; in jbd2_journal_get_create_access()
1281 J_ASSERT_JH(jh, (jh->b_transaction == transaction || in jbd2_journal_get_create_access()
1304 __jbd2_journal_file_buffer(jh, transaction, BJ_Reserved); in jbd2_journal_get_create_access()
1312 jh->b_next_transaction = transaction; in jbd2_journal_get_create_access()
1475 transaction_t *transaction = handle->h_transaction; in jbd2_journal_dirty_metadata() local
1499 if (data_race(jh->b_transaction != transaction && in jbd2_journal_dirty_metadata()
1500 jh->b_next_transaction != transaction)) { in jbd2_journal_dirty_metadata()
1502 J_ASSERT_JH(jh, jh->b_transaction == transaction || in jbd2_journal_dirty_metadata()
1503 jh->b_next_transaction == transaction); in jbd2_journal_dirty_metadata()
1508 if (data_race(jh->b_transaction == transaction && in jbd2_journal_dirty_metadata()
1511 if (jh->b_transaction == transaction && in jbd2_journal_dirty_metadata()
1518 J_ASSERT_JH(jh, jh->b_transaction != transaction || in jbd2_journal_dirty_metadata()
1525 journal = transaction->t_journal; in jbd2_journal_dirty_metadata()
1549 if (jh->b_transaction == transaction && jh->b_jlist == BJ_Metadata) { in jbd2_journal_dirty_metadata()
1576 if (jh->b_transaction != transaction) { in jbd2_journal_dirty_metadata()
1580 (jh->b_next_transaction != transaction))) { in jbd2_journal_dirty_metadata()
1588 transaction, transaction->t_tid, in jbd2_journal_dirty_metadata()
1609 __jbd2_journal_file_buffer(jh, transaction, BJ_Metadata); in jbd2_journal_dirty_metadata()
1637 transaction_t *transaction = handle->h_transaction; in jbd2_journal_forget() local
1646 journal = transaction->t_journal; in jbd2_journal_forget()
1675 if (jh->b_transaction == transaction) { in jbd2_journal_forget()
1708 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); in jbd2_journal_forget()
1731 jh->b_next_transaction = transaction; in jbd2_journal_forget()
1734 J_ASSERT(jh->b_next_transaction == transaction); in jbd2_journal_forget()
1773 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); in jbd2_journal_forget()
1805 transaction_t *transaction = handle->h_transaction; in jbd2_journal_stop() local
1818 if (!transaction) { in jbd2_journal_stop()
1826 journal = transaction->t_journal; in jbd2_journal_stop()
1827 tid = transaction->t_tid; in jbd2_journal_stop()
1881 transaction->t_start_time)); in jbd2_journal_stop()
1897 transaction->t_synchronous_commit = 1; in jbd2_journal_stop()
1905 time_after_eq(jiffies, transaction->t_expires)) { in jbd2_journal_stop()
2007 transaction_t *transaction; in __jbd2_journal_temp_unlink_buffer() local
2011 transaction = jh->b_transaction; in __jbd2_journal_temp_unlink_buffer()
2012 if (transaction) in __jbd2_journal_temp_unlink_buffer()
2013 assert_spin_locked(&transaction->t_journal->j_list_lock); in __jbd2_journal_temp_unlink_buffer()
2017 J_ASSERT_JH(jh, transaction != NULL); in __jbd2_journal_temp_unlink_buffer()
2023 transaction->t_nr_buffers--; in __jbd2_journal_temp_unlink_buffer()
2024 J_ASSERT_JH(jh, transaction->t_nr_buffers >= 0); in __jbd2_journal_temp_unlink_buffer()
2025 list = &transaction->t_buffers; in __jbd2_journal_temp_unlink_buffer()
2028 list = &transaction->t_forget; in __jbd2_journal_temp_unlink_buffer()
2031 list = &transaction->t_shadow_list; in __jbd2_journal_temp_unlink_buffer()
2034 list = &transaction->t_reserved_list; in __jbd2_journal_temp_unlink_buffer()
2040 if (transaction && is_journal_aborted(transaction->t_journal)) in __jbd2_journal_temp_unlink_buffer()
2186 static int __dispose_buffer(struct journal_head *jh, transaction_t *transaction) in __dispose_buffer() argument
2200 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); in __dispose_buffer()
2260 transaction_t *transaction; in journal_unmap_buffer() local
2304 transaction = jh->b_transaction; in journal_unmap_buffer()
2305 if (transaction == NULL) { in journal_unmap_buffer()
2351 } else if (transaction == journal->j_committing_transaction) { in journal_unmap_buffer()
2388 J_ASSERT_JH(jh, transaction == journal->j_running_transaction); in journal_unmap_buffer()
2390 may_free = __dispose_buffer(jh, transaction); in journal_unmap_buffer()
2487 transaction_t *transaction, int jlist) in __jbd2_journal_file_buffer() argument
2494 assert_spin_locked(&transaction->t_journal->j_list_lock); in __jbd2_journal_file_buffer()
2497 J_ASSERT_JH(jh, jh->b_transaction == transaction || in __jbd2_journal_file_buffer()
2523 jh->b_transaction = transaction; in __jbd2_journal_file_buffer()
2531 transaction->t_nr_buffers++; in __jbd2_journal_file_buffer()
2532 list = &transaction->t_buffers; in __jbd2_journal_file_buffer()
2535 list = &transaction->t_forget; in __jbd2_journal_file_buffer()
2538 list = &transaction->t_shadow_list; in __jbd2_journal_file_buffer()
2541 list = &transaction->t_reserved_list; in __jbd2_journal_file_buffer()
2553 transaction_t *transaction, int jlist) in jbd2_journal_file_buffer() argument
2556 spin_lock(&transaction->t_journal->j_list_lock); in jbd2_journal_file_buffer()
2557 __jbd2_journal_file_buffer(jh, transaction, jlist); in jbd2_journal_file_buffer()
2558 spin_unlock(&transaction->t_journal->j_list_lock); in jbd2_journal_file_buffer()
2650 transaction_t *transaction = handle->h_transaction; in jbd2_journal_file_inode() local
2655 journal = transaction->t_journal; in jbd2_journal_file_inode()
2658 transaction->t_tid); in jbd2_journal_file_inode()
2672 if (jinode->i_transaction == transaction || in jbd2_journal_file_inode()
2673 jinode->i_next_transaction == transaction) in jbd2_journal_file_inode()
2681 if (!transaction->t_need_data_flush) in jbd2_journal_file_inode()
2682 transaction->t_need_data_flush = 1; in jbd2_journal_file_inode()
2689 jinode->i_next_transaction = transaction; in jbd2_journal_file_inode()
2694 jinode->i_transaction = transaction; in jbd2_journal_file_inode()
2695 list_add(&jinode->i_list, &transaction->t_inode_list); in jbd2_journal_file_inode()