Searched refs:jh (Results 1 - 22 of 22) sorted by relevance

/linux-4.1.27/fs/jbd/
H A Dcheckpoint.c33 static inline void __buffer_unlink_first(struct journal_head *jh) __buffer_unlink_first() argument
35 transaction_t *transaction = jh->b_cp_transaction; __buffer_unlink_first()
37 jh->b_cpnext->b_cpprev = jh->b_cpprev; __buffer_unlink_first()
38 jh->b_cpprev->b_cpnext = jh->b_cpnext; __buffer_unlink_first()
39 if (transaction->t_checkpoint_list == jh) { __buffer_unlink_first()
40 transaction->t_checkpoint_list = jh->b_cpnext; __buffer_unlink_first()
41 if (transaction->t_checkpoint_list == jh) __buffer_unlink_first()
51 static inline void __buffer_unlink(struct journal_head *jh) __buffer_unlink() argument
53 transaction_t *transaction = jh->b_cp_transaction; __buffer_unlink()
55 __buffer_unlink_first(jh); __buffer_unlink()
56 if (transaction->t_checkpoint_io_list == jh) { __buffer_unlink()
57 transaction->t_checkpoint_io_list = jh->b_cpnext; __buffer_unlink()
58 if (transaction->t_checkpoint_io_list == jh) __buffer_unlink()
68 static inline void __buffer_relink_io(struct journal_head *jh) __buffer_relink_io() argument
70 transaction_t *transaction = jh->b_cp_transaction; __buffer_relink_io()
72 __buffer_unlink_first(jh); __buffer_relink_io()
75 jh->b_cpnext = jh->b_cpprev = jh; __buffer_relink_io()
77 jh->b_cpnext = transaction->t_checkpoint_io_list; __buffer_relink_io()
78 jh->b_cpprev = transaction->t_checkpoint_io_list->b_cpprev; __buffer_relink_io()
79 jh->b_cpprev->b_cpnext = jh; __buffer_relink_io()
80 jh->b_cpnext->b_cpprev = jh; __buffer_relink_io()
82 transaction->t_checkpoint_io_list = jh; __buffer_relink_io()
91 * Called under jbd_lock_bh_state(jh2bh(jh)), and drops it
93 static int __try_to_free_cp_buf(struct journal_head *jh) __try_to_free_cp_buf() argument
96 struct buffer_head *bh = jh2bh(jh); __try_to_free_cp_buf()
98 if (jh->b_jlist == BJ_None && !buffer_locked(bh) && __try_to_free_cp_buf()
105 JBUFFER_TRACE(jh, "remove from checkpoint list"); __try_to_free_cp_buf()
106 ret = __journal_remove_checkpoint(jh) + 1; __try_to_free_cp_buf()
209 struct journal_head *jh; __wait_cp_io() local
222 jh = transaction->t_checkpoint_io_list; __wait_cp_io()
223 bh = jh2bh(jh); __wait_cp_io()
247 released = __journal_remove_checkpoint(jh); __wait_cp_io()
285 * Called under jbd_lock_bh_state(jh2bh(jh)), and drops it
287 static int __process_buffer(journal_t *journal, struct journal_head *jh, __process_buffer() argument
290 struct buffer_head *bh = jh2bh(jh); __process_buffer()
302 } else if (jh->b_transaction != NULL) { __process_buffer()
303 transaction_t *t = jh->b_transaction; __process_buffer()
316 J_ASSERT_JH(jh, !buffer_jbddirty(bh)); __process_buffer()
318 __journal_remove_checkpoint(jh); __process_buffer()
335 __buffer_relink_io(jh); __process_buffer()
394 struct journal_head *jh; log_do_checkpoint() local
400 jh = transaction->t_checkpoint_list; log_do_checkpoint()
401 bh = jh2bh(jh); log_do_checkpoint()
407 retry = __process_buffer(journal, jh, bhs,&batch_count); log_do_checkpoint()
557 static int journal_clean_one_cp_list(struct journal_head *jh, int *released) journal_clean_one_cp_list() argument
560 struct journal_head *next_jh = jh; journal_clean_one_cp_list()
564 if (!jh) journal_clean_one_cp_list()
567 last_jh = jh->b_cpprev; journal_clean_one_cp_list()
569 jh = next_jh; journal_clean_one_cp_list()
570 next_jh = jh->b_cpnext; journal_clean_one_cp_list()
572 if (jbd_trylock_bh_state(jh2bh(jh))) { journal_clean_one_cp_list()
573 ret = __try_to_free_cp_buf(jh); journal_clean_one_cp_list()
590 } while (jh != last_jh); journal_clean_one_cp_list()
659 * The function can free jh and bh.
662 * This function is called with jbd_lock_bh_state(jh2bh(jh))
665 int __journal_remove_checkpoint(struct journal_head *jh) __journal_remove_checkpoint() argument
671 JBUFFER_TRACE(jh, "entry"); __journal_remove_checkpoint()
673 if ((transaction = jh->b_cp_transaction) == NULL) { __journal_remove_checkpoint()
674 JBUFFER_TRACE(jh, "not on transaction"); __journal_remove_checkpoint()
679 JBUFFER_TRACE(jh, "removing from transaction"); __journal_remove_checkpoint()
680 __buffer_unlink(jh); __journal_remove_checkpoint()
681 jh->b_cp_transaction = NULL; __journal_remove_checkpoint()
682 journal_put_journal_head(jh); __journal_remove_checkpoint()
721 void __journal_insert_checkpoint(struct journal_head *jh, __journal_insert_checkpoint() argument
724 JBUFFER_TRACE(jh, "entry"); __journal_insert_checkpoint()
725 J_ASSERT_JH(jh, buffer_dirty(jh2bh(jh)) || buffer_jbddirty(jh2bh(jh))); __journal_insert_checkpoint()
726 J_ASSERT_JH(jh, jh->b_cp_transaction == NULL); __journal_insert_checkpoint()
729 journal_grab_journal_head(jh2bh(jh)); __journal_insert_checkpoint()
730 jh->b_cp_transaction = transaction; __journal_insert_checkpoint()
733 jh->b_cpnext = jh->b_cpprev = jh; __journal_insert_checkpoint()
735 jh->b_cpnext = transaction->t_checkpoint_list; __journal_insert_checkpoint()
736 jh->b_cpprev = transaction->t_checkpoint_list->b_cpprev; __journal_insert_checkpoint()
737 jh->b_cpprev->b_cpnext = jh; __journal_insert_checkpoint()
738 jh->b_cpnext->b_cpprev = jh; __journal_insert_checkpoint()
740 transaction->t_checkpoint_list = jh; __journal_insert_checkpoint()
H A Dtransaction.c30 static void __journal_temp_unlink_buffer(struct journal_head *jh);
519 do_get_write_access(handle_t *handle, struct journal_head *jh, do_get_write_access() argument
535 jbd_debug(5, "journal_head %p, force_copy %d\n", jh, force_copy); do_get_write_access()
537 JBUFFER_TRACE(jh, "entry"); do_get_write_access()
539 bh = jh2bh(jh); do_get_write_access()
564 if (jh->b_transaction) { do_get_write_access()
565 J_ASSERT_JH(jh, do_get_write_access()
566 jh->b_transaction == transaction || do_get_write_access()
567 jh->b_transaction == do_get_write_access()
569 if (jh->b_next_transaction) do_get_write_access()
570 J_ASSERT_JH(jh, jh->b_next_transaction == do_get_write_access()
579 JBUFFER_TRACE(jh, "Journalling dirty buffer"); do_get_write_access()
597 if (jh->b_transaction == transaction || do_get_write_access()
598 jh->b_next_transaction == transaction) do_get_write_access()
605 jh->b_modified = 0; do_get_write_access()
611 if (jh->b_frozen_data) { do_get_write_access()
612 JBUFFER_TRACE(jh, "has frozen data"); do_get_write_access()
613 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); do_get_write_access()
614 jh->b_next_transaction = transaction; do_get_write_access()
620 if (jh->b_transaction && jh->b_transaction != transaction) { do_get_write_access()
621 JBUFFER_TRACE(jh, "owned by older transaction"); do_get_write_access()
622 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); do_get_write_access()
623 J_ASSERT_JH(jh, jh->b_transaction == do_get_write_access()
635 if (jh->b_jlist == BJ_Shadow) { do_get_write_access()
641 JBUFFER_TRACE(jh, "on shadow: sleep"); do_get_write_access()
647 if (jh->b_jlist != BJ_Shadow) do_get_write_access()
669 if (jh->b_jlist != BJ_Forget || force_copy) { do_get_write_access()
670 JBUFFER_TRACE(jh, "generate frozen data"); do_get_write_access()
672 JBUFFER_TRACE(jh, "allocate memory for buffer"); do_get_write_access()
675 jbd_alloc(jh2bh(jh)->b_size, do_get_write_access()
681 JBUFFER_TRACE(jh, "oom!"); do_get_write_access()
688 jh->b_frozen_data = frozen_buffer; do_get_write_access()
692 jh->b_next_transaction = transaction; do_get_write_access()
701 if (!jh->b_transaction) { do_get_write_access()
702 JBUFFER_TRACE(jh, "no transaction"); do_get_write_access()
703 J_ASSERT_JH(jh, !jh->b_next_transaction); do_get_write_access()
704 JBUFFER_TRACE(jh, "file as BJ_Reserved"); do_get_write_access()
706 __journal_file_buffer(jh, transaction, BJ_Reserved); do_get_write_access()
716 J_EXPECT_JH(jh, buffer_uptodate(jh2bh(jh)), do_get_write_access()
718 page = jh2bh(jh)->b_page; do_get_write_access()
719 offset = offset_in_page(jh2bh(jh)->b_data); do_get_write_access()
721 memcpy(jh->b_frozen_data, source+offset, jh2bh(jh)->b_size); do_get_write_access()
730 journal_cancel_revoke(handle, jh); do_get_write_access()
736 JBUFFER_TRACE(jh, "exit"); do_get_write_access()
753 struct journal_head *jh = journal_add_journal_head(bh); journal_get_write_access() local
759 rc = do_get_write_access(handle, jh, 0); journal_get_write_access()
760 journal_put_journal_head(jh); journal_get_write_access()
788 struct journal_head *jh = journal_add_journal_head(bh); journal_get_create_access() local
791 jbd_debug(5, "journal_head %p\n", jh); journal_get_create_access()
797 JBUFFER_TRACE(jh, "entry"); journal_get_create_access()
807 J_ASSERT_JH(jh, (jh->b_transaction == transaction || journal_get_create_access()
808 jh->b_transaction == NULL || journal_get_create_access()
809 (jh->b_transaction == journal->j_committing_transaction && journal_get_create_access()
810 jh->b_jlist == BJ_Forget))); journal_get_create_access()
812 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); journal_get_create_access()
813 J_ASSERT_JH(jh, buffer_locked(jh2bh(jh))); journal_get_create_access()
815 if (jh->b_transaction == NULL) { journal_get_create_access()
824 clear_buffer_dirty(jh2bh(jh)); journal_get_create_access()
827 jh->b_modified = 0; journal_get_create_access()
829 JBUFFER_TRACE(jh, "file as BJ_Reserved"); journal_get_create_access()
830 __journal_file_buffer(jh, transaction, BJ_Reserved); journal_get_create_access()
831 } else if (jh->b_transaction == journal->j_committing_transaction) { journal_get_create_access()
833 jh->b_modified = 0; journal_get_create_access()
835 JBUFFER_TRACE(jh, "set next transaction"); journal_get_create_access()
836 jh->b_next_transaction = transaction; journal_get_create_access()
848 JBUFFER_TRACE(jh, "cancelling revoke"); journal_get_create_access()
849 journal_cancel_revoke(handle, jh); journal_get_create_access()
851 journal_put_journal_head(jh); journal_get_create_access()
883 struct journal_head *jh = journal_add_journal_head(bh); journal_get_undo_access() local
886 JBUFFER_TRACE(jh, "entry"); journal_get_undo_access()
893 err = do_get_write_access(handle, jh, 1); journal_get_undo_access()
898 if (!jh->b_committed_data) { journal_get_undo_access()
899 committed_data = jbd_alloc(jh2bh(jh)->b_size, GFP_NOFS); journal_get_undo_access()
909 if (!jh->b_committed_data) { journal_get_undo_access()
912 JBUFFER_TRACE(jh, "generate b_committed data"); journal_get_undo_access()
918 jh->b_committed_data = committed_data; journal_get_undo_access()
920 memcpy(jh->b_committed_data, bh->b_data, bh->b_size); journal_get_undo_access()
924 journal_put_journal_head(jh); journal_get_undo_access()
951 struct journal_head *jh; journal_dirty_data() local
957 jh = journal_add_journal_head(bh); journal_dirty_data()
958 JBUFFER_TRACE(jh, "entry"); journal_dirty_data()
964 jbd_debug(4, "jh: %p, tid:%d\n", jh, handle->h_transaction->t_tid); journal_dirty_data()
992 JBUFFER_TRACE(jh, "unmapped buffer, bailing out"); journal_dirty_data()
996 if (jh->b_transaction) { journal_dirty_data()
997 JBUFFER_TRACE(jh, "has transaction"); journal_dirty_data()
998 if (jh->b_transaction != handle->h_transaction) { journal_dirty_data()
999 JBUFFER_TRACE(jh, "belongs to older transaction"); journal_dirty_data()
1000 J_ASSERT_JH(jh, jh->b_transaction == journal_dirty_data()
1020 //J_ASSERT_JH(jh, jh->b_next_transaction == NULL); journal_dirty_data()
1036 if (jh->b_jlist != BJ_None && journal_dirty_data()
1037 jh->b_jlist != BJ_SyncData && journal_dirty_data()
1038 jh->b_jlist != BJ_Locked) { journal_dirty_data()
1039 JBUFFER_TRACE(jh, "Not stealing"); journal_dirty_data()
1059 JBUFFER_TRACE(jh, "buffer got unmapped"); journal_dirty_data()
1076 if (jh->b_transaction != NULL && journal_dirty_data()
1077 jh->b_transaction != handle->h_transaction) { journal_dirty_data()
1078 JBUFFER_TRACE(jh, "unfile from commit"); journal_dirty_data()
1079 __journal_temp_unlink_buffer(jh); journal_dirty_data()
1084 jh->b_transaction = handle->h_transaction; journal_dirty_data()
1095 if (jh->b_jlist != BJ_SyncData && jh->b_jlist != BJ_Locked) { journal_dirty_data()
1096 JBUFFER_TRACE(jh, "not on correct data list: unfile"); journal_dirty_data()
1097 J_ASSERT_JH(jh, jh->b_jlist != BJ_Shadow); journal_dirty_data()
1098 JBUFFER_TRACE(jh, "file as data"); journal_dirty_data()
1099 __journal_file_buffer(jh, handle->h_transaction, journal_dirty_data()
1103 JBUFFER_TRACE(jh, "not on a transaction"); journal_dirty_data()
1104 __journal_file_buffer(jh, handle->h_transaction, BJ_SyncData); journal_dirty_data()
1113 JBUFFER_TRACE(jh, "exit"); journal_dirty_data()
1114 journal_put_journal_head(jh); journal_dirty_data()
1141 struct journal_head *jh = bh2jh(bh); journal_dirty_metadata() local
1143 jbd_debug(5, "journal_head %p\n", jh); journal_dirty_metadata()
1144 JBUFFER_TRACE(jh, "entry"); journal_dirty_metadata()
1150 if (jh->b_modified == 0) { journal_dirty_metadata()
1156 jh->b_modified = 1; journal_dirty_metadata()
1157 J_ASSERT_JH(jh, handle->h_buffer_credits > 0); journal_dirty_metadata()
1168 if (jh->b_transaction == transaction && jh->b_jlist == BJ_Metadata) { journal_dirty_metadata()
1169 JBUFFER_TRACE(jh, "fastpath"); journal_dirty_metadata()
1170 J_ASSERT_JH(jh, jh->b_transaction == journal_dirty_metadata()
1183 if (jh->b_transaction != transaction) { journal_dirty_metadata()
1184 JBUFFER_TRACE(jh, "already on other transaction"); journal_dirty_metadata()
1185 J_ASSERT_JH(jh, jh->b_transaction == journal_dirty_metadata()
1187 J_ASSERT_JH(jh, jh->b_next_transaction == transaction); journal_dirty_metadata()
1194 J_ASSERT_JH(jh, jh->b_frozen_data == NULL); journal_dirty_metadata()
1196 JBUFFER_TRACE(jh, "file as BJ_Metadata"); journal_dirty_metadata()
1198 __journal_file_buffer(jh, handle->h_transaction, BJ_Metadata); journal_dirty_metadata()
1203 JBUFFER_TRACE(jh, "exit"); journal_dirty_metadata()
1239 struct journal_head *jh; journal_forget() local
1251 jh = bh2jh(bh); journal_forget()
1255 if (!J_EXPECT_JH(jh, !jh->b_committed_data, journal_forget()
1262 was_modified = jh->b_modified; journal_forget()
1268 jh->b_modified = 0; journal_forget()
1270 if (jh->b_transaction == handle->h_transaction) { journal_forget()
1271 J_ASSERT_JH(jh, !jh->b_frozen_data); journal_forget()
1279 JBUFFER_TRACE(jh, "belongs to current transaction: unfile"); journal_forget()
1300 if (jh->b_cp_transaction) { journal_forget()
1301 __journal_temp_unlink_buffer(jh); journal_forget()
1302 __journal_file_buffer(jh, transaction, BJ_Forget); journal_forget()
1304 __journal_unfile_buffer(jh); journal_forget()
1312 } else if (jh->b_transaction) { journal_forget()
1313 J_ASSERT_JH(jh, (jh->b_transaction == journal_forget()
1317 JBUFFER_TRACE(jh, "belongs to older transaction"); journal_forget()
1321 if (jh->b_next_transaction) { journal_forget()
1322 J_ASSERT(jh->b_next_transaction == transaction); journal_forget()
1323 jh->b_next_transaction = NULL; journal_forget()
1521 * jbd_lock_bh_state(jh2bh(jh)) is held.
1525 __blist_add_buffer(struct journal_head **list, struct journal_head *jh) __blist_add_buffer() argument
1528 jh->b_tnext = jh->b_tprev = jh; __blist_add_buffer()
1529 *list = jh; __blist_add_buffer()
1533 jh->b_tprev = last; __blist_add_buffer()
1534 jh->b_tnext = first; __blist_add_buffer()
1535 last->b_tnext = first->b_tprev = jh; __blist_add_buffer()
1545 * jbd_lock_bh_state(jh2bh(jh)) is held.
1549 __blist_del_buffer(struct journal_head **list, struct journal_head *jh) __blist_del_buffer() argument
1551 if (*list == jh) { __blist_del_buffer()
1552 *list = jh->b_tnext; __blist_del_buffer()
1553 if (*list == jh) __blist_del_buffer()
1556 jh->b_tprev->b_tnext = jh->b_tnext; __blist_del_buffer()
1557 jh->b_tnext->b_tprev = jh->b_tprev; __blist_del_buffer()
1571 static void __journal_temp_unlink_buffer(struct journal_head *jh) __journal_temp_unlink_buffer() argument
1575 struct buffer_head *bh = jh2bh(jh); __journal_temp_unlink_buffer()
1577 J_ASSERT_JH(jh, jbd_is_locked_bh_state(bh)); __journal_temp_unlink_buffer()
1578 transaction = jh->b_transaction; __journal_temp_unlink_buffer()
1582 J_ASSERT_JH(jh, jh->b_jlist < BJ_Types); __journal_temp_unlink_buffer()
1583 if (jh->b_jlist != BJ_None) __journal_temp_unlink_buffer()
1584 J_ASSERT_JH(jh, transaction != NULL); __journal_temp_unlink_buffer()
1586 switch (jh->b_jlist) { __journal_temp_unlink_buffer()
1594 J_ASSERT_JH(jh, transaction->t_nr_buffers >= 0); __journal_temp_unlink_buffer()
1617 __blist_del_buffer(list, jh); __journal_temp_unlink_buffer()
1618 jh->b_jlist = BJ_None; __journal_temp_unlink_buffer()
1628 * jh and bh may be already freed when this function returns.
1630 void __journal_unfile_buffer(struct journal_head *jh) __journal_unfile_buffer() argument
1632 __journal_temp_unlink_buffer(jh); __journal_unfile_buffer()
1633 jh->b_transaction = NULL; __journal_unfile_buffer()
1634 journal_put_journal_head(jh); __journal_unfile_buffer()
1637 void journal_unfile_buffer(journal_t *journal, struct journal_head *jh) journal_unfile_buffer() argument
1639 struct buffer_head *bh = jh2bh(jh); journal_unfile_buffer()
1645 __journal_unfile_buffer(jh); journal_unfile_buffer()
1659 struct journal_head *jh; __journal_try_to_free_buffer() local
1661 jh = bh2jh(bh); __journal_try_to_free_buffer()
1666 if (jh->b_next_transaction != NULL) __journal_try_to_free_buffer()
1670 if (jh->b_transaction != NULL && jh->b_cp_transaction == NULL) { __journal_try_to_free_buffer()
1671 if (jh->b_jlist == BJ_SyncData || jh->b_jlist == BJ_Locked) { __journal_try_to_free_buffer()
1673 JBUFFER_TRACE(jh, "release data"); __journal_try_to_free_buffer()
1674 __journal_unfile_buffer(jh); __journal_try_to_free_buffer()
1676 } else if (jh->b_cp_transaction != NULL && jh->b_transaction == NULL) { __journal_try_to_free_buffer()
1678 if (jh->b_jlist == BJ_None) { __journal_try_to_free_buffer()
1679 JBUFFER_TRACE(jh, "remove from checkpoint list"); __journal_try_to_free_buffer()
1680 __journal_remove_checkpoint(jh); __journal_try_to_free_buffer()
1738 struct journal_head *jh; journal_try_to_free_buffers() local
1745 jh = journal_grab_journal_head(bh); journal_try_to_free_buffers()
1746 if (!jh) journal_try_to_free_buffers()
1751 journal_put_journal_head(jh); journal_try_to_free_buffers()
1775 static int __dispose_buffer(struct journal_head *jh, transaction_t *transaction) __dispose_buffer() argument
1778 struct buffer_head *bh = jh2bh(jh); __dispose_buffer()
1780 if (jh->b_cp_transaction) { __dispose_buffer()
1781 JBUFFER_TRACE(jh, "on running+cp transaction"); __dispose_buffer()
1782 __journal_temp_unlink_buffer(jh); __dispose_buffer()
1789 __journal_file_buffer(jh, transaction, BJ_Forget); __dispose_buffer()
1792 JBUFFER_TRACE(jh, "on running transaction"); __dispose_buffer()
1793 __journal_unfile_buffer(jh); __dispose_buffer()
1849 struct journal_head *jh; journal_unmap_buffer() local
1868 jh = journal_grab_journal_head(bh); journal_unmap_buffer()
1869 if (!jh) journal_unmap_buffer()
1895 transaction = jh->b_transaction; journal_unmap_buffer()
1901 if (!jh->b_cp_transaction) { journal_unmap_buffer()
1902 JBUFFER_TRACE(jh, "not on any transaction: zap"); journal_unmap_buffer()
1919 JBUFFER_TRACE(jh, "checkpointed: add to BJ_Forget"); journal_unmap_buffer()
1920 may_free = __dispose_buffer(jh, journal_unmap_buffer()
1929 JBUFFER_TRACE(jh, "give to committing trans"); journal_unmap_buffer()
1930 may_free = __dispose_buffer(jh, journal_unmap_buffer()
1941 JBUFFER_TRACE(jh, "on committing transaction"); journal_unmap_buffer()
1942 if (jh->b_jlist == BJ_Locked) { journal_unmap_buffer()
1948 may_free = __dispose_buffer(jh, transaction); journal_unmap_buffer()
1959 journal_put_journal_head(jh); journal_unmap_buffer()
1976 jh->b_next_transaction = journal->j_running_transaction; journal_unmap_buffer()
1977 journal_put_journal_head(jh); journal_unmap_buffer()
1989 J_ASSERT_JH(jh, transaction == journal->j_running_transaction); journal_unmap_buffer()
1990 JBUFFER_TRACE(jh, "on running transaction"); journal_unmap_buffer()
1991 may_free = __dispose_buffer(jh, transaction); journal_unmap_buffer()
2002 jh->b_modified = 0; journal_unmap_buffer()
2003 journal_put_journal_head(jh); journal_unmap_buffer()
2078 void __journal_file_buffer(struct journal_head *jh, __journal_file_buffer() argument
2083 struct buffer_head *bh = jh2bh(jh); __journal_file_buffer()
2085 J_ASSERT_JH(jh, jbd_is_locked_bh_state(bh)); __journal_file_buffer()
2088 J_ASSERT_JH(jh, jh->b_jlist < BJ_Types); __journal_file_buffer()
2089 J_ASSERT_JH(jh, jh->b_transaction == transaction || __journal_file_buffer()
2090 jh->b_transaction == NULL); __journal_file_buffer()
2092 if (jh->b_transaction && jh->b_jlist == jlist) __journal_file_buffer()
2111 if (jh->b_transaction) __journal_file_buffer()
2112 __journal_temp_unlink_buffer(jh); __journal_file_buffer()
2115 jh->b_transaction = transaction; __journal_file_buffer()
2119 J_ASSERT_JH(jh, !jh->b_committed_data); __journal_file_buffer()
2120 J_ASSERT_JH(jh, !jh->b_frozen_data); __journal_file_buffer()
2149 __blist_add_buffer(list, jh); __journal_file_buffer()
2150 jh->b_jlist = jlist; __journal_file_buffer()
2156 void journal_file_buffer(struct journal_head *jh, journal_file_buffer() argument
2159 jbd_lock_bh_state(jh2bh(jh)); journal_file_buffer()
2161 __journal_file_buffer(jh, transaction, jlist); journal_file_buffer()
2163 jbd_unlock_bh_state(jh2bh(jh)); journal_file_buffer()
2173 * Called under jbd_lock_bh_state(jh2bh(jh))
2175 * jh and bh may be already free when this function returns
2177 void __journal_refile_buffer(struct journal_head *jh) __journal_refile_buffer() argument
2180 struct buffer_head *bh = jh2bh(jh); __journal_refile_buffer()
2182 J_ASSERT_JH(jh, jbd_is_locked_bh_state(bh)); __journal_refile_buffer()
2183 if (jh->b_transaction) __journal_refile_buffer()
2184 assert_spin_locked(&jh->b_transaction->t_journal->j_list_lock); __journal_refile_buffer()
2187 if (jh->b_next_transaction == NULL) { __journal_refile_buffer()
2188 __journal_unfile_buffer(jh); __journal_refile_buffer()
2198 __journal_temp_unlink_buffer(jh); __journal_refile_buffer()
2201 * our jh reference and thus __journal_file_buffer() must not take a __journal_refile_buffer()
2204 jh->b_transaction = jh->b_next_transaction; __journal_refile_buffer()
2205 jh->b_next_transaction = NULL; __journal_refile_buffer()
2208 else if (jh->b_modified) __journal_refile_buffer()
2212 __journal_file_buffer(jh, jh->b_transaction, jlist); __journal_refile_buffer()
2213 J_ASSERT_JH(jh, jh->b_transaction->t_state == T_RUNNING); __journal_refile_buffer()
2223 * The jh and bh may be freed by this call.
2225 void journal_refile_buffer(journal_t *journal, struct journal_head *jh) journal_refile_buffer() argument
2227 struct buffer_head *bh = jh2bh(jh); journal_refile_buffer()
2233 __journal_refile_buffer(jh); journal_refile_buffer()
H A Dcommit.c186 struct journal_head *jh; journal_submit_data_buffers() local
206 jh = commit_transaction->t_sync_datalist; journal_submit_data_buffers()
207 bh = jh2bh(jh); journal_submit_data_buffers()
238 if (!buffer_jbd(bh) || bh2jh(bh) != jh journal_submit_data_buffers()
239 || jh->b_transaction != commit_transaction journal_submit_data_buffers()
240 || jh->b_jlist != BJ_SyncData) { journal_submit_data_buffers()
251 __journal_file_buffer(jh, commit_transaction, journal_submit_data_buffers()
263 __journal_file_buffer(jh, commit_transaction, journal_submit_data_buffers()
271 __journal_unfile_buffer(jh); journal_submit_data_buffers()
299 struct journal_head *jh, *new_jh, *descriptor; journal_commit_transaction() local
390 jh = commit_transaction->t_reserved_list; journal_commit_transaction()
391 JBUFFER_TRACE(jh, "reserved, unused: refile"); journal_commit_transaction()
396 if (jh->b_committed_data) { journal_commit_transaction()
397 struct buffer_head *bh = jh2bh(jh); journal_commit_transaction()
400 jbd_free(jh->b_committed_data, bh->b_size); journal_commit_transaction()
401 jh->b_committed_data = NULL; journal_commit_transaction()
404 journal_refile_buffer(journal, jh); journal_commit_transaction()
459 jh = commit_transaction->t_locked_list->b_tprev; journal_commit_transaction()
460 bh = jh2bh(jh); journal_commit_transaction()
485 if (buffer_jbd(bh) && bh2jh(bh) == jh && journal_commit_transaction()
486 jh->b_transaction == commit_transaction && journal_commit_transaction()
487 jh->b_jlist == BJ_Locked) journal_commit_transaction()
488 __journal_unfile_buffer(jh); journal_commit_transaction()
539 jh = commit_transaction->t_buffers; journal_commit_transaction()
545 clear_buffer_jbddirty(jh2bh(jh)); journal_commit_transaction()
546 JBUFFER_TRACE(jh, "journal is aborting: refile"); journal_commit_transaction()
547 journal_refile_buffer(journal, jh); journal_commit_transaction()
616 get_bh(jh2bh(jh)); journal_commit_transaction()
622 set_buffer_jwrite(jh2bh(jh)); journal_commit_transaction()
629 JBUFFER_TRACE(jh, "ph3: write metadata"); journal_commit_transaction()
631 jh, &new_jh, blocknr); journal_commit_transaction()
645 tag->t_blocknr = cpu_to_be32(jh2bh(jh)->b_blocknr); journal_commit_transaction()
723 jh = commit_transaction->t_iobuf_list->b_tprev; journal_commit_transaction()
724 bh = jh2bh(jh); journal_commit_transaction()
737 JBUFFER_TRACE(jh, "ph4: unfile after journal write"); journal_commit_transaction()
738 journal_unfile_buffer(journal, jh); journal_commit_transaction()
745 journal_put_journal_head(jh); journal_commit_transaction()
752 jh = commit_transaction->t_shadow_list->b_tprev; journal_commit_transaction()
753 bh = jh2bh(jh); journal_commit_transaction()
761 JBUFFER_TRACE(jh, "file as BJ_Forget"); journal_commit_transaction()
762 journal_file_buffer(jh, commit_transaction, BJ_Forget); journal_commit_transaction()
771 JBUFFER_TRACE(jh, "brelse shadowed buffer"); journal_commit_transaction()
784 jh = commit_transaction->t_log_list->b_tprev; journal_commit_transaction()
785 bh = jh2bh(jh); journal_commit_transaction()
798 journal_unfile_buffer(journal, jh); journal_commit_transaction()
799 journal_put_journal_head(jh); journal_commit_transaction()
846 jh = commit_transaction->t_forget; journal_commit_transaction()
848 bh = jh2bh(jh); journal_commit_transaction()
855 J_ASSERT_JH(jh, jh->b_transaction == commit_transaction || journal_commit_transaction()
856 jh->b_transaction == journal->j_running_transaction); journal_commit_transaction()
868 if (jh->b_committed_data) { journal_commit_transaction()
869 jbd_free(jh->b_committed_data, bh->b_size); journal_commit_transaction()
870 jh->b_committed_data = NULL; journal_commit_transaction()
871 if (jh->b_frozen_data) { journal_commit_transaction()
872 jh->b_committed_data = jh->b_frozen_data; journal_commit_transaction()
873 jh->b_frozen_data = NULL; journal_commit_transaction()
875 } else if (jh->b_frozen_data) { journal_commit_transaction()
876 jbd_free(jh->b_frozen_data, bh->b_size); journal_commit_transaction()
877 jh->b_frozen_data = NULL; journal_commit_transaction()
881 cp_transaction = jh->b_cp_transaction; journal_commit_transaction()
883 JBUFFER_TRACE(jh, "remove from old cp transaction"); journal_commit_transaction()
884 __journal_remove_checkpoint(jh); journal_commit_transaction()
913 jh->b_modified = 0; journal_commit_transaction()
914 if (!jh->b_next_transaction) { journal_commit_transaction()
925 JBUFFER_TRACE(jh, "add to new checkpointing trans"); journal_commit_transaction()
926 __journal_insert_checkpoint(jh, commit_transaction); journal_commit_transaction()
940 if (!jh->b_next_transaction) journal_commit_transaction()
943 JBUFFER_TRACE(jh, "refile or unfile freed buffer"); journal_commit_transaction()
944 __journal_refile_buffer(jh); journal_commit_transaction()
H A Djournal.c1886 static void journal_free_journal_head(struct journal_head *jh) journal_free_journal_head() argument
1890 memset(jh, JBD_POISON_FREE, sizeof(*jh)); journal_free_journal_head()
1892 kmem_cache_free(journal_head_cache, jh); journal_free_journal_head()
1922 * struct journal_head *jh = journal_add_journal_head(bh);
1926 * jh->b_transaction = xxx;
1928 * journal_put_journal_head(jh);
1938 struct journal_head *jh; journal_add_journal_head() local
1947 jh = bh2jh(bh); journal_add_journal_head()
1958 jh = new_jh; journal_add_journal_head()
1961 bh->b_private = jh; journal_add_journal_head()
1962 jh->b_bh = bh; journal_add_journal_head()
1966 jh->b_jcount++; journal_add_journal_head()
1979 struct journal_head *jh = NULL; journal_grab_journal_head() local
1983 jh = bh2jh(bh); journal_grab_journal_head()
1984 jh->b_jcount++; journal_grab_journal_head()
1987 return jh; journal_grab_journal_head()
1992 struct journal_head *jh = bh2jh(bh); __journal_remove_journal_head() local
1994 J_ASSERT_JH(jh, jh->b_jcount >= 0); __journal_remove_journal_head()
1995 J_ASSERT_JH(jh, jh->b_transaction == NULL); __journal_remove_journal_head()
1996 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); __journal_remove_journal_head()
1997 J_ASSERT_JH(jh, jh->b_cp_transaction == NULL); __journal_remove_journal_head()
1998 J_ASSERT_JH(jh, jh->b_jlist == BJ_None); __journal_remove_journal_head()
2000 J_ASSERT_BH(bh, jh2bh(jh) == bh); __journal_remove_journal_head()
2002 if (jh->b_frozen_data) { __journal_remove_journal_head()
2004 jbd_free(jh->b_frozen_data, bh->b_size); __journal_remove_journal_head()
2006 if (jh->b_committed_data) { __journal_remove_journal_head()
2008 jbd_free(jh->b_committed_data, bh->b_size); __journal_remove_journal_head()
2011 jh->b_bh = NULL; /* debug, really */ __journal_remove_journal_head()
2013 journal_free_journal_head(jh); __journal_remove_journal_head()
2020 void journal_put_journal_head(struct journal_head *jh) journal_put_journal_head() argument
2022 struct buffer_head *bh = jh2bh(jh); journal_put_journal_head()
2025 J_ASSERT_JH(jh, jh->b_jcount > 0); journal_put_journal_head()
2026 --jh->b_jcount; journal_put_journal_head()
2027 if (!jh->b_jcount) { journal_put_journal_head()
H A Drevoke.c423 int journal_cancel_revoke(handle_t *handle, struct journal_head *jh) journal_cancel_revoke() argument
429 struct buffer_head *bh = jh2bh(jh); journal_cancel_revoke()
431 jbd_debug(4, "journal_head %p, cancelling revoke\n", jh); journal_cancel_revoke()
460 J_ASSERT_JH(jh, record == NULL); journal_cancel_revoke()
/linux-4.1.27/fs/jbd2/
H A Dcheckpoint.c33 static inline void __buffer_unlink_first(struct journal_head *jh) __buffer_unlink_first() argument
35 transaction_t *transaction = jh->b_cp_transaction; __buffer_unlink_first()
37 jh->b_cpnext->b_cpprev = jh->b_cpprev; __buffer_unlink_first()
38 jh->b_cpprev->b_cpnext = jh->b_cpnext; __buffer_unlink_first()
39 if (transaction->t_checkpoint_list == jh) { __buffer_unlink_first()
40 transaction->t_checkpoint_list = jh->b_cpnext; __buffer_unlink_first()
41 if (transaction->t_checkpoint_list == jh) __buffer_unlink_first()
51 static inline void __buffer_unlink(struct journal_head *jh) __buffer_unlink() argument
53 transaction_t *transaction = jh->b_cp_transaction; __buffer_unlink()
55 __buffer_unlink_first(jh); __buffer_unlink()
56 if (transaction->t_checkpoint_io_list == jh) { __buffer_unlink()
57 transaction->t_checkpoint_io_list = jh->b_cpnext; __buffer_unlink()
58 if (transaction->t_checkpoint_io_list == jh) __buffer_unlink()
68 static inline void __buffer_relink_io(struct journal_head *jh) __buffer_relink_io() argument
70 transaction_t *transaction = jh->b_cp_transaction; __buffer_relink_io()
72 __buffer_unlink_first(jh); __buffer_relink_io()
75 jh->b_cpnext = jh->b_cpprev = jh; __buffer_relink_io()
77 jh->b_cpnext = transaction->t_checkpoint_io_list; __buffer_relink_io()
78 jh->b_cpprev = transaction->t_checkpoint_io_list->b_cpprev; __buffer_relink_io()
79 jh->b_cpprev->b_cpnext = jh; __buffer_relink_io()
80 jh->b_cpnext->b_cpprev = jh; __buffer_relink_io()
82 transaction->t_checkpoint_io_list = jh; __buffer_relink_io()
92 static int __try_to_free_cp_buf(struct journal_head *jh) __try_to_free_cp_buf() argument
95 struct buffer_head *bh = jh2bh(jh); __try_to_free_cp_buf()
97 if (jh->b_transaction == NULL && !buffer_locked(bh) && __try_to_free_cp_buf()
99 JBUFFER_TRACE(jh, "remove from checkpoint list"); __try_to_free_cp_buf()
100 ret = __jbd2_journal_remove_checkpoint(jh) + 1; __try_to_free_cp_buf()
210 struct journal_head *jh; jbd2_log_do_checkpoint() local
253 jh = transaction->t_checkpoint_list; jbd2_log_do_checkpoint()
254 bh = jh2bh(jh); jbd2_log_do_checkpoint()
265 if (jh->b_transaction != NULL) { jbd2_log_do_checkpoint()
266 transaction_t *t = jh->b_transaction; jbd2_log_do_checkpoint()
290 if (__jbd2_journal_remove_checkpoint(jh)) jbd2_log_do_checkpoint()
307 __buffer_relink_io(jh); jbd2_log_do_checkpoint()
336 jh = transaction->t_checkpoint_io_list; jbd2_log_do_checkpoint()
337 bh = jh2bh(jh); jbd2_log_do_checkpoint()
356 if (__jbd2_journal_remove_checkpoint(jh)) jbd2_log_do_checkpoint()
425 static int journal_clean_one_cp_list(struct journal_head *jh, bool destroy) journal_clean_one_cp_list() argument
428 struct journal_head *next_jh = jh; journal_clean_one_cp_list()
432 if (!jh) journal_clean_one_cp_list()
435 last_jh = jh->b_cpprev; journal_clean_one_cp_list()
437 jh = next_jh; journal_clean_one_cp_list()
438 next_jh = jh->b_cpnext; journal_clean_one_cp_list()
440 ret = __try_to_free_cp_buf(jh); journal_clean_one_cp_list()
442 ret = __jbd2_journal_remove_checkpoint(jh) + 1; journal_clean_one_cp_list()
456 } while (jh != last_jh); journal_clean_one_cp_list()
549 * The function can free jh and bh.
553 int __jbd2_journal_remove_checkpoint(struct journal_head *jh) __jbd2_journal_remove_checkpoint() argument
560 JBUFFER_TRACE(jh, "entry"); __jbd2_journal_remove_checkpoint()
562 if ((transaction = jh->b_cp_transaction) == NULL) { __jbd2_journal_remove_checkpoint()
563 JBUFFER_TRACE(jh, "not on transaction"); __jbd2_journal_remove_checkpoint()
568 JBUFFER_TRACE(jh, "removing from transaction"); __jbd2_journal_remove_checkpoint()
569 __buffer_unlink(jh); __jbd2_journal_remove_checkpoint()
570 jh->b_cp_transaction = NULL; __jbd2_journal_remove_checkpoint()
571 jbd2_journal_put_journal_head(jh); __jbd2_journal_remove_checkpoint()
613 void __jbd2_journal_insert_checkpoint(struct journal_head *jh, __jbd2_journal_insert_checkpoint() argument
616 JBUFFER_TRACE(jh, "entry"); __jbd2_journal_insert_checkpoint()
617 J_ASSERT_JH(jh, buffer_dirty(jh2bh(jh)) || buffer_jbddirty(jh2bh(jh))); __jbd2_journal_insert_checkpoint()
618 J_ASSERT_JH(jh, jh->b_cp_transaction == NULL); __jbd2_journal_insert_checkpoint()
621 jbd2_journal_grab_journal_head(jh2bh(jh)); __jbd2_journal_insert_checkpoint()
622 jh->b_cp_transaction = transaction; __jbd2_journal_insert_checkpoint()
625 jh->b_cpnext = jh->b_cpprev = jh; __jbd2_journal_insert_checkpoint()
627 jh->b_cpnext = transaction->t_checkpoint_list; __jbd2_journal_insert_checkpoint()
628 jh->b_cpprev = transaction->t_checkpoint_list->b_cpprev; __jbd2_journal_insert_checkpoint()
629 jh->b_cpprev->b_cpnext = jh; __jbd2_journal_insert_checkpoint()
630 jh->b_cpnext->b_cpprev = jh; __jbd2_journal_insert_checkpoint()
632 transaction->t_checkpoint_list = jh; __jbd2_journal_insert_checkpoint()
H A Dtransaction.c35 static void __jbd2_journal_temp_unlink_buffer(struct journal_head *jh);
36 static void __jbd2_journal_unfile_buffer(struct journal_head *jh);
775 do_get_write_access(handle_t *handle, struct journal_head *jh, do_get_write_access() argument
790 jbd_debug(5, "journal_head %p, force_copy %d\n", jh, force_copy); do_get_write_access()
792 JBUFFER_TRACE(jh, "entry"); do_get_write_access()
794 bh = jh2bh(jh); do_get_write_access()
826 if (jh->b_transaction) { do_get_write_access()
827 J_ASSERT_JH(jh, do_get_write_access()
828 jh->b_transaction == transaction || do_get_write_access()
829 jh->b_transaction == do_get_write_access()
831 if (jh->b_next_transaction) do_get_write_access()
832 J_ASSERT_JH(jh, jh->b_next_transaction == do_get_write_access()
841 JBUFFER_TRACE(jh, "Journalling dirty buffer"); do_get_write_access()
859 if (jh->b_transaction == transaction || do_get_write_access()
860 jh->b_next_transaction == transaction) do_get_write_access()
867 jh->b_modified = 0; do_get_write_access()
873 if (jh->b_frozen_data) { do_get_write_access()
874 JBUFFER_TRACE(jh, "has frozen data"); do_get_write_access()
875 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); do_get_write_access()
876 jh->b_next_transaction = transaction; do_get_write_access()
882 if (jh->b_transaction && jh->b_transaction != transaction) { do_get_write_access()
883 JBUFFER_TRACE(jh, "owned by older transaction"); do_get_write_access()
884 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); do_get_write_access()
885 J_ASSERT_JH(jh, jh->b_transaction == do_get_write_access()
898 JBUFFER_TRACE(jh, "on shadow: sleep"); do_get_write_access()
919 if (jh->b_jlist == BJ_Metadata || force_copy) { do_get_write_access()
920 JBUFFER_TRACE(jh, "generate frozen data"); do_get_write_access()
922 JBUFFER_TRACE(jh, "allocate memory for buffer"); do_get_write_access()
925 jbd2_alloc(jh2bh(jh)->b_size, do_get_write_access()
931 JBUFFER_TRACE(jh, "oom!"); do_get_write_access()
938 jh->b_frozen_data = frozen_buffer; do_get_write_access()
942 jh->b_next_transaction = transaction; do_get_write_access()
951 if (!jh->b_transaction) { do_get_write_access()
952 JBUFFER_TRACE(jh, "no transaction"); do_get_write_access()
953 J_ASSERT_JH(jh, !jh->b_next_transaction); do_get_write_access()
954 JBUFFER_TRACE(jh, "file as BJ_Reserved"); do_get_write_access()
956 __jbd2_journal_file_buffer(jh, transaction, BJ_Reserved); do_get_write_access()
966 J_EXPECT_JH(jh, buffer_uptodate(jh2bh(jh)), do_get_write_access()
968 page = jh2bh(jh)->b_page; do_get_write_access()
969 offset = offset_in_page(jh2bh(jh)->b_data); do_get_write_access()
972 jbd2_buffer_frozen_trigger(jh, source + offset, do_get_write_access()
973 jh->b_triggers); do_get_write_access()
974 memcpy(jh->b_frozen_data, source+offset, jh2bh(jh)->b_size); do_get_write_access()
981 jh->b_frozen_triggers = jh->b_triggers; do_get_write_access()
989 jbd2_journal_cancel_revoke(handle, jh); do_get_write_access()
995 JBUFFER_TRACE(jh, "exit"); do_get_write_access()
1012 struct journal_head *jh = jbd2_journal_add_journal_head(bh); jbd2_journal_get_write_access() local
1018 rc = do_get_write_access(handle, jh, 0); jbd2_journal_get_write_access()
1019 jbd2_journal_put_journal_head(jh); jbd2_journal_get_write_access()
1047 struct journal_head *jh = jbd2_journal_add_journal_head(bh); jbd2_journal_get_create_access() local
1050 jbd_debug(5, "journal_head %p\n", jh); jbd2_journal_get_create_access()
1057 JBUFFER_TRACE(jh, "entry"); jbd2_journal_get_create_access()
1066 J_ASSERT_JH(jh, (jh->b_transaction == transaction || jbd2_journal_get_create_access()
1067 jh->b_transaction == NULL || jbd2_journal_get_create_access()
1068 (jh->b_transaction == journal->j_committing_transaction && jbd2_journal_get_create_access()
1069 jh->b_jlist == BJ_Forget))); jbd2_journal_get_create_access()
1071 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); jbd2_journal_get_create_access()
1072 J_ASSERT_JH(jh, buffer_locked(jh2bh(jh))); jbd2_journal_get_create_access()
1074 if (jh->b_transaction == NULL) { jbd2_journal_get_create_access()
1083 clear_buffer_dirty(jh2bh(jh)); jbd2_journal_get_create_access()
1085 jh->b_modified = 0; jbd2_journal_get_create_access()
1087 JBUFFER_TRACE(jh, "file as BJ_Reserved"); jbd2_journal_get_create_access()
1089 __jbd2_journal_file_buffer(jh, transaction, BJ_Reserved); jbd2_journal_get_create_access()
1090 } else if (jh->b_transaction == journal->j_committing_transaction) { jbd2_journal_get_create_access()
1092 jh->b_modified = 0; jbd2_journal_get_create_access()
1094 JBUFFER_TRACE(jh, "set next transaction"); jbd2_journal_get_create_access()
1096 jh->b_next_transaction = transaction; jbd2_journal_get_create_access()
1108 JBUFFER_TRACE(jh, "cancelling revoke"); jbd2_journal_get_create_access()
1109 jbd2_journal_cancel_revoke(handle, jh); jbd2_journal_get_create_access()
1111 jbd2_journal_put_journal_head(jh); jbd2_journal_get_create_access()
1144 struct journal_head *jh = jbd2_journal_add_journal_head(bh); jbd2_journal_get_undo_access() local
1147 JBUFFER_TRACE(jh, "entry"); jbd2_journal_get_undo_access()
1154 err = do_get_write_access(handle, jh, 1); jbd2_journal_get_undo_access()
1159 if (!jh->b_committed_data) { jbd2_journal_get_undo_access()
1160 committed_data = jbd2_alloc(jh2bh(jh)->b_size, GFP_NOFS); jbd2_journal_get_undo_access()
1170 if (!jh->b_committed_data) { jbd2_journal_get_undo_access()
1173 JBUFFER_TRACE(jh, "generate b_committed data"); jbd2_journal_get_undo_access()
1179 jh->b_committed_data = committed_data; jbd2_journal_get_undo_access()
1181 memcpy(jh->b_committed_data, bh->b_data, bh->b_size); jbd2_journal_get_undo_access()
1185 jbd2_journal_put_journal_head(jh); jbd2_journal_get_undo_access()
1205 struct journal_head *jh = jbd2_journal_grab_journal_head(bh); jbd2_journal_set_triggers() local
1207 if (WARN_ON(!jh)) jbd2_journal_set_triggers()
1209 jh->b_triggers = type; jbd2_journal_set_triggers()
1210 jbd2_journal_put_journal_head(jh); jbd2_journal_set_triggers()
1213 void jbd2_buffer_frozen_trigger(struct journal_head *jh, void *mapped_data, jbd2_buffer_frozen_trigger() argument
1216 struct buffer_head *bh = jh2bh(jh); jbd2_buffer_frozen_trigger()
1224 void jbd2_buffer_abort_trigger(struct journal_head *jh, jbd2_buffer_abort_trigger() argument
1230 triggers->t_abort(triggers, jh2bh(jh)); jbd2_buffer_abort_trigger()
1262 struct journal_head *jh; jbd2_journal_dirty_metadata() local
1268 jh = jbd2_journal_grab_journal_head(bh); jbd2_journal_dirty_metadata()
1269 if (!jh) { jbd2_journal_dirty_metadata()
1273 jbd_debug(5, "journal_head %p\n", jh); jbd2_journal_dirty_metadata()
1274 JBUFFER_TRACE(jh, "entry"); jbd2_journal_dirty_metadata()
1278 if (jh->b_modified == 0) { jbd2_journal_dirty_metadata()
1284 jh->b_modified = 1; jbd2_journal_dirty_metadata()
1299 if (jh->b_transaction == transaction && jh->b_jlist == BJ_Metadata) { jbd2_journal_dirty_metadata()
1300 JBUFFER_TRACE(jh, "fastpath"); jbd2_journal_dirty_metadata()
1301 if (unlikely(jh->b_transaction != jbd2_journal_dirty_metadata()
1304 "jh->b_transaction (%llu, %p, %u) != " jbd2_journal_dirty_metadata()
1308 jh->b_transaction, jbd2_journal_dirty_metadata()
1309 jh->b_transaction ? jh->b_transaction->t_tid : 0, jbd2_journal_dirty_metadata()
1326 if (jh->b_transaction != transaction) { jbd2_journal_dirty_metadata()
1327 JBUFFER_TRACE(jh, "already on other transaction"); jbd2_journal_dirty_metadata()
1328 if (unlikely(((jh->b_transaction != jbd2_journal_dirty_metadata()
1330 (jh->b_next_transaction != transaction))) { jbd2_journal_dirty_metadata()
1332 "bad jh for block %llu: " jbd2_journal_dirty_metadata()
1334 "jh->b_transaction (%p, %u), " jbd2_journal_dirty_metadata()
1335 "jh->b_next_transaction (%p, %u), jlist %u\n", jbd2_journal_dirty_metadata()
1339 jh->b_transaction, jbd2_journal_dirty_metadata()
1340 jh->b_transaction ? jbd2_journal_dirty_metadata()
1341 jh->b_transaction->t_tid : 0, jbd2_journal_dirty_metadata()
1342 jh->b_next_transaction, jbd2_journal_dirty_metadata()
1343 jh->b_next_transaction ? jbd2_journal_dirty_metadata()
1344 jh->b_next_transaction->t_tid : 0, jbd2_journal_dirty_metadata()
1345 jh->b_jlist); jbd2_journal_dirty_metadata()
1355 J_ASSERT_JH(jh, jh->b_frozen_data == NULL); jbd2_journal_dirty_metadata()
1357 JBUFFER_TRACE(jh, "file as BJ_Metadata"); jbd2_journal_dirty_metadata()
1359 __jbd2_journal_file_buffer(jh, transaction, BJ_Metadata); jbd2_journal_dirty_metadata()
1363 jbd2_journal_put_journal_head(jh); jbd2_journal_dirty_metadata()
1365 JBUFFER_TRACE(jh, "exit"); jbd2_journal_dirty_metadata()
1390 struct journal_head *jh; jbd2_journal_forget() local
1405 jh = bh2jh(bh); jbd2_journal_forget()
1409 if (!J_EXPECT_JH(jh, !jh->b_committed_data, jbd2_journal_forget()
1416 was_modified = jh->b_modified; jbd2_journal_forget()
1422 jh->b_modified = 0; jbd2_journal_forget()
1424 if (jh->b_transaction == transaction) { jbd2_journal_forget()
1425 J_ASSERT_JH(jh, !jh->b_frozen_data); jbd2_journal_forget()
1433 JBUFFER_TRACE(jh, "belongs to current transaction: unfile"); jbd2_journal_forget()
1455 if (jh->b_cp_transaction) { jbd2_journal_forget()
1456 __jbd2_journal_temp_unlink_buffer(jh); jbd2_journal_forget()
1457 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); jbd2_journal_forget()
1459 __jbd2_journal_unfile_buffer(jh); jbd2_journal_forget()
1468 } else if (jh->b_transaction) { jbd2_journal_forget()
1469 J_ASSERT_JH(jh, (jh->b_transaction == jbd2_journal_forget()
1473 JBUFFER_TRACE(jh, "belongs to older transaction"); jbd2_journal_forget()
1477 if (jh->b_next_transaction) { jbd2_journal_forget()
1478 J_ASSERT(jh->b_next_transaction == transaction); jbd2_journal_forget()
1480 jh->b_next_transaction = NULL; jbd2_journal_forget()
1694 * jbd_lock_bh_state(jh2bh(jh)) is held.
1698 __blist_add_buffer(struct journal_head **list, struct journal_head *jh) __blist_add_buffer() argument
1701 jh->b_tnext = jh->b_tprev = jh; __blist_add_buffer()
1702 *list = jh; __blist_add_buffer()
1706 jh->b_tprev = last; __blist_add_buffer()
1707 jh->b_tnext = first; __blist_add_buffer()
1708 last->b_tnext = first->b_tprev = jh; __blist_add_buffer()
1718 * jbd_lock_bh_state(jh2bh(jh)) is held.
1722 __blist_del_buffer(struct journal_head **list, struct journal_head *jh) __blist_del_buffer() argument
1724 if (*list == jh) { __blist_del_buffer()
1725 *list = jh->b_tnext; __blist_del_buffer()
1726 if (*list == jh) __blist_del_buffer()
1729 jh->b_tprev->b_tnext = jh->b_tnext; __blist_del_buffer()
1730 jh->b_tnext->b_tprev = jh->b_tprev; __blist_del_buffer()
1744 static void __jbd2_journal_temp_unlink_buffer(struct journal_head *jh) __jbd2_journal_temp_unlink_buffer() argument
1748 struct buffer_head *bh = jh2bh(jh); __jbd2_journal_temp_unlink_buffer()
1750 J_ASSERT_JH(jh, jbd_is_locked_bh_state(bh)); __jbd2_journal_temp_unlink_buffer()
1751 transaction = jh->b_transaction; __jbd2_journal_temp_unlink_buffer()
1755 J_ASSERT_JH(jh, jh->b_jlist < BJ_Types); __jbd2_journal_temp_unlink_buffer()
1756 if (jh->b_jlist != BJ_None) __jbd2_journal_temp_unlink_buffer()
1757 J_ASSERT_JH(jh, transaction != NULL); __jbd2_journal_temp_unlink_buffer()
1759 switch (jh->b_jlist) { __jbd2_journal_temp_unlink_buffer()
1764 J_ASSERT_JH(jh, transaction->t_nr_buffers >= 0); __jbd2_journal_temp_unlink_buffer()
1778 __blist_del_buffer(list, jh); __jbd2_journal_temp_unlink_buffer()
1779 jh->b_jlist = BJ_None; __jbd2_journal_temp_unlink_buffer()
1789 * jh and bh may be already freed when this function returns.
1791 static void __jbd2_journal_unfile_buffer(struct journal_head *jh) __jbd2_journal_unfile_buffer() argument
1793 __jbd2_journal_temp_unlink_buffer(jh); __jbd2_journal_unfile_buffer()
1794 jh->b_transaction = NULL; __jbd2_journal_unfile_buffer()
1795 jbd2_journal_put_journal_head(jh); __jbd2_journal_unfile_buffer()
1798 void jbd2_journal_unfile_buffer(journal_t *journal, struct journal_head *jh) jbd2_journal_unfile_buffer() argument
1800 struct buffer_head *bh = jh2bh(jh); jbd2_journal_unfile_buffer()
1806 __jbd2_journal_unfile_buffer(jh); jbd2_journal_unfile_buffer()
1820 struct journal_head *jh; __journal_try_to_free_buffer() local
1822 jh = bh2jh(bh); __journal_try_to_free_buffer()
1827 if (jh->b_next_transaction != NULL || jh->b_transaction != NULL) __journal_try_to_free_buffer()
1831 if (jh->b_cp_transaction != NULL) { __journal_try_to_free_buffer()
1833 JBUFFER_TRACE(jh, "remove from checkpoint list"); __journal_try_to_free_buffer()
1834 __jbd2_journal_remove_checkpoint(jh); __journal_try_to_free_buffer()
1891 struct journal_head *jh; jbd2_journal_try_to_free_buffers() local
1898 jh = jbd2_journal_grab_journal_head(bh); jbd2_journal_try_to_free_buffers()
1899 if (!jh) jbd2_journal_try_to_free_buffers()
1904 jbd2_journal_put_journal_head(jh); jbd2_journal_try_to_free_buffers()
1928 static int __dispose_buffer(struct journal_head *jh, transaction_t *transaction) __dispose_buffer() argument
1931 struct buffer_head *bh = jh2bh(jh); __dispose_buffer()
1933 if (jh->b_cp_transaction) { __dispose_buffer()
1934 JBUFFER_TRACE(jh, "on running+cp transaction"); __dispose_buffer()
1935 __jbd2_journal_temp_unlink_buffer(jh); __dispose_buffer()
1942 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); __dispose_buffer()
1945 JBUFFER_TRACE(jh, "on running transaction"); __dispose_buffer()
1946 __jbd2_journal_unfile_buffer(jh); __dispose_buffer()
2002 struct journal_head *jh; journal_unmap_buffer() local
2021 jh = jbd2_journal_grab_journal_head(bh); journal_unmap_buffer()
2022 if (!jh) journal_unmap_buffer()
2048 transaction = jh->b_transaction; journal_unmap_buffer()
2054 if (!jh->b_cp_transaction) { journal_unmap_buffer()
2055 JBUFFER_TRACE(jh, "not on any transaction: zap"); journal_unmap_buffer()
2072 JBUFFER_TRACE(jh, "checkpointed: add to BJ_Forget"); journal_unmap_buffer()
2073 may_free = __dispose_buffer(jh, journal_unmap_buffer()
2082 JBUFFER_TRACE(jh, "give to committing trans"); journal_unmap_buffer()
2083 may_free = __dispose_buffer(jh, journal_unmap_buffer()
2094 JBUFFER_TRACE(jh, "on committing transaction"); journal_unmap_buffer()
2101 jbd2_journal_put_journal_head(jh); journal_unmap_buffer()
2115 jh->b_next_transaction = journal->j_running_transaction; journal_unmap_buffer()
2116 jbd2_journal_put_journal_head(jh); journal_unmap_buffer()
2128 J_ASSERT_JH(jh, transaction == journal->j_running_transaction); journal_unmap_buffer()
2129 JBUFFER_TRACE(jh, "on running transaction"); journal_unmap_buffer()
2130 may_free = __dispose_buffer(jh, transaction); journal_unmap_buffer()
2142 jh->b_modified = 0; journal_unmap_buffer()
2143 jbd2_journal_put_journal_head(jh); journal_unmap_buffer()
2227 void __jbd2_journal_file_buffer(struct journal_head *jh, __jbd2_journal_file_buffer() argument
2232 struct buffer_head *bh = jh2bh(jh); __jbd2_journal_file_buffer()
2234 J_ASSERT_JH(jh, jbd_is_locked_bh_state(bh)); __jbd2_journal_file_buffer()
2237 J_ASSERT_JH(jh, jh->b_jlist < BJ_Types); __jbd2_journal_file_buffer()
2238 J_ASSERT_JH(jh, jh->b_transaction == transaction || __jbd2_journal_file_buffer()
2239 jh->b_transaction == NULL); __jbd2_journal_file_buffer()
2241 if (jh->b_transaction && jh->b_jlist == jlist) __jbd2_journal_file_buffer()
2260 if (jh->b_transaction) __jbd2_journal_file_buffer()
2261 __jbd2_journal_temp_unlink_buffer(jh); __jbd2_journal_file_buffer()
2264 jh->b_transaction = transaction; __jbd2_journal_file_buffer()
2268 J_ASSERT_JH(jh, !jh->b_committed_data); __jbd2_journal_file_buffer()
2269 J_ASSERT_JH(jh, !jh->b_frozen_data); __jbd2_journal_file_buffer()
2286 __blist_add_buffer(list, jh); __jbd2_journal_file_buffer()
2287 jh->b_jlist = jlist; __jbd2_journal_file_buffer()
2293 void jbd2_journal_file_buffer(struct journal_head *jh, jbd2_journal_file_buffer() argument
2296 jbd_lock_bh_state(jh2bh(jh)); jbd2_journal_file_buffer()
2298 __jbd2_journal_file_buffer(jh, transaction, jlist); jbd2_journal_file_buffer()
2300 jbd_unlock_bh_state(jh2bh(jh)); jbd2_journal_file_buffer()
2310 * Called under jbd_lock_bh_state(jh2bh(jh))
2312 * jh and bh may be already free when this function returns
2314 void __jbd2_journal_refile_buffer(struct journal_head *jh) __jbd2_journal_refile_buffer() argument
2317 struct buffer_head *bh = jh2bh(jh); __jbd2_journal_refile_buffer()
2319 J_ASSERT_JH(jh, jbd_is_locked_bh_state(bh)); __jbd2_journal_refile_buffer()
2320 if (jh->b_transaction) __jbd2_journal_refile_buffer()
2321 assert_spin_locked(&jh->b_transaction->t_journal->j_list_lock); __jbd2_journal_refile_buffer()
2324 if (jh->b_next_transaction == NULL) { __jbd2_journal_refile_buffer()
2325 __jbd2_journal_unfile_buffer(jh); __jbd2_journal_refile_buffer()
2335 __jbd2_journal_temp_unlink_buffer(jh); __jbd2_journal_refile_buffer()
2338 * our jh reference and thus __jbd2_journal_file_buffer() must not __jbd2_journal_refile_buffer()
2341 jh->b_transaction = jh->b_next_transaction; __jbd2_journal_refile_buffer()
2342 jh->b_next_transaction = NULL; __jbd2_journal_refile_buffer()
2345 else if (jh->b_modified) __jbd2_journal_refile_buffer()
2349 __jbd2_journal_file_buffer(jh, jh->b_transaction, jlist); __jbd2_journal_refile_buffer()
2350 J_ASSERT_JH(jh, jh->b_transaction->t_state == T_RUNNING); __jbd2_journal_refile_buffer()
2360 * The jh and bh may be freed by this call.
2362 void jbd2_journal_refile_buffer(journal_t *journal, struct journal_head *jh) jbd2_journal_refile_buffer() argument
2364 struct buffer_head *bh = jh2bh(jh); jbd2_journal_refile_buffer()
2370 __jbd2_journal_refile_buffer(jh); jbd2_journal_refile_buffer()
H A Dcommit.c374 struct journal_head *jh; jbd2_journal_commit_transaction() local
490 jh = commit_transaction->t_reserved_list; jbd2_journal_commit_transaction()
491 JBUFFER_TRACE(jh, "reserved, unused: refile"); jbd2_journal_commit_transaction()
496 if (jh->b_committed_data) { jbd2_journal_commit_transaction()
497 struct buffer_head *bh = jh2bh(jh); jbd2_journal_commit_transaction()
500 jbd2_free(jh->b_committed_data, bh->b_size); jbd2_journal_commit_transaction()
501 jh->b_committed_data = NULL; jbd2_journal_commit_transaction()
504 jbd2_journal_refile_buffer(journal, jh); jbd2_journal_commit_transaction()
591 jh = commit_transaction->t_buffers; jbd2_journal_commit_transaction()
597 clear_buffer_jbddirty(jh2bh(jh)); jbd2_journal_commit_transaction()
598 JBUFFER_TRACE(jh, "journal is aborting: refile"); jbd2_journal_commit_transaction()
599 jbd2_buffer_abort_trigger(jh, jbd2_journal_commit_transaction()
600 jh->b_frozen_data ? jbd2_journal_commit_transaction()
601 jh->b_frozen_triggers : jbd2_journal_commit_transaction()
602 jh->b_triggers); jbd2_journal_commit_transaction()
603 jbd2_journal_refile_buffer(journal, jh); jbd2_journal_commit_transaction()
670 atomic_inc(&jh2bh(jh)->b_count); jbd2_journal_commit_transaction()
676 set_bit(BH_JWrite, &jh2bh(jh)->b_state); jbd2_journal_commit_transaction()
677 JBUFFER_TRACE(jh, "ph3: write metadata"); jbd2_journal_commit_transaction()
679 jh, &wbuf[bufs], blocknr); jbd2_journal_commit_transaction()
696 write_tag_block(journal, tag, jh2bh(jh)->b_blocknr); jbd2_journal_commit_transaction()
845 jh = commit_transaction->t_shadow_list->b_tprev; jbd2_journal_commit_transaction()
846 bh = jh2bh(jh); jbd2_journal_commit_transaction()
855 JBUFFER_TRACE(jh, "file as BJ_Forget"); jbd2_journal_commit_transaction()
856 jbd2_journal_file_buffer(jh, commit_transaction, BJ_Forget); jbd2_journal_commit_transaction()
857 JBUFFER_TRACE(jh, "brelse shadowed buffer"); jbd2_journal_commit_transaction()
941 jh = commit_transaction->t_forget; jbd2_journal_commit_transaction()
943 bh = jh2bh(jh); jbd2_journal_commit_transaction()
950 J_ASSERT_JH(jh, jh->b_transaction == commit_transaction); jbd2_journal_commit_transaction()
965 if (jh->b_committed_data) { jbd2_journal_commit_transaction()
966 jbd2_free(jh->b_committed_data, bh->b_size); jbd2_journal_commit_transaction()
967 jh->b_committed_data = NULL; jbd2_journal_commit_transaction()
968 if (jh->b_frozen_data) { jbd2_journal_commit_transaction()
969 jh->b_committed_data = jh->b_frozen_data; jbd2_journal_commit_transaction()
970 jh->b_frozen_data = NULL; jbd2_journal_commit_transaction()
971 jh->b_frozen_triggers = NULL; jbd2_journal_commit_transaction()
973 } else if (jh->b_frozen_data) { jbd2_journal_commit_transaction()
974 jbd2_free(jh->b_frozen_data, bh->b_size); jbd2_journal_commit_transaction()
975 jh->b_frozen_data = NULL; jbd2_journal_commit_transaction()
976 jh->b_frozen_triggers = NULL; jbd2_journal_commit_transaction()
980 cp_transaction = jh->b_cp_transaction; jbd2_journal_commit_transaction()
982 JBUFFER_TRACE(jh, "remove from old cp transaction"); jbd2_journal_commit_transaction()
984 __jbd2_journal_remove_checkpoint(jh); jbd2_journal_commit_transaction()
1013 jh->b_modified = 0; jbd2_journal_commit_transaction()
1014 if (!jh->b_next_transaction) { jbd2_journal_commit_transaction()
1025 JBUFFER_TRACE(jh, "add to new checkpointing trans"); jbd2_journal_commit_transaction()
1026 __jbd2_journal_insert_checkpoint(jh, commit_transaction); jbd2_journal_commit_transaction()
1040 if (!jh->b_next_transaction) jbd2_journal_commit_transaction()
1043 JBUFFER_TRACE(jh, "refile or unfile buffer"); jbd2_journal_commit_transaction()
1044 __jbd2_journal_refile_buffer(jh); jbd2_journal_commit_transaction()
H A Djournal.c2417 static void journal_free_journal_head(struct journal_head *jh) journal_free_journal_head() argument
2421 memset(jh, JBD2_POISON_FREE, sizeof(*jh)); journal_free_journal_head()
2423 kmem_cache_free(jbd2_journal_head_cache, jh); journal_free_journal_head()
2453 * struct journal_head *jh = jbd2_journal_add_journal_head(bh);
2457 * jh->b_transaction = xxx;
2459 * jbd2_journal_put_journal_head(jh);
2469 struct journal_head *jh; jbd2_journal_add_journal_head() local
2478 jh = bh2jh(bh); jbd2_journal_add_journal_head()
2489 jh = new_jh; jbd2_journal_add_journal_head()
2492 bh->b_private = jh; jbd2_journal_add_journal_head()
2493 jh->b_bh = bh; jbd2_journal_add_journal_head()
2497 jh->b_jcount++; jbd2_journal_add_journal_head()
2510 struct journal_head *jh = NULL; jbd2_journal_grab_journal_head() local
2514 jh = bh2jh(bh); jbd2_journal_grab_journal_head()
2515 jh->b_jcount++; jbd2_journal_grab_journal_head()
2518 return jh; jbd2_journal_grab_journal_head()
2523 struct journal_head *jh = bh2jh(bh); __journal_remove_journal_head() local
2525 J_ASSERT_JH(jh, jh->b_jcount >= 0); __journal_remove_journal_head()
2526 J_ASSERT_JH(jh, jh->b_transaction == NULL); __journal_remove_journal_head()
2527 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); __journal_remove_journal_head()
2528 J_ASSERT_JH(jh, jh->b_cp_transaction == NULL); __journal_remove_journal_head()
2529 J_ASSERT_JH(jh, jh->b_jlist == BJ_None); __journal_remove_journal_head()
2531 J_ASSERT_BH(bh, jh2bh(jh) == bh); __journal_remove_journal_head()
2533 if (jh->b_frozen_data) { __journal_remove_journal_head()
2535 jbd2_free(jh->b_frozen_data, bh->b_size); __journal_remove_journal_head()
2537 if (jh->b_committed_data) { __journal_remove_journal_head()
2539 jbd2_free(jh->b_committed_data, bh->b_size); __journal_remove_journal_head()
2542 jh->b_bh = NULL; /* debug, really */ __journal_remove_journal_head()
2544 journal_free_journal_head(jh); __journal_remove_journal_head()
2551 void jbd2_journal_put_journal_head(struct journal_head *jh) jbd2_journal_put_journal_head() argument
2553 struct buffer_head *bh = jh2bh(jh); jbd2_journal_put_journal_head()
2556 J_ASSERT_JH(jh, jh->b_jcount > 0); jbd2_journal_put_journal_head()
2557 --jh->b_jcount; jbd2_journal_put_journal_head()
2558 if (!jh->b_jcount) { jbd2_journal_put_journal_head()
H A Drevoke.c420 int jbd2_journal_cancel_revoke(handle_t *handle, struct journal_head *jh) jbd2_journal_cancel_revoke() argument
426 struct buffer_head *bh = jh2bh(jh); jbd2_journal_cancel_revoke()
428 jbd_debug(4, "journal_head %p, cancelling revoke\n", jh); jbd2_journal_cancel_revoke()
457 J_ASSERT_JH(jh, record == NULL); jbd2_journal_cancel_revoke()
/linux-4.1.27/include/linux/
H A Djbd_common.h6 static inline struct buffer_head *jh2bh(struct journal_head *jh) jh2bh() argument
8 return jh->b_bh; jh2bh()
H A Djbd.h253 BH_JournalHead, /* Pins bh->b_private and jh->b_bh */
273 #define J_ASSERT_JH(jh, expr) J_ASSERT(expr)
278 #define J_EXPECT_JH(jh, expr, why...) J_ASSERT_JH(jh, expr)
292 #define J_EXPECT_JH(jh, expr, why...) __journal_expect(expr, ## why)
902 void journal_put_journal_head(struct journal_head *jh);
1043 #define JBUFFER_TRACE(jh, info) do {} while (0)
H A Djbd2.h321 BH_JournalHead, /* Pins bh->b_private and jh->b_bh */
344 #define J_ASSERT_JH(jh, expr) J_ASSERT(expr)
349 #define J_EXPECT_JH(jh, expr, why...) J_ASSERT_JH(jh, expr)
364 #define J_EXPECT_JH(jh, expr, why...) __journal_expect(expr, ## why)
1075 extern void jbd2_buffer_frozen_trigger(struct journal_head *jh,
1078 extern void jbd2_buffer_abort_trigger(struct journal_head *jh,
1183 void jbd2_journal_put_journal_head(struct journal_head *jh);
1405 #define JBUFFER_TRACE(jh, info) do {} while (0)
/linux-4.1.27/fs/logfs/
H A Djournal.c142 struct logfs_journal_header *jh = from; unpack() local
147 inlen = be16_to_cpu(jh->h_len); unpack()
148 outlen = be16_to_cpu(jh->h_datalen); unpack()
150 if (jh->h_compr == COMPR_NONE) unpack()
160 struct logfs_journal_header *jh) __read_je_header()
169 err = wbuf_read(sb, ofs, sizeof(*jh), jh); __read_je_header()
172 type = be16_to_cpu(jh->h_type); __read_je_header()
173 len = be16_to_cpu(jh->h_len); __read_je_header()
174 datalen = be16_to_cpu(jh->h_datalen); __read_je_header()
185 struct logfs_journal_header *jh) __read_je_payload()
190 len = be16_to_cpu(jh->h_len); __read_je_payload()
191 err = wbuf_read(sb, ofs + sizeof(*jh), len, jh + 1); __read_je_payload()
194 if (jh->h_crc != logfs_crc32(jh, len + sizeof(*jh), 4)) { __read_je_payload()
200 if (jh->h_crc == logfs_crc32(jh, len, 4)) __read_je_payload()
209 * jh needs to be large enough to hold the complete entry, not just the header
212 struct logfs_journal_header *jh) __read_je()
216 err = __read_je_header(sb, ofs, jh); __read_je()
219 return __read_je_payload(sb, ofs, jh); __read_je()
225 struct logfs_journal_header *jh = super->s_compressed_je; read_je() local
230 err = __read_je(sb, ofs, jh); read_je()
233 type = be16_to_cpu(jh->h_type); read_je()
234 datalen = be16_to_cpu(jh->h_datalen); read_je()
238 read_dynsb(sb, unpack(jh, scratch)); read_je()
241 read_anchor(sb, unpack(jh, scratch)); read_je()
244 read_erasecount(sb, unpack(jh, scratch)); read_je()
247 err = read_area(sb, unpack(jh, scratch)); read_je()
250 err = logfs_load_object_aliases(sb, unpack(jh, scratch), read_je()
263 struct logfs_journal_header *jh = super->s_compressed_je; logfs_read_segment() local
270 for (h_ofs = 0; h_ofs < super->s_segsize; h_ofs += sizeof(*jh)) { logfs_read_segment()
272 err = __read_je_header(sb, ofs, jh); logfs_read_segment()
275 if (jh->h_type != cpu_to_be16(JE_COMMIT)) logfs_read_segment()
277 err = __read_je_payload(sb, ofs, jh); logfs_read_segment()
280 len = be16_to_cpu(jh->h_len); logfs_read_segment()
281 datalen = be16_to_cpu(jh->h_datalen); logfs_read_segment()
287 h_ofs += ALIGN(len, sizeof(*jh)) - sizeof(*jh); logfs_read_segment()
294 err = __read_je(sb, ofs, jh); logfs_read_segment()
299 unpack(jh, super->s_je_array); logfs_read_segment()
421 struct logfs_journal_header *jh, size_t len, size_t datalen, __logfs_write_header()
424 jh->h_len = cpu_to_be16(len); __logfs_write_header()
425 jh->h_type = cpu_to_be16(type); __logfs_write_header()
426 jh->h_datalen = cpu_to_be16(datalen); __logfs_write_header()
427 jh->h_compr = compr; __logfs_write_header()
428 jh->h_pad[0] = 'H'; __logfs_write_header()
429 jh->h_pad[1] = 'E'; __logfs_write_header()
430 jh->h_pad[2] = 'A'; __logfs_write_header()
431 jh->h_pad[3] = 'D'; __logfs_write_header()
432 jh->h_pad[4] = 'R'; __logfs_write_header()
433 jh->h_crc = logfs_crc32(jh, len + sizeof(*jh), 4); __logfs_write_header()
434 return ALIGN(len, 16) + sizeof(*jh); __logfs_write_header()
438 struct logfs_journal_header *jh, size_t datalen, u16 type) logfs_write_header()
442 return __logfs_write_header(super, jh, len, datalen, type, COMPR_NONE); logfs_write_header()
655 struct logfs_journal_header *jh = super->s_compressed_je; logfs_write_je_buf() local
661 if (jh->h_type == cpu_to_be16(JE_COMMIT)) logfs_write_je_buf()
159 __read_je_header(struct super_block *sb, u64 ofs, struct logfs_journal_header *jh) __read_je_header() argument
184 __read_je_payload(struct super_block *sb, u64 ofs, struct logfs_journal_header *jh) __read_je_payload() argument
211 __read_je(struct super_block *sb, u64 ofs, struct logfs_journal_header *jh) __read_je() argument
420 __logfs_write_header(struct logfs_super *super, struct logfs_journal_header *jh, size_t len, size_t datalen, u16 type, u8 compr) __logfs_write_header() argument
437 logfs_write_header(struct logfs_super *super, struct logfs_journal_header *jh, size_t datalen, u16 type) logfs_write_header() argument
/linux-4.1.27/fs/reiserfs/
H A Djournal.c716 struct reiserfs_jh *jh; alloc_jh() local
718 jh = kmalloc(sizeof(*jh), GFP_NOFS); alloc_jh()
719 if (jh) { alloc_jh()
721 return jh; alloc_jh()
728 * we want to free the jh when the buffer has been written
733 struct reiserfs_jh *jh; reiserfs_free_jh() local
735 jh = bh->b_private; reiserfs_free_jh()
736 if (jh) { reiserfs_free_jh()
738 jh->bh = NULL; reiserfs_free_jh()
739 list_del_init(&jh->list); reiserfs_free_jh()
740 kfree(jh); reiserfs_free_jh()
751 struct reiserfs_jh *jh; __add_jh() local
759 jh = bh->b_private; __add_jh()
760 list_del_init(&jh->list); __add_jh()
764 jh = alloc_jh(); __add_jh()
771 jh->bh = bh; __add_jh()
772 bh->b_private = jh; __add_jh()
774 jh->jl = j->j_current_jl; __add_jh()
776 list_add_tail(&jh->list, &jh->jl->j_tail_bh_list); __add_jh()
778 list_add_tail(&jh->list, &jh->jl->j_bh_list); __add_jh()
800 struct reiserfs_jh *jh; write_ordered_buffers() local
809 jh = JH_ENTRY(list->next); write_ordered_buffers()
810 bh = jh->bh; write_ordered_buffers()
814 list_move(&jh->list, &tmp); write_ordered_buffers()
835 list_move(&jh->list, &tmp); write_ordered_buffers()
851 jh = JH_ENTRY(tmp.prev); write_ordered_buffers()
852 bh = jh->bh; write_ordered_buffers()
1242 struct reiserfs_journal_header *jh; _update_journal_header_block() local
1264 jh = (struct reiserfs_journal_header *)(journal->j_header_bh-> _update_journal_header_block()
1266 jh->j_last_flush_trans_id = cpu_to_le32(trans_id); _update_journal_header_block()
1267 jh->j_first_unflushed_offset = cpu_to_le32(offset); _update_journal_header_block()
1268 jh->j_mount_id = cpu_to_le32(journal->j_mount_id); _update_journal_header_block()
2385 struct reiserfs_journal_header *jh; journal_read() local
2408 jh = (struct reiserfs_journal_header *)(journal->j_header_bh->b_data); journal_read()
2409 if (le32_to_cpu(jh->j_first_unflushed_offset) < journal_read()
2411 && le32_to_cpu(jh->j_last_flush_trans_id) > 0) { journal_read()
2414 le32_to_cpu(jh->j_first_unflushed_offset); journal_read()
2415 oldest_trans_id = le32_to_cpu(jh->j_last_flush_trans_id) + 1; journal_read()
2416 newest_mount_id = le32_to_cpu(jh->j_mount_id); journal_read()
2420 "%lu", le32_to_cpu(jh->j_first_unflushed_offset), journal_read()
2421 le32_to_cpu(jh->j_last_flush_trans_id)); journal_read()
2432 le32_to_cpu(jh->j_first_unflushed_offset)); journal_read()
2538 journal->j_start = le32_to_cpu(jh->j_first_unflushed_offset); journal_read()
2540 le32_to_cpu(jh->j_last_flush_trans_id) + 1; journal_read()
2545 le32_to_cpu(jh->j_last_flush_trans_id); journal_read()
2546 journal->j_mount_id = le32_to_cpu(jh->j_mount_id) + 1; journal_read()
2724 struct reiserfs_journal_header *jh; journal_init() local
2790 jh = (struct reiserfs_journal_header *)(bhjh->b_data); journal_init()
2794 && (le32_to_cpu(jh->jh_journal.jp_journal_magic) != journal_init()
2799 jh->jh_journal.jp_journal_magic, journal_init()
2806 journal->j_trans_max = le32_to_cpu(jh->jh_journal.jp_journal_trans_max); journal_init()
2807 journal->j_max_batch = le32_to_cpu(jh->jh_journal.jp_journal_max_batch); journal_init()
2809 le32_to_cpu(jh->jh_journal.jp_journal_max_commit_age); journal_init()
H A Dinode.c3146 struct reiserfs_jh *jh = bh->b_private; invalidatepage_can_drop() local
3162 if (jh && (jl = jh->jl) invalidatepage_can_drop()
/linux-4.1.27/arch/s390/net/
H A Dbpf_jit.S54 jh sk_load_##NAME##_slow; \
H A Dbpf_jit_comp.c985 mask = 0x2000; /* jh */ bpf_jit_insn()
991 mask = 0x2000; /* jh */ bpf_jit_insn()
1011 mask = 0x2000; /* jh */ bpf_jit_insn()
1017 mask = 0x2000; /* jh */ bpf_jit_insn()
/linux-4.1.27/fs/ext3/
H A Dballoc.c716 struct journal_head *jh = bh2jh(bh); ext3_test_allocatable() local
722 if (!jh->b_committed_data) ext3_test_allocatable()
725 ret = !ext3_test_bit(nr, jh->b_committed_data); ext3_test_allocatable()
745 struct journal_head *jh = bh2jh(bh); bitmap_search_next_usable_block() local
754 if (jh->b_committed_data) bitmap_search_next_usable_block()
755 start = ext3_find_next_zero_bit(jh->b_committed_data, bitmap_search_next_usable_block()
835 struct journal_head *jh = bh2jh(bh); claim_block() local
841 if (jh->b_committed_data && ext3_test_bit(block,jh->b_committed_data)) { claim_block()
/linux-4.1.27/arch/s390/kernel/
H A Dentry.S95 jh .+42
857 jh 0f
864 jh 0f
874 jh 0f
881 jh 0f
/linux-4.1.27/fs/ubifs/
H A Dreplay.c486 struct ubifs_jhead *jh = &c->jheads[bud->jhead]; is_last_bud() local
491 if (list_is_last(&bud->list, &jh->buds_list)) is_last_bud()
522 if (!list_is_last(&next->list, &jh->buds_list)) is_last_bud()
/linux-4.1.27/fs/coda/
H A Dupcall.c664 * are all mapped to -EINTR, while showing a nice warning message. (jh)

Completed in 1879 milliseconds