• Home
  • Raw
  • Download

Lines Matching refs:journal

111 void __jbd2_log_wait_for_space(journal_t *journal)  in __jbd2_log_wait_for_space()  argument
116 nblocks = jbd2_space_needed(journal); in __jbd2_log_wait_for_space()
117 while (jbd2_log_space_left(journal) < nblocks) { in __jbd2_log_wait_for_space()
118 write_unlock(&journal->j_state_lock); in __jbd2_log_wait_for_space()
119 mutex_lock(&journal->j_checkpoint_mutex); in __jbd2_log_wait_for_space()
132 write_lock(&journal->j_state_lock); in __jbd2_log_wait_for_space()
133 if (journal->j_flags & JBD2_ABORT) { in __jbd2_log_wait_for_space()
134 mutex_unlock(&journal->j_checkpoint_mutex); in __jbd2_log_wait_for_space()
137 spin_lock(&journal->j_list_lock); in __jbd2_log_wait_for_space()
138 nblocks = jbd2_space_needed(journal); in __jbd2_log_wait_for_space()
139 space_left = jbd2_log_space_left(journal); in __jbd2_log_wait_for_space()
141 int chkpt = journal->j_checkpoint_transactions != NULL; in __jbd2_log_wait_for_space()
144 if (journal->j_committing_transaction) in __jbd2_log_wait_for_space()
145 tid = journal->j_committing_transaction->t_tid; in __jbd2_log_wait_for_space()
146 spin_unlock(&journal->j_list_lock); in __jbd2_log_wait_for_space()
147 write_unlock(&journal->j_state_lock); in __jbd2_log_wait_for_space()
149 jbd2_log_do_checkpoint(journal); in __jbd2_log_wait_for_space()
150 } else if (jbd2_cleanup_journal_tail(journal) == 0) { in __jbd2_log_wait_for_space()
159 mutex_unlock(&journal->j_checkpoint_mutex); in __jbd2_log_wait_for_space()
160 jbd2_log_wait_commit(journal, tid); in __jbd2_log_wait_for_space()
161 write_lock(&journal->j_state_lock); in __jbd2_log_wait_for_space()
169 journal->j_devname); in __jbd2_log_wait_for_space()
171 jbd2_journal_abort(journal, 0); in __jbd2_log_wait_for_space()
173 write_lock(&journal->j_state_lock); in __jbd2_log_wait_for_space()
175 spin_unlock(&journal->j_list_lock); in __jbd2_log_wait_for_space()
177 mutex_unlock(&journal->j_checkpoint_mutex); in __jbd2_log_wait_for_space()
182 __flush_batch(journal_t *journal, int *batch_count) in __flush_batch() argument
189 write_dirty_buffer(journal->j_chkpt_bhs[i], WRITE_SYNC); in __flush_batch()
193 struct buffer_head *bh = journal->j_chkpt_bhs[i]; in __flush_batch()
208 int jbd2_log_do_checkpoint(journal_t *journal) in jbd2_log_do_checkpoint() argument
223 result = jbd2_cleanup_journal_tail(journal); in jbd2_log_do_checkpoint()
224 trace_jbd2_checkpoint(journal, result); in jbd2_log_do_checkpoint()
234 spin_lock(&journal->j_list_lock); in jbd2_log_do_checkpoint()
235 if (!journal->j_checkpoint_transactions) in jbd2_log_do_checkpoint()
237 transaction = journal->j_checkpoint_transactions; in jbd2_log_do_checkpoint()
247 if (journal->j_checkpoint_transactions != transaction || in jbd2_log_do_checkpoint()
257 spin_unlock(&journal->j_list_lock); in jbd2_log_do_checkpoint()
270 spin_unlock(&journal->j_list_lock); in jbd2_log_do_checkpoint()
271 if (unlikely(journal->j_flags & JBD2_UNMOUNT)) in jbd2_log_do_checkpoint()
280 journal->j_devname, (unsigned long long) bh->b_blocknr); in jbd2_log_do_checkpoint()
282 jbd2_log_start_commit(journal, tid); in jbd2_log_do_checkpoint()
283 jbd2_log_wait_commit(journal, tid); in jbd2_log_do_checkpoint()
306 journal->j_chkpt_bhs[batch_count++] = bh; in jbd2_log_do_checkpoint()
311 spin_needbreak(&journal->j_list_lock)) in jbd2_log_do_checkpoint()
317 spin_unlock(&journal->j_list_lock); in jbd2_log_do_checkpoint()
320 __flush_batch(journal, &batch_count); in jbd2_log_do_checkpoint()
321 spin_lock(&journal->j_list_lock); in jbd2_log_do_checkpoint()
331 if (journal->j_checkpoint_transactions != transaction || in jbd2_log_do_checkpoint()
339 spin_unlock(&journal->j_list_lock); in jbd2_log_do_checkpoint()
345 spin_lock(&journal->j_list_lock); in jbd2_log_do_checkpoint()
360 spin_unlock(&journal->j_list_lock); in jbd2_log_do_checkpoint()
362 jbd2_journal_abort(journal, result); in jbd2_log_do_checkpoint()
364 result = jbd2_cleanup_journal_tail(journal); in jbd2_log_do_checkpoint()
387 int jbd2_cleanup_journal_tail(journal_t *journal) in jbd2_cleanup_journal_tail() argument
392 if (is_journal_aborted(journal)) in jbd2_cleanup_journal_tail()
395 if (!jbd2_journal_get_log_tail(journal, &first_tid, &blocknr)) in jbd2_cleanup_journal_tail()
407 if (journal->j_flags & JBD2_BARRIER) in jbd2_cleanup_journal_tail()
408 blkdev_issue_flush(journal->j_fs_dev, GFP_KERNEL, NULL); in jbd2_cleanup_journal_tail()
410 __jbd2_update_log_tail(journal, first_tid, blocknr); in jbd2_cleanup_journal_tail()
466 void __jbd2_journal_clean_checkpoint_list(journal_t *journal) in __jbd2_journal_clean_checkpoint_list() argument
471 transaction = journal->j_checkpoint_transactions; in __jbd2_journal_clean_checkpoint_list()
531 journal_t *journal; in __jbd2_journal_remove_checkpoint() local
540 journal = transaction->t_journal; in __jbd2_journal_remove_checkpoint()
569 trace_jbd2_checkpoint_stats(journal->j_fs_dev->bd_dev, in __jbd2_journal_remove_checkpoint()
572 __jbd2_journal_drop_transaction(journal, transaction); in __jbd2_journal_remove_checkpoint()
619 void __jbd2_journal_drop_transaction(journal_t *journal, transaction_t *transaction) in __jbd2_journal_drop_transaction() argument
621 assert_spin_locked(&journal->j_list_lock); in __jbd2_journal_drop_transaction()
625 if (journal->j_checkpoint_transactions == transaction) in __jbd2_journal_drop_transaction()
626 journal->j_checkpoint_transactions = in __jbd2_journal_drop_transaction()
628 if (journal->j_checkpoint_transactions == transaction) in __jbd2_journal_drop_transaction()
629 journal->j_checkpoint_transactions = NULL; in __jbd2_journal_drop_transaction()
639 J_ASSERT(journal->j_committing_transaction != transaction); in __jbd2_journal_drop_transaction()
640 J_ASSERT(journal->j_running_transaction != transaction); in __jbd2_journal_drop_transaction()
642 trace_jbd2_drop_transaction(journal, transaction); in __jbd2_journal_drop_transaction()