Lines Matching defs:journal

30  * IO end handler for temporary buffer_heads handling writes to the journal.
111 * mode we can now just skip the rest of the journal write
114 * Returns 1 if the journal needs to be aborted or 0 on success
116 static int journal_submit_commit_record(journal_t *journal,
128 if (is_journal_aborted(journal))
141 if (jbd2_has_feature_checksum(journal)) {
146 jbd2_commit_block_csum_set(journal, bh);
154 if (journal->j_flags & JBD2_BARRIER &&
155 !jbd2_has_feature_async_commit(journal))
169 static int journal_wait_on_commit_record(journal_t *journal,
222 int jbd2_wait_inode_data(journal_t *journal, struct jbd2_inode *jinode)
241 static int journal_submit_data_buffers(journal_t *journal,
247 spin_lock(&journal->j_list_lock);
252 spin_unlock(&journal->j_list_lock);
255 if (journal->j_submit_inode_data_buffers) {
256 err = journal->j_submit_inode_data_buffers(jinode);
260 spin_lock(&journal->j_list_lock);
266 spin_unlock(&journal->j_list_lock);
284 static int journal_finish_inode_data_buffers(journal_t *journal,
291 spin_lock(&journal->j_list_lock);
296 spin_unlock(&journal->j_list_lock);
298 if (journal->j_finish_inode_data_buffers) {
299 err = journal->j_finish_inode_data_buffers(jinode);
304 spin_lock(&journal->j_list_lock);
325 spin_unlock(&journal->j_list_lock);
380 * function is called by the journal thread to begin a complete commit.
382 void jbd2_journal_commit_transaction(journal_t *journal)
388 struct buffer_head **wbuf = journal->j_wbuf;
401 int tag_bytes = journal_tag_bytes(journal);
405 /* Tail of the journal */
413 if (jbd2_journal_has_csum_v2or3(journal))
422 if (journal->j_flags & JBD2_FLUSHED) {
424 mutex_lock_io(&journal->j_checkpoint_mutex);
428 * since journal is empty and it is ok for write to be
431 jbd2_journal_update_sb_log_tail(journal,
432 journal->j_tail_sequence,
433 journal->j_tail,
435 mutex_unlock(&journal->j_checkpoint_mutex);
440 J_ASSERT(journal->j_running_transaction != NULL);
441 J_ASSERT(journal->j_committing_transaction == NULL);
443 write_lock(&journal->j_state_lock);
444 journal->j_flags |= JBD2_FULL_COMMIT_ONGOING;
445 while (journal->j_flags & JBD2_FAST_COMMIT_ONGOING) {
448 prepare_to_wait(&journal->j_fc_wait, &wait,
450 write_unlock(&journal->j_state_lock);
452 write_lock(&journal->j_state_lock);
453 finish_wait(&journal->j_fc_wait, &wait);
464 write_unlock(&journal->j_state_lock);
466 commit_transaction = journal->j_running_transaction;
468 trace_jbd2_start_commit(journal, commit_transaction);
472 write_lock(&journal->j_state_lock);
473 journal->j_fc_off = 0;
477 trace_jbd2_commit_locking(journal, commit_transaction);
492 prepare_to_wait(&journal->j_wait_updates, &wait,
496 write_unlock(&journal->j_state_lock);
498 write_lock(&journal->j_state_lock);
501 finish_wait(&journal->j_wait_updates, &wait);
507 journal->j_max_transaction_buffers);
524 * We use journal->j_state_lock here to serialize processing of
542 jbd2_journal_refile_buffer(journal, jh);
545 write_unlock(&journal->j_state_lock);
547 * Now try to drop any written-back buffers from the journal's
551 spin_lock(&journal->j_list_lock);
552 __jbd2_journal_clean_checkpoint_list(journal, false);
553 spin_unlock(&journal->j_list_lock);
561 jbd2_clear_buffer_revoked_flags(journal);
566 jbd2_journal_switch_revoke_table(journal);
568 write_lock(&journal->j_state_lock);
572 atomic_sub(atomic_read(&journal->j_reserved_credits),
575 trace_jbd2_commit_flushing(journal, commit_transaction);
581 journal->j_committing_transaction = commit_transaction;
582 journal->j_running_transaction = NULL;
584 commit_transaction->t_log_start = journal->j_head;
585 wake_up_all(&journal->j_wait_transaction_locked);
586 write_unlock(&journal->j_state_lock);
594 err = journal_submit_data_buffers(journal, commit_transaction);
596 jbd2_journal_abort(journal, err);
608 write_lock(&journal->j_state_lock);
610 write_unlock(&journal->j_state_lock);
612 trace_jbd2_commit_logging(journal, commit_transaction);
631 /* If we're in abort mode, we just un-journal the buffer and
634 if (is_journal_aborted(journal)) {
636 JBUFFER_TRACE(jh, "journal is aborting: refile");
641 jbd2_journal_refile_buffer(journal, jh);
663 jbd2_journal_abort(journal, -EIO);
686 err = jbd2_journal_next_log_block(journal, &blocknr);
691 jbd2_journal_abort(journal, err);
715 jbd2_journal_abort(journal, flags);
730 write_tag_block(journal, tag, jh2bh(jh)->b_blocknr);
732 jbd2_block_tag_csum_set(journal, tag, wbuf[bufs],
739 memcpy (tagp, journal->j_uuid, 16);
748 if (bufs == journal->j_wbufsize ||
761 jbd2_descriptor_block_csum_set(journal,
769 if (jbd2_has_feature_checksum(journal)) {
789 err = journal_finish_inode_data_buffers(journal, commit_transaction);
793 "on %s\n", journal->j_devname);
794 if (journal->j_flags & JBD2_ABORT_ON_SYNCDATA_ERR)
795 jbd2_journal_abort(journal, err);
803 * storage and we will be safe to update journal start in the
807 jbd2_journal_get_log_tail(journal, &first_tid, &first_block);
809 write_lock(&journal->j_state_lock);
811 long freed = first_block - journal->j_tail;
813 if (first_block < journal->j_tail)
814 freed += journal->j_last - journal->j_first;
816 if (freed < jbd2_journal_get_max_txn_bufs(journal))
821 write_unlock(&journal->j_state_lock);
824 * If the journal is not located on the file system device,
829 (journal->j_fs_dev != journal->j_dev) &&
830 (journal->j_flags & JBD2_BARRIER))
831 blkdev_issue_flush(journal->j_fs_dev, GFP_NOFS);
834 if (jbd2_has_feature_async_commit(journal)) {
835 err = journal_submit_commit_record(journal, commit_transaction,
838 jbd2_journal_abort(journal, err);
919 jbd2_journal_abort(journal, err);
922 write_lock(&journal->j_state_lock);
925 write_unlock(&journal->j_state_lock);
927 if (!jbd2_has_feature_async_commit(journal)) {
928 err = journal_submit_commit_record(journal, commit_transaction,
931 jbd2_journal_abort(journal, err);
934 err = journal_wait_on_commit_record(journal, cbh);
936 if (jbd2_has_feature_async_commit(journal) &&
937 journal->j_flags & JBD2_BARRIER) {
938 blkdev_issue_flush(journal->j_dev, GFP_NOFS);
942 jbd2_journal_abort(journal, err);
949 * erase checkpointed transactions from the log by updating journal
953 jbd2_update_log_tail(journal, first_tid, first_block);
972 spin_lock(&journal->j_list_lock);
980 spin_unlock(&journal->j_list_lock);
1017 spin_lock(&journal->j_list_lock);
1070 if (is_journal_aborted(journal))
1095 cond_resched_lock(&journal->j_list_lock);
1097 spin_unlock(&journal->j_list_lock);
1104 write_lock(&journal->j_state_lock);
1105 spin_lock(&journal->j_list_lock);
1111 spin_unlock(&journal->j_list_lock);
1112 write_unlock(&journal->j_state_lock);
1119 if (journal->j_checkpoint_transactions == NULL) {
1120 journal->j_checkpoint_transactions = commit_transaction;
1125 journal->j_checkpoint_transactions;
1133 spin_unlock(&journal->j_list_lock);
1151 trace_jbd2_run_stats(journal->j_fs_dev->bd_dev,
1156 J_ASSERT(commit_transaction == journal->j_committing_transaction);
1157 journal->j_commit_sequence = commit_transaction->t_tid;
1158 journal->j_committing_transaction = NULL;
1165 if (likely(journal->j_average_commit_time))
1166 journal->j_average_commit_time = (commit_time +
1167 journal->j_average_commit_time*3) / 4;
1169 journal->j_average_commit_time = commit_time;
1171 write_unlock(&journal->j_state_lock);
1173 if (journal->j_commit_callback)
1174 journal->j_commit_callback(journal, commit_transaction);
1175 if (journal->j_fc_cleanup_callback)
1176 journal->j_fc_cleanup_callback(journal, 1);
1178 trace_jbd2_end_commit(journal, commit_transaction);
1180 journal->j_commit_sequence, journal->j_tail_sequence);
1182 write_lock(&journal->j_state_lock);
1183 journal->j_flags &= ~JBD2_FULL_COMMIT_ONGOING;
1184 journal->j_flags &= ~JBD2_FAST_COMMIT_ONGOING;
1185 spin_lock(&journal->j_list_lock);
1190 __jbd2_journal_drop_transaction(journal, commit_transaction);
1193 spin_unlock(&journal->j_list_lock);
1194 write_unlock(&journal->j_state_lock);
1195 wake_up(&journal->j_wait_done_commit);
1196 wake_up(&journal->j_fc_wait);
1201 spin_lock(&journal->j_history_lock);
1202 journal->j_stats.ts_tid++;
1203 journal->j_stats.ts_requested += stats.ts_requested;
1204 journal->j_stats.run.rs_wait += stats.run.rs_wait;
1205 journal->j_stats.run.rs_request_delay += stats.run.rs_request_delay;
1206 journal->j_stats.run.rs_running += stats.run.rs_running;
1207 journal->j_stats.run.rs_locked += stats.run.rs_locked;
1208 journal->j_stats.run.rs_flushing += stats.run.rs_flushing;
1209 journal->j_stats.run.rs_logging += stats.run.rs_logging;
1210 journal->j_stats.run.rs_handle_count += stats.run.rs_handle_count;
1211 journal->j_stats.run.rs_blocks += stats.run.rs_blocks;
1212 journal->j_stats.run.rs_blocks_logged += stats.run.rs_blocks_logged;
1213 spin_unlock(&journal->j_history_lock);