Lines Matching refs:journal

49 get_transaction(journal_t *journal, transaction_t *transaction)  in get_transaction()  argument
51 transaction->t_journal = journal; in get_transaction()
54 transaction->t_tid = journal->j_transaction_sequence++; in get_transaction()
55 transaction->t_expires = jiffies + journal->j_commit_interval; in get_transaction()
59 journal->j_commit_timer.expires = in get_transaction()
61 add_timer(&journal->j_commit_timer); in get_transaction()
63 J_ASSERT(journal->j_running_transaction == NULL); in get_transaction()
64 journal->j_running_transaction = transaction; in get_transaction()
84 static int start_this_handle(journal_t *journal, handle_t *handle) in start_this_handle() argument
92 if (nblocks > journal->j_max_transaction_buffers) { in start_this_handle()
95 journal->j_max_transaction_buffers); in start_this_handle()
101 if (!journal->j_running_transaction) { in start_this_handle()
118 spin_lock(&journal->j_state_lock); in start_this_handle()
120 if (is_journal_aborted(journal) || in start_this_handle()
121 (journal->j_errno != 0 && !(journal->j_flags & JFS_ACK_ERR))) { in start_this_handle()
122 spin_unlock(&journal->j_state_lock); in start_this_handle()
128 if (journal->j_barrier_count) { in start_this_handle()
129 spin_unlock(&journal->j_state_lock); in start_this_handle()
130 wait_event(journal->j_wait_transaction_locked, in start_this_handle()
131 journal->j_barrier_count == 0); in start_this_handle()
135 if (!journal->j_running_transaction) { in start_this_handle()
137 spin_unlock(&journal->j_state_lock); in start_this_handle()
140 get_transaction(journal, new_transaction); in start_this_handle()
144 transaction = journal->j_running_transaction; in start_this_handle()
153 prepare_to_wait(&journal->j_wait_transaction_locked, in start_this_handle()
155 spin_unlock(&journal->j_state_lock); in start_this_handle()
157 finish_wait(&journal->j_wait_transaction_locked, &wait); in start_this_handle()
169 if (needed > journal->j_max_transaction_buffers) { in start_this_handle()
179 prepare_to_wait(&journal->j_wait_transaction_locked, &wait, in start_this_handle()
181 __log_start_commit(journal, transaction->t_tid); in start_this_handle()
182 spin_unlock(&journal->j_state_lock); in start_this_handle()
184 finish_wait(&journal->j_wait_transaction_locked, &wait); in start_this_handle()
213 if (__log_space_left(journal) < jbd_space_needed(journal)) { in start_this_handle()
216 __log_wait_for_space(journal); in start_this_handle()
229 __log_space_left(journal)); in start_this_handle()
231 spin_unlock(&journal->j_state_lock); in start_this_handle()
271 handle_t *journal_start(journal_t *journal, int nblocks) in journal_start() argument
276 if (!journal) in journal_start()
280 J_ASSERT(handle->h_transaction->t_journal == journal); in journal_start()
291 err = start_this_handle(journal, handle); in journal_start()
323 journal_t *journal = transaction->t_journal; in journal_extend() local
333 spin_lock(&journal->j_state_lock); in journal_extend()
345 if (wanted > journal->j_max_transaction_buffers) { in journal_extend()
351 if (wanted > __log_space_left(journal)) { in journal_extend()
365 spin_unlock(&journal->j_state_lock); in journal_extend()
389 journal_t *journal = transaction->t_journal; in journal_restart() local
404 spin_lock(&journal->j_state_lock); in journal_restart()
410 wake_up(&journal->j_wait_updates); in journal_restart()
414 __log_start_commit(journal, transaction->t_tid); in journal_restart()
415 spin_unlock(&journal->j_state_lock); in journal_restart()
419 ret = start_this_handle(journal, handle); in journal_restart()
438 void journal_lock_updates(journal_t *journal) in journal_lock_updates() argument
444 wait_event(journal->j_wait_transaction_locked, in journal_lock_updates()
445 journal->j_barrier_count == 0); in journal_lock_updates()
447 spin_lock(&journal->j_state_lock); in journal_lock_updates()
452 if (journal->j_barrier_count > 0) { in journal_lock_updates()
453 spin_unlock(&journal->j_state_lock); in journal_lock_updates()
456 ++journal->j_barrier_count; in journal_lock_updates()
460 transaction_t *transaction = journal->j_running_transaction; in journal_lock_updates()
470 prepare_to_wait(&journal->j_wait_updates, &wait, in journal_lock_updates()
473 spin_unlock(&journal->j_state_lock); in journal_lock_updates()
475 finish_wait(&journal->j_wait_updates, &wait); in journal_lock_updates()
476 spin_lock(&journal->j_state_lock); in journal_lock_updates()
478 spin_unlock(&journal->j_state_lock); in journal_lock_updates()
487 void journal_unlock_updates (journal_t *journal) in journal_unlock_updates() argument
489 J_ASSERT(journal->j_barrier_count != 0); in journal_unlock_updates()
491 spin_lock(&journal->j_state_lock); in journal_unlock_updates()
492 --journal->j_barrier_count; in journal_unlock_updates()
493 spin_unlock(&journal->j_state_lock); in journal_unlock_updates()
494 wake_up(&journal->j_wait_transaction_locked); in journal_unlock_updates()
524 journal_t *journal; in do_get_write_access() local
533 journal = transaction->t_journal; in do_get_write_access()
568 journal->j_committing_transaction); in do_get_write_access()
624 journal->j_committing_transaction); in do_get_write_access()
705 spin_lock(&journal->j_list_lock); in do_get_write_access()
707 spin_unlock(&journal->j_list_lock); in do_get_write_access()
787 journal_t *journal = transaction->t_journal; in journal_get_create_access() local
806 spin_lock(&journal->j_list_lock); in journal_get_create_access()
809 (jh->b_transaction == journal->j_committing_transaction && in journal_get_create_access()
831 } else if (jh->b_transaction == journal->j_committing_transaction) { in journal_get_create_access()
838 spin_unlock(&journal->j_list_lock); in journal_get_create_access()
949 journal_t *journal = handle->h_transaction->t_journal; in journal_dirty_data() local
988 spin_lock(&journal->j_list_lock); in journal_dirty_data()
1001 journal->j_committing_transaction); in journal_dirty_data()
1051 spin_unlock(&journal->j_list_lock); in journal_dirty_data()
1056 spin_lock(&journal->j_list_lock); in journal_dirty_data()
1107 spin_unlock(&journal->j_list_lock); in journal_dirty_data()
1140 journal_t *journal = transaction->t_journal; in journal_dirty_metadata() local
1171 journal->j_running_transaction); in journal_dirty_metadata()
1186 journal->j_committing_transaction); in journal_dirty_metadata()
1197 spin_lock(&journal->j_list_lock); in journal_dirty_metadata()
1199 spin_unlock(&journal->j_list_lock); in journal_dirty_metadata()
1238 journal_t *journal = transaction->t_journal; in journal_forget() local
1247 spin_lock(&journal->j_list_lock); in journal_forget()
1306 spin_unlock(&journal->j_list_lock); in journal_forget()
1314 journal->j_committing_transaction)); in journal_forget()
1335 spin_unlock(&journal->j_list_lock); in journal_forget()
1365 journal_t *journal = transaction->t_journal; in journal_stop() local
1412 if (handle->h_sync && journal->j_last_sync_writer != pid) { in journal_stop()
1415 journal->j_last_sync_writer = pid; in journal_stop()
1417 spin_lock(&journal->j_state_lock); in journal_stop()
1418 commit_time = journal->j_average_commit_time; in journal_stop()
1419 spin_unlock(&journal->j_state_lock); in journal_stop()
1436 spin_lock(&journal->j_state_lock); in journal_stop()
1441 wake_up(&journal->j_wait_updates); in journal_stop()
1442 if (journal->j_barrier_count) in journal_stop()
1443 wake_up(&journal->j_wait_transaction_locked); in journal_stop()
1454 journal->j_max_transaction_buffers || in journal_stop()
1465 __log_start_commit(journal, transaction->t_tid); in journal_stop()
1466 spin_unlock(&journal->j_state_lock); in journal_stop()
1473 err = log_wait_commit(journal, tid); in journal_stop()
1476 spin_unlock(&journal->j_state_lock); in journal_stop()
1493 int journal_force_commit(journal_t *journal) in journal_force_commit() argument
1498 handle = journal_start(journal, 1); in journal_force_commit()
1637 void journal_unfile_buffer(journal_t *journal, struct journal_head *jh) in journal_unfile_buffer() argument
1644 spin_lock(&journal->j_list_lock); in journal_unfile_buffer()
1646 spin_unlock(&journal->j_list_lock); in journal_unfile_buffer()
1657 __journal_try_to_free_buffer(journal_t *journal, struct buffer_head *bh) in __journal_try_to_free_buffer() argument
1669 spin_lock(&journal->j_list_lock); in __journal_try_to_free_buffer()
1683 spin_unlock(&journal->j_list_lock); in __journal_try_to_free_buffer()
1726 int journal_try_to_free_buffers(journal_t *journal, in journal_try_to_free_buffers() argument
1750 __journal_try_to_free_buffer(journal, bh); in journal_try_to_free_buffers()
1845 static int journal_unmap_buffer(journal_t *journal, struct buffer_head *bh, in journal_unmap_buffer() argument
1864 spin_lock(&journal->j_state_lock); in journal_unmap_buffer()
1866 spin_lock(&journal->j_list_lock); in journal_unmap_buffer()
1915 if (journal->j_running_transaction) { in journal_unmap_buffer()
1921 journal->j_running_transaction); in journal_unmap_buffer()
1928 if (journal->j_committing_transaction) { in journal_unmap_buffer()
1931 journal->j_committing_transaction); in journal_unmap_buffer()
1940 } else if (transaction == journal->j_committing_transaction) { in journal_unmap_buffer()
1957 tid_t tid = journal->j_committing_transaction->t_tid; in journal_unmap_buffer()
1960 spin_unlock(&journal->j_list_lock); in journal_unmap_buffer()
1962 spin_unlock(&journal->j_state_lock); in journal_unmap_buffer()
1964 log_wait_commit(journal, tid); in journal_unmap_buffer()
1975 if (journal->j_running_transaction && buffer_jbddirty(bh)) in journal_unmap_buffer()
1976 jh->b_next_transaction = journal->j_running_transaction; in journal_unmap_buffer()
1978 spin_unlock(&journal->j_list_lock); in journal_unmap_buffer()
1980 spin_unlock(&journal->j_state_lock); in journal_unmap_buffer()
1989 J_ASSERT_JH(jh, transaction == journal->j_running_transaction); in journal_unmap_buffer()
2005 spin_unlock(&journal->j_list_lock); in journal_unmap_buffer()
2007 spin_unlock(&journal->j_state_lock); in journal_unmap_buffer()
2027 void journal_invalidatepage(journal_t *journal, in journal_invalidatepage() argument
2060 may_free &= journal_unmap_buffer(journal, bh, in journal_invalidatepage()
2225 void journal_refile_buffer(journal_t *journal, struct journal_head *jh) in journal_refile_buffer() argument
2232 spin_lock(&journal->j_list_lock); in journal_refile_buffer()
2235 spin_unlock(&journal->j_list_lock); in journal_refile_buffer()