Lines Matching defs:journal
30 * IO end handler for temporary buffer_heads handling writes to the journal.
109 * mode we can now just skip the rest of the journal write
112 * Returns 1 if the journal needs to be aborted or 0 on success
114 static int journal_submit_commit_record(journal_t *journal,
126 if (is_journal_aborted(journal))
139 if (jbd2_has_feature_checksum(journal)) {
144 jbd2_commit_block_csum_set(journal, bh);
152 if (journal->j_flags & JBD2_BARRIER &&
153 !jbd2_has_feature_async_commit(journal))
165 static int journal_wait_on_commit_record(journal_t *journal,
181 int jbd2_submit_inode_data(journal_t *journal, struct jbd2_inode *jinode)
187 return journal->j_submit_inode_data_buffers(jinode);
192 int jbd2_wait_inode_data(journal_t *journal, struct jbd2_inode *jinode)
211 static int journal_submit_data_buffers(journal_t *journal,
217 spin_lock(&journal->j_list_lock);
222 spin_unlock(&journal->j_list_lock);
225 if (journal->j_submit_inode_data_buffers) {
226 err = journal->j_submit_inode_data_buffers(jinode);
230 spin_lock(&journal->j_list_lock);
236 spin_unlock(&journal->j_list_lock);
254 static int journal_finish_inode_data_buffers(journal_t *journal,
261 spin_lock(&journal->j_list_lock);
266 spin_unlock(&journal->j_list_lock);
268 if (journal->j_finish_inode_data_buffers) {
269 err = journal->j_finish_inode_data_buffers(jinode);
274 spin_lock(&journal->j_list_lock);
295 spin_unlock(&journal->j_list_lock);
346 * function is called by the journal thread to begin a complete commit.
348 void jbd2_journal_commit_transaction(journal_t *journal)
354 struct buffer_head **wbuf = journal->j_wbuf;
367 int tag_bytes = journal_tag_bytes(journal);
371 /* Tail of the journal */
379 if (jbd2_journal_has_csum_v2or3(journal))
388 if (journal->j_flags & JBD2_FLUSHED) {
390 mutex_lock_io(&journal->j_checkpoint_mutex);
394 * since journal is empty and it is ok for write to be
397 jbd2_journal_update_sb_log_tail(journal,
398 journal->j_tail_sequence,
399 journal->j_tail, 0);
400 mutex_unlock(&journal->j_checkpoint_mutex);
405 J_ASSERT(journal->j_running_transaction != NULL);
406 J_ASSERT(journal->j_committing_transaction == NULL);
408 write_lock(&journal->j_state_lock);
409 journal->j_flags |= JBD2_FULL_COMMIT_ONGOING;
410 while (journal->j_flags & JBD2_FAST_COMMIT_ONGOING) {
413 prepare_to_wait(&journal->j_fc_wait, &wait,
415 write_unlock(&journal->j_state_lock);
417 write_lock(&journal->j_state_lock);
418 finish_wait(&journal->j_fc_wait, &wait);
429 write_unlock(&journal->j_state_lock);
431 commit_transaction = journal->j_running_transaction;
433 trace_jbd2_start_commit(journal, commit_transaction);
437 write_lock(&journal->j_state_lock);
438 journal->j_fc_off = 0;
442 trace_jbd2_commit_locking(journal, commit_transaction);
454 jbd2_journal_wait_updates(journal);
459 journal->j_max_transaction_buffers);
476 * We use journal->j_state_lock here to serialize processing of
494 jbd2_journal_refile_buffer(journal, jh);
497 write_unlock(&journal->j_state_lock);
499 * Now try to drop any written-back buffers from the journal's
503 spin_lock(&journal->j_list_lock);
504 __jbd2_journal_clean_checkpoint_list(journal, false);
505 spin_unlock(&journal->j_list_lock);
513 jbd2_clear_buffer_revoked_flags(journal);
518 jbd2_journal_switch_revoke_table(journal);
520 write_lock(&journal->j_state_lock);
524 atomic_sub(atomic_read(&journal->j_reserved_credits),
527 trace_jbd2_commit_flushing(journal, commit_transaction);
533 journal->j_committing_transaction = commit_transaction;
534 journal->j_running_transaction = NULL;
536 commit_transaction->t_log_start = journal->j_head;
537 wake_up_all(&journal->j_wait_transaction_locked);
538 write_unlock(&journal->j_state_lock);
546 err = journal_submit_data_buffers(journal, commit_transaction);
548 jbd2_journal_abort(journal, err);
560 write_lock(&journal->j_state_lock);
562 write_unlock(&journal->j_state_lock);
564 trace_jbd2_commit_logging(journal, commit_transaction);
583 /* If we're in abort mode, we just un-journal the buffer and
586 if (is_journal_aborted(journal)) {
588 JBUFFER_TRACE(jh, "journal is aborting: refile");
593 jbd2_journal_refile_buffer(journal, jh);
615 jbd2_journal_abort(journal, -EIO);
638 err = jbd2_journal_next_log_block(journal, &blocknr);
643 jbd2_journal_abort(journal, err);
667 jbd2_journal_abort(journal, flags);
682 write_tag_block(journal, tag, jh2bh(jh)->b_blocknr);
684 jbd2_block_tag_csum_set(journal, tag, wbuf[bufs],
691 memcpy (tagp, journal->j_uuid, 16);
700 if (bufs == journal->j_wbufsize ||
713 jbd2_descriptor_block_csum_set(journal,
722 if (jbd2_has_feature_checksum(journal)) {
743 err = journal_finish_inode_data_buffers(journal, commit_transaction);
747 "on %s\n", journal->j_devname);
748 if (journal->j_flags & JBD2_ABORT_ON_SYNCDATA_ERR)
749 jbd2_journal_abort(journal, err);
757 * storage and we will be safe to update journal start in the
761 jbd2_journal_get_log_tail(journal, &first_tid, &first_block);
763 write_lock(&journal->j_state_lock);
765 long freed = first_block - journal->j_tail;
767 if (first_block < journal->j_tail)
768 freed += journal->j_last - journal->j_first;
770 if (freed < jbd2_journal_get_max_txn_bufs(journal))
775 write_unlock(&journal->j_state_lock);
778 * If the journal is not located on the file system device,
783 (journal->j_fs_dev != journal->j_dev) &&
784 (journal->j_flags & JBD2_BARRIER))
785 blkdev_issue_flush(journal->j_fs_dev);
788 if (jbd2_has_feature_async_commit(journal)) {
789 err = journal_submit_commit_record(journal, commit_transaction,
792 jbd2_journal_abort(journal, err);
873 jbd2_journal_abort(journal, err);
876 write_lock(&journal->j_state_lock);
879 write_unlock(&journal->j_state_lock);
881 if (!jbd2_has_feature_async_commit(journal)) {
882 err = journal_submit_commit_record(journal, commit_transaction,
885 jbd2_journal_abort(journal, err);
888 err = journal_wait_on_commit_record(journal, cbh);
890 if (jbd2_has_feature_async_commit(journal) &&
891 journal->j_flags & JBD2_BARRIER) {
892 blkdev_issue_flush(journal->j_dev);
896 jbd2_journal_abort(journal, err);
903 * erase checkpointed transactions from the log by updating journal
907 jbd2_update_log_tail(journal, first_tid, first_block);
926 spin_lock(&journal->j_list_lock);
934 spin_unlock(&journal->j_list_lock);
971 spin_lock(&journal->j_list_lock);
1024 if (is_journal_aborted(journal))
1049 cond_resched_lock(&journal->j_list_lock);
1051 spin_unlock(&journal->j_list_lock);
1058 write_lock(&journal->j_state_lock);
1059 spin_lock(&journal->j_list_lock);
1065 spin_unlock(&journal->j_list_lock);
1066 write_unlock(&journal->j_state_lock);
1073 if (journal->j_checkpoint_transactions == NULL) {
1074 journal->j_checkpoint_transactions = commit_transaction;
1079 journal->j_checkpoint_transactions;
1087 spin_unlock(&journal->j_list_lock);
1105 trace_jbd2_run_stats(journal->j_fs_dev->bd_dev,
1110 J_ASSERT(commit_transaction == journal->j_committing_transaction);
1111 journal->j_commit_sequence = commit_transaction->t_tid;
1112 journal->j_committing_transaction = NULL;
1119 if (likely(journal->j_average_commit_time))
1120 journal->j_average_commit_time = (commit_time +
1121 journal->j_average_commit_time*3) / 4;
1123 journal->j_average_commit_time = commit_time;
1125 write_unlock(&journal->j_state_lock);
1127 if (journal->j_commit_callback)
1128 journal->j_commit_callback(journal, commit_transaction);
1129 if (journal->j_fc_cleanup_callback)
1130 journal->j_fc_cleanup_callback(journal, 1, commit_transaction->t_tid);
1132 trace_jbd2_end_commit(journal, commit_transaction);
1134 journal->j_commit_sequence, journal->j_tail_sequence);
1136 write_lock(&journal->j_state_lock);
1137 journal->j_flags &= ~JBD2_FULL_COMMIT_ONGOING;
1138 journal->j_flags &= ~JBD2_FAST_COMMIT_ONGOING;
1139 spin_lock(&journal->j_list_lock);
1143 __jbd2_journal_drop_transaction(journal, commit_transaction);
1146 spin_unlock(&journal->j_list_lock);
1147 write_unlock(&journal->j_state_lock);
1148 wake_up(&journal->j_wait_done_commit);
1149 wake_up(&journal->j_fc_wait);
1154 spin_lock(&journal->j_history_lock);
1155 journal->j_stats.ts_tid++;
1156 journal->j_stats.ts_requested += stats.ts_requested;
1157 journal->j_stats.run.rs_wait += stats.run.rs_wait;
1158 journal->j_stats.run.rs_request_delay += stats.run.rs_request_delay;
1159 journal->j_stats.run.rs_running += stats.run.rs_running;
1160 journal->j_stats.run.rs_locked += stats.run.rs_locked;
1161 journal->j_stats.run.rs_flushing += stats.run.rs_flushing;
1162 journal->j_stats.run.rs_logging += stats.run.rs_logging;
1163 journal->j_stats.run.rs_handle_count += stats.run.rs_handle_count;
1164 journal->j_stats.run.rs_blocks += stats.run.rs_blocks;
1165 journal->j_stats.run.rs_blocks_logged += stats.run.rs_blocks_logged;
1166 spin_unlock(&journal->j_history_lock);