Lines Matching refs:journal
105 static int inverted_lock(journal_t *journal, struct buffer_head *bh) in inverted_lock() argument
108 spin_unlock(&journal->j_list_lock); in inverted_lock()
122 static int journal_write_commit_record(journal_t *journal, in journal_write_commit_record() argument
130 if (is_journal_aborted(journal)) in journal_write_commit_record()
133 descriptor = journal_get_descriptor_buffer(journal); in journal_write_commit_record()
147 if (journal->j_flags & JFS_BARRIER) in journal_write_commit_record()
182 static int journal_submit_data_buffers(journal_t *journal, in journal_submit_data_buffers() argument
190 struct buffer_head **wbuf = journal->j_wbuf; in journal_submit_data_buffers()
203 spin_lock(&journal->j_list_lock); in journal_submit_data_buffers()
221 spin_unlock(&journal->j_list_lock); in journal_submit_data_buffers()
222 trace_jbd_do_submit_data(journal, in journal_submit_data_buffers()
228 spin_lock(&journal->j_list_lock); in journal_submit_data_buffers()
233 if (!inverted_lock(journal, bh)) { in journal_submit_data_buffers()
235 spin_lock(&journal->j_list_lock); in journal_submit_data_buffers()
254 if (bufs == journal->j_wbufsize) { in journal_submit_data_buffers()
255 spin_unlock(&journal->j_list_lock); in journal_submit_data_buffers()
256 trace_jbd_do_submit_data(journal, in journal_submit_data_buffers()
278 if (need_resched() || spin_needbreak(&journal->j_list_lock)) { in journal_submit_data_buffers()
279 spin_unlock(&journal->j_list_lock); in journal_submit_data_buffers()
283 spin_unlock(&journal->j_list_lock); in journal_submit_data_buffers()
284 trace_jbd_do_submit_data(journal, commit_transaction); in journal_submit_data_buffers()
296 void journal_commit_transaction(journal_t *journal) in journal_commit_transaction() argument
300 struct buffer_head **wbuf = journal->j_wbuf; in journal_commit_transaction()
323 if (journal->j_flags & JFS_FLUSHED) { in journal_commit_transaction()
325 mutex_lock(&journal->j_checkpoint_mutex); in journal_commit_transaction()
332 journal_update_sb_log_tail(journal, journal->j_tail_sequence, in journal_commit_transaction()
333 journal->j_tail, WRITE_SYNC); in journal_commit_transaction()
334 mutex_unlock(&journal->j_checkpoint_mutex); in journal_commit_transaction()
339 J_ASSERT(journal->j_running_transaction != NULL); in journal_commit_transaction()
340 J_ASSERT(journal->j_committing_transaction == NULL); in journal_commit_transaction()
342 commit_transaction = journal->j_running_transaction; in journal_commit_transaction()
344 trace_jbd_start_commit(journal, commit_transaction); in journal_commit_transaction()
348 spin_lock(&journal->j_state_lock); in journal_commit_transaction()
352 trace_jbd_commit_locking(journal, commit_transaction); in journal_commit_transaction()
357 prepare_to_wait(&journal->j_wait_updates, &wait, in journal_commit_transaction()
361 spin_unlock(&journal->j_state_lock); in journal_commit_transaction()
363 spin_lock(&journal->j_state_lock); in journal_commit_transaction()
366 finish_wait(&journal->j_wait_updates, &wait); in journal_commit_transaction()
371 journal->j_max_transaction_buffers); in journal_commit_transaction()
404 journal_refile_buffer(journal, jh); in journal_commit_transaction()
412 spin_lock(&journal->j_list_lock); in journal_commit_transaction()
413 __journal_clean_checkpoint_list(journal); in journal_commit_transaction()
414 spin_unlock(&journal->j_list_lock); in journal_commit_transaction()
422 journal_clear_buffer_revoked_flags(journal); in journal_commit_transaction()
427 journal_switch_revoke_table(journal); in journal_commit_transaction()
429 trace_jbd_commit_flushing(journal, commit_transaction); in journal_commit_transaction()
431 journal->j_committing_transaction = commit_transaction; in journal_commit_transaction()
432 journal->j_running_transaction = NULL; in journal_commit_transaction()
434 commit_transaction->t_log_start = journal->j_head; in journal_commit_transaction()
435 wake_up(&journal->j_wait_transaction_locked); in journal_commit_transaction()
436 spin_unlock(&journal->j_state_lock); in journal_commit_transaction()
440 if (tid_geq(journal->j_commit_waited, commit_transaction->t_tid)) in journal_commit_transaction()
448 err = journal_submit_data_buffers(journal, commit_transaction, in journal_commit_transaction()
455 spin_lock(&journal->j_list_lock); in journal_commit_transaction()
463 spin_unlock(&journal->j_list_lock); in journal_commit_transaction()
465 spin_lock(&journal->j_list_lock); in journal_commit_transaction()
469 spin_unlock(&journal->j_list_lock); in journal_commit_transaction()
471 spin_lock(&journal->j_list_lock); in journal_commit_transaction()
480 if (!inverted_lock(journal, bh)) { in journal_commit_transaction()
482 spin_lock(&journal->j_list_lock); in journal_commit_transaction()
491 cond_resched_lock(&journal->j_list_lock); in journal_commit_transaction()
493 spin_unlock(&journal->j_list_lock); in journal_commit_transaction()
500 "on %s\n", bdevname(journal->j_fs_dev, b)); in journal_commit_transaction()
501 if (journal->j_flags & JFS_ABORT_ON_SYNCDATA_ERR) in journal_commit_transaction()
502 journal_abort(journal, err); in journal_commit_transaction()
508 journal_write_revoke_records(journal, commit_transaction, write_op); in journal_commit_transaction()
525 spin_lock(&journal->j_state_lock); in journal_commit_transaction()
527 spin_unlock(&journal->j_state_lock); in journal_commit_transaction()
529 trace_jbd_commit_logging(journal, commit_transaction); in journal_commit_transaction()
544 if (is_journal_aborted(journal)) { in journal_commit_transaction()
547 journal_refile_buffer(journal, jh); in journal_commit_transaction()
567 descriptor = journal_get_descriptor_buffer(journal); in journal_commit_transaction()
569 journal_abort(journal, -EIO); in journal_commit_transaction()
597 err = journal_next_log_block(journal, &blocknr); in journal_commit_transaction()
602 journal_abort(journal, err); in journal_commit_transaction()
651 memcpy (tagp, journal->j_uuid, 16); in journal_commit_transaction()
660 if (bufs == journal->j_wbufsize || in journal_commit_transaction()
738 journal_unfile_buffer(journal, jh); in journal_commit_transaction()
798 journal_unfile_buffer(journal, jh); in journal_commit_transaction()
805 journal_abort(journal, err); in journal_commit_transaction()
810 spin_lock(&journal->j_state_lock); in journal_commit_transaction()
813 spin_unlock(&journal->j_state_lock); in journal_commit_transaction()
815 if (journal_write_commit_record(journal, commit_transaction)) in journal_commit_transaction()
819 journal_abort(journal, err); in journal_commit_transaction()
840 spin_lock(&journal->j_list_lock); in journal_commit_transaction()
847 spin_unlock(&journal->j_list_lock); in journal_commit_transaction()
856 jh->b_transaction == journal->j_running_transaction); in journal_commit_transaction()
880 spin_lock(&journal->j_list_lock); in journal_commit_transaction()
927 if (is_journal_aborted(journal)) in journal_commit_transaction()
950 cond_resched_lock(&journal->j_list_lock); in journal_commit_transaction()
952 spin_unlock(&journal->j_list_lock); in journal_commit_transaction()
959 spin_lock(&journal->j_state_lock); in journal_commit_transaction()
960 spin_lock(&journal->j_list_lock); in journal_commit_transaction()
966 spin_unlock(&journal->j_list_lock); in journal_commit_transaction()
967 spin_unlock(&journal->j_state_lock); in journal_commit_transaction()
978 J_ASSERT(commit_transaction == journal->j_committing_transaction); in journal_commit_transaction()
979 journal->j_commit_sequence = commit_transaction->t_tid; in journal_commit_transaction()
980 journal->j_committing_transaction = NULL; in journal_commit_transaction()
987 if (likely(journal->j_average_commit_time)) in journal_commit_transaction()
988 journal->j_average_commit_time = (commit_time*3 + in journal_commit_transaction()
989 journal->j_average_commit_time) / 4; in journal_commit_transaction()
991 journal->j_average_commit_time = commit_time; in journal_commit_transaction()
993 spin_unlock(&journal->j_state_lock); in journal_commit_transaction()
997 __journal_drop_transaction(journal, commit_transaction); in journal_commit_transaction()
999 if (journal->j_checkpoint_transactions == NULL) { in journal_commit_transaction()
1000 journal->j_checkpoint_transactions = commit_transaction; in journal_commit_transaction()
1005 journal->j_checkpoint_transactions; in journal_commit_transaction()
1014 spin_unlock(&journal->j_list_lock); in journal_commit_transaction()
1016 trace_jbd_end_commit(journal, commit_transaction); in journal_commit_transaction()
1018 journal->j_commit_sequence, journal->j_tail_sequence); in journal_commit_transaction()
1020 wake_up(&journal->j_wait_done_commit); in journal_commit_transaction()