Lines Matching refs:journal
116 static int journal_submit_commit_record(journal_t *journal, in journal_submit_commit_record() argument
128 if (is_journal_aborted(journal)) in journal_submit_commit_record()
141 if (jbd2_has_feature_checksum(journal)) { in journal_submit_commit_record()
146 jbd2_commit_block_csum_set(journal, bh); in journal_submit_commit_record()
154 if (journal->j_flags & JBD2_BARRIER && in journal_submit_commit_record()
155 !jbd2_has_feature_async_commit(journal)) in journal_submit_commit_record()
169 static int journal_wait_on_commit_record(journal_t *journal, in journal_wait_on_commit_record() argument
212 static int journal_submit_data_buffers(journal_t *journal, in journal_submit_data_buffers() argument
219 spin_lock(&journal->j_list_lock); in journal_submit_data_buffers()
225 spin_unlock(&journal->j_list_lock); in journal_submit_data_buffers()
236 spin_lock(&journal->j_list_lock); in journal_submit_data_buffers()
242 spin_unlock(&journal->j_list_lock); in journal_submit_data_buffers()
251 static int journal_finish_inode_data_buffers(journal_t *journal, in journal_finish_inode_data_buffers() argument
258 spin_lock(&journal->j_list_lock); in journal_finish_inode_data_buffers()
263 spin_unlock(&journal->j_list_lock); in journal_finish_inode_data_buffers()
268 spin_lock(&journal->j_list_lock); in journal_finish_inode_data_buffers()
287 spin_unlock(&journal->j_list_lock); in journal_finish_inode_data_buffers()
344 void jbd2_journal_commit_transaction(journal_t *journal) in jbd2_journal_commit_transaction() argument
350 struct buffer_head **wbuf = journal->j_wbuf; in jbd2_journal_commit_transaction()
363 int tag_bytes = journal_tag_bytes(journal); in jbd2_journal_commit_transaction()
375 if (jbd2_journal_has_csum_v2or3(journal)) in jbd2_journal_commit_transaction()
384 if (journal->j_flags & JBD2_FLUSHED) { in jbd2_journal_commit_transaction()
386 mutex_lock_io(&journal->j_checkpoint_mutex); in jbd2_journal_commit_transaction()
393 jbd2_journal_update_sb_log_tail(journal, in jbd2_journal_commit_transaction()
394 journal->j_tail_sequence, in jbd2_journal_commit_transaction()
395 journal->j_tail, in jbd2_journal_commit_transaction()
397 mutex_unlock(&journal->j_checkpoint_mutex); in jbd2_journal_commit_transaction()
402 J_ASSERT(journal->j_running_transaction != NULL); in jbd2_journal_commit_transaction()
403 J_ASSERT(journal->j_committing_transaction == NULL); in jbd2_journal_commit_transaction()
405 commit_transaction = journal->j_running_transaction; in jbd2_journal_commit_transaction()
407 trace_jbd2_start_commit(journal, commit_transaction); in jbd2_journal_commit_transaction()
411 write_lock(&journal->j_state_lock); in jbd2_journal_commit_transaction()
415 trace_jbd2_commit_locking(journal, commit_transaction); in jbd2_journal_commit_transaction()
430 prepare_to_wait(&journal->j_wait_updates, &wait, in jbd2_journal_commit_transaction()
434 write_unlock(&journal->j_state_lock); in jbd2_journal_commit_transaction()
436 write_lock(&journal->j_state_lock); in jbd2_journal_commit_transaction()
439 finish_wait(&journal->j_wait_updates, &wait); in jbd2_journal_commit_transaction()
444 journal->j_max_transaction_buffers); in jbd2_journal_commit_transaction()
477 jbd2_journal_refile_buffer(journal, jh); in jbd2_journal_commit_transaction()
485 spin_lock(&journal->j_list_lock); in jbd2_journal_commit_transaction()
486 __jbd2_journal_clean_checkpoint_list(journal, false); in jbd2_journal_commit_transaction()
487 spin_unlock(&journal->j_list_lock); in jbd2_journal_commit_transaction()
495 jbd2_clear_buffer_revoked_flags(journal); in jbd2_journal_commit_transaction()
500 jbd2_journal_switch_revoke_table(journal); in jbd2_journal_commit_transaction()
505 atomic_sub(atomic_read(&journal->j_reserved_credits), in jbd2_journal_commit_transaction()
508 trace_jbd2_commit_flushing(journal, commit_transaction); in jbd2_journal_commit_transaction()
514 journal->j_committing_transaction = commit_transaction; in jbd2_journal_commit_transaction()
515 journal->j_running_transaction = NULL; in jbd2_journal_commit_transaction()
517 commit_transaction->t_log_start = journal->j_head; in jbd2_journal_commit_transaction()
518 wake_up(&journal->j_wait_transaction_locked); in jbd2_journal_commit_transaction()
519 write_unlock(&journal->j_state_lock); in jbd2_journal_commit_transaction()
527 err = journal_submit_data_buffers(journal, commit_transaction); in jbd2_journal_commit_transaction()
529 jbd2_journal_abort(journal, err); in jbd2_journal_commit_transaction()
541 write_lock(&journal->j_state_lock); in jbd2_journal_commit_transaction()
543 write_unlock(&journal->j_state_lock); in jbd2_journal_commit_transaction()
545 trace_jbd2_commit_logging(journal, commit_transaction); in jbd2_journal_commit_transaction()
568 if (is_journal_aborted(journal)) { in jbd2_journal_commit_transaction()
575 jbd2_journal_refile_buffer(journal, jh); in jbd2_journal_commit_transaction()
597 jbd2_journal_abort(journal, -EIO); in jbd2_journal_commit_transaction()
620 err = jbd2_journal_next_log_block(journal, &blocknr); in jbd2_journal_commit_transaction()
625 jbd2_journal_abort(journal, err); in jbd2_journal_commit_transaction()
650 jbd2_journal_abort(journal, flags); in jbd2_journal_commit_transaction()
665 write_tag_block(journal, tag, jh2bh(jh)->b_blocknr); in jbd2_journal_commit_transaction()
667 jbd2_block_tag_csum_set(journal, tag, wbuf[bufs], in jbd2_journal_commit_transaction()
674 memcpy (tagp, journal->j_uuid, 16); in jbd2_journal_commit_transaction()
683 if (bufs == journal->j_wbufsize || in jbd2_journal_commit_transaction()
695 jbd2_descriptor_block_csum_set(journal, descriptor); in jbd2_journal_commit_transaction()
702 if (jbd2_has_feature_checksum(journal)) { in jbd2_journal_commit_transaction()
723 err = journal_finish_inode_data_buffers(journal, commit_transaction); in jbd2_journal_commit_transaction()
727 "on %s\n", journal->j_devname); in jbd2_journal_commit_transaction()
728 if (journal->j_flags & JBD2_ABORT_ON_SYNCDATA_ERR) in jbd2_journal_commit_transaction()
729 jbd2_journal_abort(journal, err); in jbd2_journal_commit_transaction()
741 jbd2_journal_get_log_tail(journal, &first_tid, &first_block); in jbd2_journal_commit_transaction()
743 write_lock(&journal->j_state_lock); in jbd2_journal_commit_transaction()
745 long freed = first_block - journal->j_tail; in jbd2_journal_commit_transaction()
747 if (first_block < journal->j_tail) in jbd2_journal_commit_transaction()
748 freed += journal->j_last - journal->j_first; in jbd2_journal_commit_transaction()
750 if (freed < journal->j_maxlen / 4) in jbd2_journal_commit_transaction()
755 write_unlock(&journal->j_state_lock); in jbd2_journal_commit_transaction()
763 (journal->j_fs_dev != journal->j_dev) && in jbd2_journal_commit_transaction()
764 (journal->j_flags & JBD2_BARRIER)) in jbd2_journal_commit_transaction()
765 blkdev_issue_flush(journal->j_fs_dev, GFP_NOFS, NULL); in jbd2_journal_commit_transaction()
768 if (jbd2_has_feature_async_commit(journal)) { in jbd2_journal_commit_transaction()
769 err = journal_submit_commit_record(journal, commit_transaction, in jbd2_journal_commit_transaction()
772 __jbd2_journal_abort_hard(journal); in jbd2_journal_commit_transaction()
851 jbd2_journal_abort(journal, err); in jbd2_journal_commit_transaction()
854 write_lock(&journal->j_state_lock); in jbd2_journal_commit_transaction()
857 write_unlock(&journal->j_state_lock); in jbd2_journal_commit_transaction()
859 if (!jbd2_has_feature_async_commit(journal)) { in jbd2_journal_commit_transaction()
860 err = journal_submit_commit_record(journal, commit_transaction, in jbd2_journal_commit_transaction()
863 __jbd2_journal_abort_hard(journal); in jbd2_journal_commit_transaction()
866 err = journal_wait_on_commit_record(journal, cbh); in jbd2_journal_commit_transaction()
867 if (jbd2_has_feature_async_commit(journal) && in jbd2_journal_commit_transaction()
868 journal->j_flags & JBD2_BARRIER) { in jbd2_journal_commit_transaction()
869 blkdev_issue_flush(journal->j_dev, GFP_NOFS, NULL); in jbd2_journal_commit_transaction()
873 jbd2_journal_abort(journal, err); in jbd2_journal_commit_transaction()
881 jbd2_update_log_tail(journal, first_tid, first_block); in jbd2_journal_commit_transaction()
900 spin_lock(&journal->j_list_lock); in jbd2_journal_commit_transaction()
907 spin_unlock(&journal->j_list_lock); in jbd2_journal_commit_transaction()
944 spin_lock(&journal->j_list_lock); in jbd2_journal_commit_transaction()
992 if (is_journal_aborted(journal)) in jbd2_journal_commit_transaction()
1015 cond_resched_lock(&journal->j_list_lock); in jbd2_journal_commit_transaction()
1017 spin_unlock(&journal->j_list_lock); in jbd2_journal_commit_transaction()
1024 write_lock(&journal->j_state_lock); in jbd2_journal_commit_transaction()
1025 spin_lock(&journal->j_list_lock); in jbd2_journal_commit_transaction()
1031 spin_unlock(&journal->j_list_lock); in jbd2_journal_commit_transaction()
1032 write_unlock(&journal->j_state_lock); in jbd2_journal_commit_transaction()
1039 if (journal->j_checkpoint_transactions == NULL) { in jbd2_journal_commit_transaction()
1040 journal->j_checkpoint_transactions = commit_transaction; in jbd2_journal_commit_transaction()
1045 journal->j_checkpoint_transactions; in jbd2_journal_commit_transaction()
1053 spin_unlock(&journal->j_list_lock); in jbd2_journal_commit_transaction()
1071 trace_jbd2_run_stats(journal->j_fs_dev->bd_dev, in jbd2_journal_commit_transaction()
1076 J_ASSERT(commit_transaction == journal->j_committing_transaction); in jbd2_journal_commit_transaction()
1077 journal->j_commit_sequence = commit_transaction->t_tid; in jbd2_journal_commit_transaction()
1078 journal->j_committing_transaction = NULL; in jbd2_journal_commit_transaction()
1085 if (likely(journal->j_average_commit_time)) in jbd2_journal_commit_transaction()
1086 journal->j_average_commit_time = (commit_time + in jbd2_journal_commit_transaction()
1087 journal->j_average_commit_time*3) / 4; in jbd2_journal_commit_transaction()
1089 journal->j_average_commit_time = commit_time; in jbd2_journal_commit_transaction()
1091 write_unlock(&journal->j_state_lock); in jbd2_journal_commit_transaction()
1093 if (journal->j_commit_callback) in jbd2_journal_commit_transaction()
1094 journal->j_commit_callback(journal, commit_transaction); in jbd2_journal_commit_transaction()
1096 trace_jbd2_end_commit(journal, commit_transaction); in jbd2_journal_commit_transaction()
1098 journal->j_commit_sequence, journal->j_tail_sequence); in jbd2_journal_commit_transaction()
1100 write_lock(&journal->j_state_lock); in jbd2_journal_commit_transaction()
1101 spin_lock(&journal->j_list_lock); in jbd2_journal_commit_transaction()
1106 __jbd2_journal_drop_transaction(journal, commit_transaction); in jbd2_journal_commit_transaction()
1109 spin_unlock(&journal->j_list_lock); in jbd2_journal_commit_transaction()
1110 write_unlock(&journal->j_state_lock); in jbd2_journal_commit_transaction()
1111 wake_up(&journal->j_wait_done_commit); in jbd2_journal_commit_transaction()
1116 spin_lock(&journal->j_history_lock); in jbd2_journal_commit_transaction()
1117 journal->j_stats.ts_tid++; in jbd2_journal_commit_transaction()
1118 journal->j_stats.ts_requested += stats.ts_requested; in jbd2_journal_commit_transaction()
1119 journal->j_stats.run.rs_wait += stats.run.rs_wait; in jbd2_journal_commit_transaction()
1120 journal->j_stats.run.rs_request_delay += stats.run.rs_request_delay; in jbd2_journal_commit_transaction()
1121 journal->j_stats.run.rs_running += stats.run.rs_running; in jbd2_journal_commit_transaction()
1122 journal->j_stats.run.rs_locked += stats.run.rs_locked; in jbd2_journal_commit_transaction()
1123 journal->j_stats.run.rs_flushing += stats.run.rs_flushing; in jbd2_journal_commit_transaction()
1124 journal->j_stats.run.rs_logging += stats.run.rs_logging; in jbd2_journal_commit_transaction()
1125 journal->j_stats.run.rs_handle_count += stats.run.rs_handle_count; in jbd2_journal_commit_transaction()
1126 journal->j_stats.run.rs_blocks += stats.run.rs_blocks; in jbd2_journal_commit_transaction()
1127 journal->j_stats.run.rs_blocks_logged += stats.run.rs_blocks_logged; in jbd2_journal_commit_transaction()
1128 spin_unlock(&journal->j_history_lock); in jbd2_journal_commit_transaction()