jh                 30 fs/jbd2/checkpoint.c static inline void __buffer_unlink_first(struct journal_head *jh)
jh                 32 fs/jbd2/checkpoint.c 	transaction_t *transaction = jh->b_cp_transaction;
jh                 34 fs/jbd2/checkpoint.c 	jh->b_cpnext->b_cpprev = jh->b_cpprev;
jh                 35 fs/jbd2/checkpoint.c 	jh->b_cpprev->b_cpnext = jh->b_cpnext;
jh                 36 fs/jbd2/checkpoint.c 	if (transaction->t_checkpoint_list == jh) {
jh                 37 fs/jbd2/checkpoint.c 		transaction->t_checkpoint_list = jh->b_cpnext;
jh                 38 fs/jbd2/checkpoint.c 		if (transaction->t_checkpoint_list == jh)
jh                 48 fs/jbd2/checkpoint.c static inline void __buffer_unlink(struct journal_head *jh)
jh                 50 fs/jbd2/checkpoint.c 	transaction_t *transaction = jh->b_cp_transaction;
jh                 52 fs/jbd2/checkpoint.c 	__buffer_unlink_first(jh);
jh                 53 fs/jbd2/checkpoint.c 	if (transaction->t_checkpoint_io_list == jh) {
jh                 54 fs/jbd2/checkpoint.c 		transaction->t_checkpoint_io_list = jh->b_cpnext;
jh                 55 fs/jbd2/checkpoint.c 		if (transaction->t_checkpoint_io_list == jh)
jh                 65 fs/jbd2/checkpoint.c static inline void __buffer_relink_io(struct journal_head *jh)
jh                 67 fs/jbd2/checkpoint.c 	transaction_t *transaction = jh->b_cp_transaction;
jh                 69 fs/jbd2/checkpoint.c 	__buffer_unlink_first(jh);
jh                 72 fs/jbd2/checkpoint.c 		jh->b_cpnext = jh->b_cpprev = jh;
jh                 74 fs/jbd2/checkpoint.c 		jh->b_cpnext = transaction->t_checkpoint_io_list;
jh                 75 fs/jbd2/checkpoint.c 		jh->b_cpprev = transaction->t_checkpoint_io_list->b_cpprev;
jh                 76 fs/jbd2/checkpoint.c 		jh->b_cpprev->b_cpnext = jh;
jh                 77 fs/jbd2/checkpoint.c 		jh->b_cpnext->b_cpprev = jh;
jh                 79 fs/jbd2/checkpoint.c 	transaction->t_checkpoint_io_list = jh;
jh                 89 fs/jbd2/checkpoint.c static int __try_to_free_cp_buf(struct journal_head *jh)
jh                 92 fs/jbd2/checkpoint.c 	struct buffer_head *bh = jh2bh(jh);
jh                 94 fs/jbd2/checkpoint.c 	if (jh->b_transaction == NULL && !buffer_locked(bh) &&
jh                 96 fs/jbd2/checkpoint.c 		JBUFFER_TRACE(jh, "remove from checkpoint list");
jh                 97 fs/jbd2/checkpoint.c 		ret = __jbd2_journal_remove_checkpoint(jh) + 1;
jh                206 fs/jbd2/checkpoint.c 	struct journal_head	*jh;
jh                249 fs/jbd2/checkpoint.c 		jh = transaction->t_checkpoint_list;
jh                250 fs/jbd2/checkpoint.c 		bh = jh2bh(jh);
jh                261 fs/jbd2/checkpoint.c 		if (jh->b_transaction != NULL) {
jh                262 fs/jbd2/checkpoint.c 			transaction_t *t = jh->b_transaction;
jh                299 fs/jbd2/checkpoint.c 			if (__jbd2_journal_remove_checkpoint(jh))
jh                316 fs/jbd2/checkpoint.c 		__buffer_relink_io(jh);
jh                345 fs/jbd2/checkpoint.c 		jh = transaction->t_checkpoint_io_list;
jh                346 fs/jbd2/checkpoint.c 		bh = jh2bh(jh);
jh                365 fs/jbd2/checkpoint.c 		if (__jbd2_journal_remove_checkpoint(jh))
jh                434 fs/jbd2/checkpoint.c static int journal_clean_one_cp_list(struct journal_head *jh, bool destroy)
jh                437 fs/jbd2/checkpoint.c 	struct journal_head *next_jh = jh;
jh                440 fs/jbd2/checkpoint.c 	if (!jh)
jh                443 fs/jbd2/checkpoint.c 	last_jh = jh->b_cpprev;
jh                445 fs/jbd2/checkpoint.c 		jh = next_jh;
jh                446 fs/jbd2/checkpoint.c 		next_jh = jh->b_cpnext;
jh                448 fs/jbd2/checkpoint.c 			ret = __try_to_free_cp_buf(jh);
jh                450 fs/jbd2/checkpoint.c 			ret = __jbd2_journal_remove_checkpoint(jh) + 1;
jh                463 fs/jbd2/checkpoint.c 	} while (jh != last_jh);
jh                560 fs/jbd2/checkpoint.c int __jbd2_journal_remove_checkpoint(struct journal_head *jh)
jh                567 fs/jbd2/checkpoint.c 	JBUFFER_TRACE(jh, "entry");
jh                569 fs/jbd2/checkpoint.c 	if ((transaction = jh->b_cp_transaction) == NULL) {
jh                570 fs/jbd2/checkpoint.c 		JBUFFER_TRACE(jh, "not on transaction");
jh                575 fs/jbd2/checkpoint.c 	JBUFFER_TRACE(jh, "removing from transaction");
jh                576 fs/jbd2/checkpoint.c 	__buffer_unlink(jh);
jh                577 fs/jbd2/checkpoint.c 	jh->b_cp_transaction = NULL;
jh                578 fs/jbd2/checkpoint.c 	jbd2_journal_put_journal_head(jh);
jh                620 fs/jbd2/checkpoint.c void __jbd2_journal_insert_checkpoint(struct journal_head *jh,
jh                623 fs/jbd2/checkpoint.c 	JBUFFER_TRACE(jh, "entry");
jh                624 fs/jbd2/checkpoint.c 	J_ASSERT_JH(jh, buffer_dirty(jh2bh(jh)) || buffer_jbddirty(jh2bh(jh)));
jh                625 fs/jbd2/checkpoint.c 	J_ASSERT_JH(jh, jh->b_cp_transaction == NULL);
jh                628 fs/jbd2/checkpoint.c 	jbd2_journal_grab_journal_head(jh2bh(jh));
jh                629 fs/jbd2/checkpoint.c 	jh->b_cp_transaction = transaction;
jh                632 fs/jbd2/checkpoint.c 		jh->b_cpnext = jh->b_cpprev = jh;
jh                634 fs/jbd2/checkpoint.c 		jh->b_cpnext = transaction->t_checkpoint_list;
jh                635 fs/jbd2/checkpoint.c 		jh->b_cpprev = transaction->t_checkpoint_list->b_cpprev;
jh                636 fs/jbd2/checkpoint.c 		jh->b_cpprev->b_cpnext = jh;
jh                637 fs/jbd2/checkpoint.c 		jh->b_cpnext->b_cpprev = jh;
jh                639 fs/jbd2/checkpoint.c 	transaction->t_checkpoint_list = jh;
jh                359 fs/jbd2/commit.c 	struct journal_head *jh;
jh                476 fs/jbd2/commit.c 		jh = commit_transaction->t_reserved_list;
jh                477 fs/jbd2/commit.c 		JBUFFER_TRACE(jh, "reserved, unused: refile");
jh                482 fs/jbd2/commit.c 		if (jh->b_committed_data) {
jh                483 fs/jbd2/commit.c 			struct buffer_head *bh = jh2bh(jh);
jh                486 fs/jbd2/commit.c 			jbd2_free(jh->b_committed_data, bh->b_size);
jh                487 fs/jbd2/commit.c 			jh->b_committed_data = NULL;
jh                490 fs/jbd2/commit.c 		jbd2_journal_refile_buffer(journal, jh);
jh                577 fs/jbd2/commit.c 		jh = commit_transaction->t_buffers;
jh                583 fs/jbd2/commit.c 			clear_buffer_jbddirty(jh2bh(jh));
jh                584 fs/jbd2/commit.c 			JBUFFER_TRACE(jh, "journal is aborting: refile");
jh                585 fs/jbd2/commit.c 			jbd2_buffer_abort_trigger(jh,
jh                586 fs/jbd2/commit.c 						  jh->b_frozen_data ?
jh                587 fs/jbd2/commit.c 						  jh->b_frozen_triggers :
jh                588 fs/jbd2/commit.c 						  jh->b_triggers);
jh                589 fs/jbd2/commit.c 			jbd2_journal_refile_buffer(journal, jh);
jh                653 fs/jbd2/commit.c 		atomic_inc(&jh2bh(jh)->b_count);
jh                659 fs/jbd2/commit.c 		set_bit(BH_JWrite, &jh2bh(jh)->b_state);
jh                660 fs/jbd2/commit.c 		JBUFFER_TRACE(jh, "ph3: write metadata");
jh                662 fs/jbd2/commit.c 						jh, &wbuf[bufs], blocknr);
jh                679 fs/jbd2/commit.c 		write_tag_block(journal, tag, jh2bh(jh)->b_blocknr);
jh                828 fs/jbd2/commit.c 		jh = commit_transaction->t_shadow_list->b_tprev;
jh                829 fs/jbd2/commit.c 		bh = jh2bh(jh);
jh                838 fs/jbd2/commit.c 		JBUFFER_TRACE(jh, "file as BJ_Forget");
jh                839 fs/jbd2/commit.c 		jbd2_journal_file_buffer(jh, commit_transaction, BJ_Forget);
jh                840 fs/jbd2/commit.c 		JBUFFER_TRACE(jh, "brelse shadowed buffer");
jh                924 fs/jbd2/commit.c 		jh = commit_transaction->t_forget;
jh                926 fs/jbd2/commit.c 		bh = jh2bh(jh);
jh                933 fs/jbd2/commit.c 		J_ASSERT_JH(jh,	jh->b_transaction == commit_transaction);
jh                948 fs/jbd2/commit.c 		if (jh->b_committed_data) {
jh                949 fs/jbd2/commit.c 			jbd2_free(jh->b_committed_data, bh->b_size);
jh                950 fs/jbd2/commit.c 			jh->b_committed_data = NULL;
jh                951 fs/jbd2/commit.c 			if (jh->b_frozen_data) {
jh                952 fs/jbd2/commit.c 				jh->b_committed_data = jh->b_frozen_data;
jh                953 fs/jbd2/commit.c 				jh->b_frozen_data = NULL;
jh                954 fs/jbd2/commit.c 				jh->b_frozen_triggers = NULL;
jh                956 fs/jbd2/commit.c 		} else if (jh->b_frozen_data) {
jh                957 fs/jbd2/commit.c 			jbd2_free(jh->b_frozen_data, bh->b_size);
jh                958 fs/jbd2/commit.c 			jh->b_frozen_data = NULL;
jh                959 fs/jbd2/commit.c 			jh->b_frozen_triggers = NULL;
jh                963 fs/jbd2/commit.c 		cp_transaction = jh->b_cp_transaction;
jh                965 fs/jbd2/commit.c 			JBUFFER_TRACE(jh, "remove from old cp transaction");
jh                967 fs/jbd2/commit.c 			__jbd2_journal_remove_checkpoint(jh);
jh                985 fs/jbd2/commit.c 		if (buffer_freed(bh) && !jh->b_next_transaction) {
jh               1013 fs/jbd2/commit.c 			JBUFFER_TRACE(jh, "add to new checkpointing trans");
jh               1014 fs/jbd2/commit.c 			__jbd2_journal_insert_checkpoint(jh, commit_transaction);
jh               1028 fs/jbd2/commit.c 			if (!jh->b_next_transaction)
jh               1031 fs/jbd2/commit.c 		JBUFFER_TRACE(jh, "refile or unfile buffer");
jh               1032 fs/jbd2/commit.c 		__jbd2_journal_refile_buffer(jh);
jh               2413 fs/jbd2/journal.c static void journal_free_journal_head(struct journal_head *jh)
jh               2417 fs/jbd2/journal.c 	memset(jh, JBD2_POISON_FREE, sizeof(*jh));
jh               2419 fs/jbd2/journal.c 	kmem_cache_free(jbd2_journal_head_cache, jh);
jh               2465 fs/jbd2/journal.c 	struct journal_head *jh;
jh               2474 fs/jbd2/journal.c 		jh = bh2jh(bh);
jh               2485 fs/jbd2/journal.c 		jh = new_jh;
jh               2488 fs/jbd2/journal.c 		bh->b_private = jh;
jh               2489 fs/jbd2/journal.c 		jh->b_bh = bh;
jh               2493 fs/jbd2/journal.c 	jh->b_jcount++;
jh               2506 fs/jbd2/journal.c 	struct journal_head *jh = NULL;
jh               2510 fs/jbd2/journal.c 		jh = bh2jh(bh);
jh               2511 fs/jbd2/journal.c 		jh->b_jcount++;
jh               2514 fs/jbd2/journal.c 	return jh;
jh               2519 fs/jbd2/journal.c 	struct journal_head *jh = bh2jh(bh);
jh               2521 fs/jbd2/journal.c 	J_ASSERT_JH(jh, jh->b_jcount >= 0);
jh               2522 fs/jbd2/journal.c 	J_ASSERT_JH(jh, jh->b_transaction == NULL);
jh               2523 fs/jbd2/journal.c 	J_ASSERT_JH(jh, jh->b_next_transaction == NULL);
jh               2524 fs/jbd2/journal.c 	J_ASSERT_JH(jh, jh->b_cp_transaction == NULL);
jh               2525 fs/jbd2/journal.c 	J_ASSERT_JH(jh, jh->b_jlist == BJ_None);
jh               2527 fs/jbd2/journal.c 	J_ASSERT_BH(bh, jh2bh(jh) == bh);
jh               2529 fs/jbd2/journal.c 	if (jh->b_frozen_data) {
jh               2531 fs/jbd2/journal.c 		jbd2_free(jh->b_frozen_data, bh->b_size);
jh               2533 fs/jbd2/journal.c 	if (jh->b_committed_data) {
jh               2535 fs/jbd2/journal.c 		jbd2_free(jh->b_committed_data, bh->b_size);
jh               2538 fs/jbd2/journal.c 	jh->b_bh = NULL;	/* debug, really */
jh               2540 fs/jbd2/journal.c 	journal_free_journal_head(jh);
jh               2547 fs/jbd2/journal.c void jbd2_journal_put_journal_head(struct journal_head *jh)
jh               2549 fs/jbd2/journal.c 	struct buffer_head *bh = jh2bh(jh);
jh               2552 fs/jbd2/journal.c 	J_ASSERT_JH(jh, jh->b_jcount > 0);
jh               2553 fs/jbd2/journal.c 	--jh->b_jcount;
jh               2554 fs/jbd2/journal.c 	if (!jh->b_jcount) {
jh                417 fs/jbd2/revoke.c int jbd2_journal_cancel_revoke(handle_t *handle, struct journal_head *jh)
jh                423 fs/jbd2/revoke.c 	struct buffer_head *bh = jh2bh(jh);
jh                425 fs/jbd2/revoke.c 	jbd_debug(4, "journal_head %p, cancelling revoke\n", jh);
jh                454 fs/jbd2/revoke.c 	J_ASSERT_JH(jh, record == NULL);
jh                 33 fs/jbd2/transaction.c static void __jbd2_journal_temp_unlink_buffer(struct journal_head *jh);
jh                 34 fs/jbd2/transaction.c static void __jbd2_journal_unfile_buffer(struct journal_head *jh);
jh                824 fs/jbd2/transaction.c static void jbd2_freeze_jh_data(struct journal_head *jh)
jh                829 fs/jbd2/transaction.c 	struct buffer_head *bh = jh2bh(jh);
jh                831 fs/jbd2/transaction.c 	J_EXPECT_JH(jh, buffer_uptodate(bh), "Possible IO failure.\n");
jh                836 fs/jbd2/transaction.c 	jbd2_buffer_frozen_trigger(jh, source + offset, jh->b_triggers);
jh                837 fs/jbd2/transaction.c 	memcpy(jh->b_frozen_data, source + offset, bh->b_size);
jh                844 fs/jbd2/transaction.c 	jh->b_frozen_triggers = jh->b_triggers;
jh                858 fs/jbd2/transaction.c do_get_write_access(handle_t *handle, struct journal_head *jh,
jh                870 fs/jbd2/transaction.c 	jbd_debug(5, "journal_head %p, force_copy %d\n", jh, force_copy);
jh                872 fs/jbd2/transaction.c 	JBUFFER_TRACE(jh, "entry");
jh                874 fs/jbd2/transaction.c 	bh = jh2bh(jh);
jh                906 fs/jbd2/transaction.c 		if (jh->b_transaction) {
jh                907 fs/jbd2/transaction.c 			J_ASSERT_JH(jh,
jh                908 fs/jbd2/transaction.c 				jh->b_transaction == transaction ||
jh                909 fs/jbd2/transaction.c 				jh->b_transaction ==
jh                911 fs/jbd2/transaction.c 			if (jh->b_next_transaction)
jh                912 fs/jbd2/transaction.c 				J_ASSERT_JH(jh, jh->b_next_transaction ==
jh                921 fs/jbd2/transaction.c 		JBUFFER_TRACE(jh, "Journalling dirty buffer");
jh                939 fs/jbd2/transaction.c 	if (jh->b_transaction == transaction ||
jh                940 fs/jbd2/transaction.c 	    jh->b_next_transaction == transaction)
jh                947 fs/jbd2/transaction.c 	jh->b_modified = 0;
jh                954 fs/jbd2/transaction.c 	if (!jh->b_transaction) {
jh                955 fs/jbd2/transaction.c 		JBUFFER_TRACE(jh, "no transaction");
jh                956 fs/jbd2/transaction.c 		J_ASSERT_JH(jh, !jh->b_next_transaction);
jh                957 fs/jbd2/transaction.c 		JBUFFER_TRACE(jh, "file as BJ_Reserved");
jh                965 fs/jbd2/transaction.c 		__jbd2_journal_file_buffer(jh, transaction, BJ_Reserved);
jh                973 fs/jbd2/transaction.c 	if (jh->b_frozen_data) {
jh                974 fs/jbd2/transaction.c 		JBUFFER_TRACE(jh, "has frozen data");
jh                975 fs/jbd2/transaction.c 		J_ASSERT_JH(jh, jh->b_next_transaction == NULL);
jh                979 fs/jbd2/transaction.c 	JBUFFER_TRACE(jh, "owned by older transaction");
jh                980 fs/jbd2/transaction.c 	J_ASSERT_JH(jh, jh->b_next_transaction == NULL);
jh                981 fs/jbd2/transaction.c 	J_ASSERT_JH(jh, jh->b_transaction == journal->j_committing_transaction);
jh                993 fs/jbd2/transaction.c 		JBUFFER_TRACE(jh, "on shadow: sleep");
jh               1011 fs/jbd2/transaction.c 	if (jh->b_jlist == BJ_Metadata || force_copy) {
jh               1012 fs/jbd2/transaction.c 		JBUFFER_TRACE(jh, "generate frozen data");
jh               1014 fs/jbd2/transaction.c 			JBUFFER_TRACE(jh, "allocate memory for buffer");
jh               1016 fs/jbd2/transaction.c 			frozen_buffer = jbd2_alloc(jh2bh(jh)->b_size,
jh               1020 fs/jbd2/transaction.c 		jh->b_frozen_data = frozen_buffer;
jh               1022 fs/jbd2/transaction.c 		jbd2_freeze_jh_data(jh);
jh               1031 fs/jbd2/transaction.c 	jh->b_next_transaction = transaction;
jh               1040 fs/jbd2/transaction.c 	jbd2_journal_cancel_revoke(handle, jh);
jh               1046 fs/jbd2/transaction.c 	JBUFFER_TRACE(jh, "exit");
jh               1054 fs/jbd2/transaction.c 	struct journal_head *jh;
jh               1076 fs/jbd2/transaction.c 	jh = READ_ONCE(bh->b_private);
jh               1077 fs/jbd2/transaction.c 	if (!jh)
jh               1080 fs/jbd2/transaction.c 	if (undo && !jh->b_committed_data)
jh               1082 fs/jbd2/transaction.c 	if (READ_ONCE(jh->b_transaction) != handle->h_transaction &&
jh               1083 fs/jbd2/transaction.c 	    READ_ONCE(jh->b_next_transaction) != handle->h_transaction)
jh               1095 fs/jbd2/transaction.c 	if (unlikely(jh->b_bh != bh))
jh               1116 fs/jbd2/transaction.c 	struct journal_head *jh;
jh               1125 fs/jbd2/transaction.c 	jh = jbd2_journal_add_journal_head(bh);
jh               1129 fs/jbd2/transaction.c 	rc = do_get_write_access(handle, jh, 0);
jh               1130 fs/jbd2/transaction.c 	jbd2_journal_put_journal_head(jh);
jh               1158 fs/jbd2/transaction.c 	struct journal_head *jh = jbd2_journal_add_journal_head(bh);
jh               1161 fs/jbd2/transaction.c 	jbd_debug(5, "journal_head %p\n", jh);
jh               1168 fs/jbd2/transaction.c 	JBUFFER_TRACE(jh, "entry");
jh               1177 fs/jbd2/transaction.c 	J_ASSERT_JH(jh, (jh->b_transaction == transaction ||
jh               1178 fs/jbd2/transaction.c 		jh->b_transaction == NULL ||
jh               1179 fs/jbd2/transaction.c 		(jh->b_transaction == journal->j_committing_transaction &&
jh               1180 fs/jbd2/transaction.c 			  jh->b_jlist == BJ_Forget)));
jh               1182 fs/jbd2/transaction.c 	J_ASSERT_JH(jh, jh->b_next_transaction == NULL);
jh               1183 fs/jbd2/transaction.c 	J_ASSERT_JH(jh, buffer_locked(jh2bh(jh)));
jh               1185 fs/jbd2/transaction.c 	if (jh->b_transaction == NULL) {
jh               1194 fs/jbd2/transaction.c 		clear_buffer_dirty(jh2bh(jh));
jh               1196 fs/jbd2/transaction.c 		jh->b_modified = 0;
jh               1198 fs/jbd2/transaction.c 		JBUFFER_TRACE(jh, "file as BJ_Reserved");
jh               1200 fs/jbd2/transaction.c 		__jbd2_journal_file_buffer(jh, transaction, BJ_Reserved);
jh               1202 fs/jbd2/transaction.c 	} else if (jh->b_transaction == journal->j_committing_transaction) {
jh               1204 fs/jbd2/transaction.c 		jh->b_modified = 0;
jh               1206 fs/jbd2/transaction.c 		JBUFFER_TRACE(jh, "set next transaction");
jh               1208 fs/jbd2/transaction.c 		jh->b_next_transaction = transaction;
jh               1220 fs/jbd2/transaction.c 	JBUFFER_TRACE(jh, "cancelling revoke");
jh               1221 fs/jbd2/transaction.c 	jbd2_journal_cancel_revoke(handle, jh);
jh               1223 fs/jbd2/transaction.c 	jbd2_journal_put_journal_head(jh);
jh               1256 fs/jbd2/transaction.c 	struct journal_head *jh;
jh               1265 fs/jbd2/transaction.c 	jh = jbd2_journal_add_journal_head(bh);
jh               1266 fs/jbd2/transaction.c 	JBUFFER_TRACE(jh, "entry");
jh               1273 fs/jbd2/transaction.c 	err = do_get_write_access(handle, jh, 1);
jh               1278 fs/jbd2/transaction.c 	if (!jh->b_committed_data)
jh               1279 fs/jbd2/transaction.c 		committed_data = jbd2_alloc(jh2bh(jh)->b_size,
jh               1283 fs/jbd2/transaction.c 	if (!jh->b_committed_data) {
jh               1286 fs/jbd2/transaction.c 		JBUFFER_TRACE(jh, "generate b_committed data");
jh               1292 fs/jbd2/transaction.c 		jh->b_committed_data = committed_data;
jh               1294 fs/jbd2/transaction.c 		memcpy(jh->b_committed_data, bh->b_data, bh->b_size);
jh               1298 fs/jbd2/transaction.c 	jbd2_journal_put_journal_head(jh);
jh               1318 fs/jbd2/transaction.c 	struct journal_head *jh = jbd2_journal_grab_journal_head(bh);
jh               1320 fs/jbd2/transaction.c 	if (WARN_ON(!jh))
jh               1322 fs/jbd2/transaction.c 	jh->b_triggers = type;
jh               1323 fs/jbd2/transaction.c 	jbd2_journal_put_journal_head(jh);
jh               1326 fs/jbd2/transaction.c void jbd2_buffer_frozen_trigger(struct journal_head *jh, void *mapped_data,
jh               1329 fs/jbd2/transaction.c 	struct buffer_head *bh = jh2bh(jh);
jh               1337 fs/jbd2/transaction.c void jbd2_buffer_abort_trigger(struct journal_head *jh,
jh               1343 fs/jbd2/transaction.c 	triggers->t_abort(triggers, jh2bh(jh));
jh               1373 fs/jbd2/transaction.c 	struct journal_head *jh;
jh               1385 fs/jbd2/transaction.c 	jh = bh2jh(bh);
jh               1386 fs/jbd2/transaction.c 	jbd_debug(5, "journal_head %p\n", jh);
jh               1387 fs/jbd2/transaction.c 	JBUFFER_TRACE(jh, "entry");
jh               1395 fs/jbd2/transaction.c 	if (jh->b_transaction != transaction &&
jh               1396 fs/jbd2/transaction.c 	    jh->b_next_transaction != transaction) {
jh               1398 fs/jbd2/transaction.c 		J_ASSERT_JH(jh, jh->b_transaction == transaction ||
jh               1399 fs/jbd2/transaction.c 				jh->b_next_transaction == transaction);
jh               1402 fs/jbd2/transaction.c 	if (jh->b_modified == 1) {
jh               1404 fs/jbd2/transaction.c 		if (jh->b_transaction == transaction &&
jh               1405 fs/jbd2/transaction.c 		    jh->b_jlist != BJ_Metadata) {
jh               1407 fs/jbd2/transaction.c 			if (jh->b_transaction == transaction &&
jh               1408 fs/jbd2/transaction.c 			    jh->b_jlist != BJ_Metadata)
jh               1413 fs/jbd2/transaction.c 				       jh->b_jlist);
jh               1414 fs/jbd2/transaction.c 			J_ASSERT_JH(jh, jh->b_transaction != transaction ||
jh               1415 fs/jbd2/transaction.c 					jh->b_jlist == BJ_Metadata);
jh               1424 fs/jbd2/transaction.c 	if (jh->b_modified == 0) {
jh               1434 fs/jbd2/transaction.c 		jh->b_modified = 1;
jh               1445 fs/jbd2/transaction.c 	if (jh->b_transaction == transaction && jh->b_jlist == BJ_Metadata) {
jh               1446 fs/jbd2/transaction.c 		JBUFFER_TRACE(jh, "fastpath");
jh               1447 fs/jbd2/transaction.c 		if (unlikely(jh->b_transaction !=
jh               1454 fs/jbd2/transaction.c 			       jh->b_transaction,
jh               1455 fs/jbd2/transaction.c 			       jh->b_transaction ? jh->b_transaction->t_tid : 0,
jh               1472 fs/jbd2/transaction.c 	if (jh->b_transaction != transaction) {
jh               1473 fs/jbd2/transaction.c 		JBUFFER_TRACE(jh, "already on other transaction");
jh               1474 fs/jbd2/transaction.c 		if (unlikely(((jh->b_transaction !=
jh               1476 fs/jbd2/transaction.c 			     (jh->b_next_transaction != transaction))) {
jh               1485 fs/jbd2/transaction.c 			       jh->b_transaction,
jh               1486 fs/jbd2/transaction.c 			       jh->b_transaction ?
jh               1487 fs/jbd2/transaction.c 			       jh->b_transaction->t_tid : 0,
jh               1488 fs/jbd2/transaction.c 			       jh->b_next_transaction,
jh               1489 fs/jbd2/transaction.c 			       jh->b_next_transaction ?
jh               1490 fs/jbd2/transaction.c 			       jh->b_next_transaction->t_tid : 0,
jh               1491 fs/jbd2/transaction.c 			       jh->b_jlist);
jh               1501 fs/jbd2/transaction.c 	J_ASSERT_JH(jh, jh->b_frozen_data == NULL);
jh               1503 fs/jbd2/transaction.c 	JBUFFER_TRACE(jh, "file as BJ_Metadata");
jh               1505 fs/jbd2/transaction.c 	__jbd2_journal_file_buffer(jh, transaction, BJ_Metadata);
jh               1510 fs/jbd2/transaction.c 	JBUFFER_TRACE(jh, "exit");
jh               1535 fs/jbd2/transaction.c 	struct journal_head *jh;
jh               1550 fs/jbd2/transaction.c 	jh = bh2jh(bh);
jh               1554 fs/jbd2/transaction.c 	if (!J_EXPECT_JH(jh, !jh->b_committed_data,
jh               1561 fs/jbd2/transaction.c 	was_modified = jh->b_modified;
jh               1567 fs/jbd2/transaction.c 	jh->b_modified = 0;
jh               1569 fs/jbd2/transaction.c 	if (jh->b_transaction == transaction) {
jh               1570 fs/jbd2/transaction.c 		J_ASSERT_JH(jh, !jh->b_frozen_data);
jh               1578 fs/jbd2/transaction.c 		JBUFFER_TRACE(jh, "belongs to current transaction: unfile");
jh               1600 fs/jbd2/transaction.c 		if (jh->b_cp_transaction) {
jh               1601 fs/jbd2/transaction.c 			__jbd2_journal_temp_unlink_buffer(jh);
jh               1602 fs/jbd2/transaction.c 			__jbd2_journal_file_buffer(jh, transaction, BJ_Forget);
jh               1604 fs/jbd2/transaction.c 			__jbd2_journal_unfile_buffer(jh);
jh               1611 fs/jbd2/transaction.c 	} else if (jh->b_transaction) {
jh               1612 fs/jbd2/transaction.c 		J_ASSERT_JH(jh, (jh->b_transaction ==
jh               1616 fs/jbd2/transaction.c 		JBUFFER_TRACE(jh, "belongs to older transaction");
jh               1626 fs/jbd2/transaction.c 		if (!jh->b_next_transaction) {
jh               1628 fs/jbd2/transaction.c 			jh->b_next_transaction = transaction;
jh               1631 fs/jbd2/transaction.c 			J_ASSERT(jh->b_next_transaction == transaction);
jh               1647 fs/jbd2/transaction.c 		if (!jh->b_cp_transaction) {
jh               1648 fs/jbd2/transaction.c 			JBUFFER_TRACE(jh, "belongs to none transaction");
jh               1658 fs/jbd2/transaction.c 			__jbd2_journal_remove_checkpoint(jh);
jh               1670 fs/jbd2/transaction.c 		__jbd2_journal_file_buffer(jh, transaction, BJ_Forget);
jh               1889 fs/jbd2/transaction.c __blist_add_buffer(struct journal_head **list, struct journal_head *jh)
jh               1892 fs/jbd2/transaction.c 		jh->b_tnext = jh->b_tprev = jh;
jh               1893 fs/jbd2/transaction.c 		*list = jh;
jh               1897 fs/jbd2/transaction.c 		jh->b_tprev = last;
jh               1898 fs/jbd2/transaction.c 		jh->b_tnext = first;
jh               1899 fs/jbd2/transaction.c 		last->b_tnext = first->b_tprev = jh;
jh               1913 fs/jbd2/transaction.c __blist_del_buffer(struct journal_head **list, struct journal_head *jh)
jh               1915 fs/jbd2/transaction.c 	if (*list == jh) {
jh               1916 fs/jbd2/transaction.c 		*list = jh->b_tnext;
jh               1917 fs/jbd2/transaction.c 		if (*list == jh)
jh               1920 fs/jbd2/transaction.c 	jh->b_tprev->b_tnext = jh->b_tnext;
jh               1921 fs/jbd2/transaction.c 	jh->b_tnext->b_tprev = jh->b_tprev;
jh               1935 fs/jbd2/transaction.c static void __jbd2_journal_temp_unlink_buffer(struct journal_head *jh)
jh               1939 fs/jbd2/transaction.c 	struct buffer_head *bh = jh2bh(jh);
jh               1941 fs/jbd2/transaction.c 	J_ASSERT_JH(jh, jbd_is_locked_bh_state(bh));
jh               1942 fs/jbd2/transaction.c 	transaction = jh->b_transaction;
jh               1946 fs/jbd2/transaction.c 	J_ASSERT_JH(jh, jh->b_jlist < BJ_Types);
jh               1947 fs/jbd2/transaction.c 	if (jh->b_jlist != BJ_None)
jh               1948 fs/jbd2/transaction.c 		J_ASSERT_JH(jh, transaction != NULL);
jh               1950 fs/jbd2/transaction.c 	switch (jh->b_jlist) {
jh               1955 fs/jbd2/transaction.c 		J_ASSERT_JH(jh, transaction->t_nr_buffers >= 0);
jh               1969 fs/jbd2/transaction.c 	__blist_del_buffer(list, jh);
jh               1970 fs/jbd2/transaction.c 	jh->b_jlist = BJ_None;
jh               1984 fs/jbd2/transaction.c static void __jbd2_journal_unfile_buffer(struct journal_head *jh)
jh               1986 fs/jbd2/transaction.c 	__jbd2_journal_temp_unlink_buffer(jh);
jh               1987 fs/jbd2/transaction.c 	jh->b_transaction = NULL;
jh               1988 fs/jbd2/transaction.c 	jbd2_journal_put_journal_head(jh);
jh               1991 fs/jbd2/transaction.c void jbd2_journal_unfile_buffer(journal_t *journal, struct journal_head *jh)
jh               1993 fs/jbd2/transaction.c 	struct buffer_head *bh = jh2bh(jh);
jh               1999 fs/jbd2/transaction.c 	__jbd2_journal_unfile_buffer(jh);
jh               2013 fs/jbd2/transaction.c 	struct journal_head *jh;
jh               2015 fs/jbd2/transaction.c 	jh = bh2jh(bh);
jh               2020 fs/jbd2/transaction.c 	if (jh->b_next_transaction != NULL || jh->b_transaction != NULL)
jh               2024 fs/jbd2/transaction.c 	if (jh->b_cp_transaction != NULL) {
jh               2026 fs/jbd2/transaction.c 		JBUFFER_TRACE(jh, "remove from checkpoint list");
jh               2027 fs/jbd2/transaction.c 		__jbd2_journal_remove_checkpoint(jh);
jh               2084 fs/jbd2/transaction.c 		struct journal_head *jh;
jh               2091 fs/jbd2/transaction.c 		jh = jbd2_journal_grab_journal_head(bh);
jh               2092 fs/jbd2/transaction.c 		if (!jh)
jh               2097 fs/jbd2/transaction.c 		jbd2_journal_put_journal_head(jh);
jh               2121 fs/jbd2/transaction.c static int __dispose_buffer(struct journal_head *jh, transaction_t *transaction)
jh               2124 fs/jbd2/transaction.c 	struct buffer_head *bh = jh2bh(jh);
jh               2126 fs/jbd2/transaction.c 	if (jh->b_cp_transaction) {
jh               2127 fs/jbd2/transaction.c 		JBUFFER_TRACE(jh, "on running+cp transaction");
jh               2128 fs/jbd2/transaction.c 		__jbd2_journal_temp_unlink_buffer(jh);
jh               2135 fs/jbd2/transaction.c 		__jbd2_journal_file_buffer(jh, transaction, BJ_Forget);
jh               2138 fs/jbd2/transaction.c 		JBUFFER_TRACE(jh, "on running transaction");
jh               2139 fs/jbd2/transaction.c 		__jbd2_journal_unfile_buffer(jh);
jh               2195 fs/jbd2/transaction.c 	struct journal_head *jh;
jh               2214 fs/jbd2/transaction.c 	jh = jbd2_journal_grab_journal_head(bh);
jh               2215 fs/jbd2/transaction.c 	if (!jh)
jh               2241 fs/jbd2/transaction.c 	transaction = jh->b_transaction;
jh               2247 fs/jbd2/transaction.c 		if (!jh->b_cp_transaction) {
jh               2248 fs/jbd2/transaction.c 			JBUFFER_TRACE(jh, "not on any transaction: zap");
jh               2254 fs/jbd2/transaction.c 			__jbd2_journal_remove_checkpoint(jh);
jh               2266 fs/jbd2/transaction.c 			JBUFFER_TRACE(jh, "checkpointed: add to BJ_Forget");
jh               2267 fs/jbd2/transaction.c 			may_free = __dispose_buffer(jh,
jh               2276 fs/jbd2/transaction.c 				JBUFFER_TRACE(jh, "give to committing trans");
jh               2277 fs/jbd2/transaction.c 				may_free = __dispose_buffer(jh,
jh               2284 fs/jbd2/transaction.c 				__jbd2_journal_remove_checkpoint(jh);
jh               2289 fs/jbd2/transaction.c 		JBUFFER_TRACE(jh, "on committing transaction");
jh               2296 fs/jbd2/transaction.c 			jbd2_journal_put_journal_head(jh);
jh               2311 fs/jbd2/transaction.c 			jh->b_next_transaction = journal->j_running_transaction;
jh               2312 fs/jbd2/transaction.c 		jh->b_modified = 0;
jh               2313 fs/jbd2/transaction.c 		jbd2_journal_put_journal_head(jh);
jh               2325 fs/jbd2/transaction.c 		J_ASSERT_JH(jh, transaction == journal->j_running_transaction);
jh               2326 fs/jbd2/transaction.c 		JBUFFER_TRACE(jh, "on running transaction");
jh               2327 fs/jbd2/transaction.c 		may_free = __dispose_buffer(jh, transaction);
jh               2339 fs/jbd2/transaction.c 	jh->b_modified = 0;
jh               2340 fs/jbd2/transaction.c 	jbd2_journal_put_journal_head(jh);
jh               2424 fs/jbd2/transaction.c void __jbd2_journal_file_buffer(struct journal_head *jh,
jh               2429 fs/jbd2/transaction.c 	struct buffer_head *bh = jh2bh(jh);
jh               2431 fs/jbd2/transaction.c 	J_ASSERT_JH(jh, jbd_is_locked_bh_state(bh));
jh               2434 fs/jbd2/transaction.c 	J_ASSERT_JH(jh, jh->b_jlist < BJ_Types);
jh               2435 fs/jbd2/transaction.c 	J_ASSERT_JH(jh, jh->b_transaction == transaction ||
jh               2436 fs/jbd2/transaction.c 				jh->b_transaction == NULL);
jh               2438 fs/jbd2/transaction.c 	if (jh->b_transaction && jh->b_jlist == jlist)
jh               2457 fs/jbd2/transaction.c 	if (jh->b_transaction)
jh               2458 fs/jbd2/transaction.c 		__jbd2_journal_temp_unlink_buffer(jh);
jh               2461 fs/jbd2/transaction.c 	jh->b_transaction = transaction;
jh               2465 fs/jbd2/transaction.c 		J_ASSERT_JH(jh, !jh->b_committed_data);
jh               2466 fs/jbd2/transaction.c 		J_ASSERT_JH(jh, !jh->b_frozen_data);
jh               2483 fs/jbd2/transaction.c 	__blist_add_buffer(list, jh);
jh               2484 fs/jbd2/transaction.c 	jh->b_jlist = jlist;
jh               2490 fs/jbd2/transaction.c void jbd2_journal_file_buffer(struct journal_head *jh,
jh               2493 fs/jbd2/transaction.c 	jbd_lock_bh_state(jh2bh(jh));
jh               2495 fs/jbd2/transaction.c 	__jbd2_journal_file_buffer(jh, transaction, jlist);
jh               2497 fs/jbd2/transaction.c 	jbd_unlock_bh_state(jh2bh(jh));
jh               2511 fs/jbd2/transaction.c void __jbd2_journal_refile_buffer(struct journal_head *jh)
jh               2514 fs/jbd2/transaction.c 	struct buffer_head *bh = jh2bh(jh);
jh               2516 fs/jbd2/transaction.c 	J_ASSERT_JH(jh, jbd_is_locked_bh_state(bh));
jh               2517 fs/jbd2/transaction.c 	if (jh->b_transaction)
jh               2518 fs/jbd2/transaction.c 		assert_spin_locked(&jh->b_transaction->t_journal->j_list_lock);
jh               2521 fs/jbd2/transaction.c 	if (jh->b_next_transaction == NULL) {
jh               2522 fs/jbd2/transaction.c 		__jbd2_journal_unfile_buffer(jh);
jh               2532 fs/jbd2/transaction.c 	__jbd2_journal_temp_unlink_buffer(jh);
jh               2538 fs/jbd2/transaction.c 	WRITE_ONCE(jh->b_transaction, jh->b_next_transaction);
jh               2539 fs/jbd2/transaction.c 	WRITE_ONCE(jh->b_next_transaction, NULL);
jh               2542 fs/jbd2/transaction.c 	else if (jh->b_modified)
jh               2546 fs/jbd2/transaction.c 	__jbd2_journal_file_buffer(jh, jh->b_transaction, jlist);
jh               2547 fs/jbd2/transaction.c 	J_ASSERT_JH(jh, jh->b_transaction->t_state == T_RUNNING);
jh               2559 fs/jbd2/transaction.c void jbd2_journal_refile_buffer(journal_t *journal, struct journal_head *jh)
jh               2561 fs/jbd2/transaction.c 	struct buffer_head *bh = jh2bh(jh);
jh               2567 fs/jbd2/transaction.c 	__jbd2_journal_refile_buffer(jh);
jh               3128 fs/reiserfs/inode.c 		struct reiserfs_jh *jh = bh->b_private;
jh               3144 fs/reiserfs/inode.c 		if (jh && (jl = jh->jl)
jh                716 fs/reiserfs/journal.c 	struct reiserfs_jh *jh;
jh                718 fs/reiserfs/journal.c 		jh = kmalloc(sizeof(*jh), GFP_NOFS);
jh                719 fs/reiserfs/journal.c 		if (jh) {
jh                721 fs/reiserfs/journal.c 			return jh;
jh                733 fs/reiserfs/journal.c 	struct reiserfs_jh *jh;
jh                735 fs/reiserfs/journal.c 	jh = bh->b_private;
jh                736 fs/reiserfs/journal.c 	if (jh) {
jh                738 fs/reiserfs/journal.c 		jh->bh = NULL;
jh                739 fs/reiserfs/journal.c 		list_del_init(&jh->list);
jh                740 fs/reiserfs/journal.c 		kfree(jh);
jh                751 fs/reiserfs/journal.c 	struct reiserfs_jh *jh;
jh                759 fs/reiserfs/journal.c 		jh = bh->b_private;
jh                760 fs/reiserfs/journal.c 		list_del_init(&jh->list);
jh                764 fs/reiserfs/journal.c 		jh = alloc_jh();
jh                771 fs/reiserfs/journal.c 		jh->bh = bh;
jh                772 fs/reiserfs/journal.c 		bh->b_private = jh;
jh                774 fs/reiserfs/journal.c 	jh->jl = j->j_current_jl;
jh                776 fs/reiserfs/journal.c 		list_add_tail(&jh->list, &jh->jl->j_tail_bh_list);
jh                778 fs/reiserfs/journal.c 		list_add_tail(&jh->list, &jh->jl->j_bh_list);
jh                800 fs/reiserfs/journal.c 	struct reiserfs_jh *jh;
jh                809 fs/reiserfs/journal.c 		jh = JH_ENTRY(list->next);
jh                810 fs/reiserfs/journal.c 		bh = jh->bh;
jh                814 fs/reiserfs/journal.c 				list_move(&jh->list, &tmp);
jh                835 fs/reiserfs/journal.c 			list_move(&jh->list, &tmp);
jh                851 fs/reiserfs/journal.c 		jh = JH_ENTRY(tmp.prev);
jh                852 fs/reiserfs/journal.c 		bh = jh->bh;
jh               1240 fs/reiserfs/journal.c 	struct reiserfs_journal_header *jh;
jh               1262 fs/reiserfs/journal.c 		jh = (struct reiserfs_journal_header *)(journal->j_header_bh->
jh               1264 fs/reiserfs/journal.c 		jh->j_last_flush_trans_id = cpu_to_le32(trans_id);
jh               1265 fs/reiserfs/journal.c 		jh->j_first_unflushed_offset = cpu_to_le32(offset);
jh               1266 fs/reiserfs/journal.c 		jh->j_mount_id = cpu_to_le32(journal->j_mount_id);
jh               2380 fs/reiserfs/journal.c 	struct reiserfs_journal_header *jh;
jh               2402 fs/reiserfs/journal.c 	jh = (struct reiserfs_journal_header *)(journal->j_header_bh->b_data);
jh               2403 fs/reiserfs/journal.c 	if (le32_to_cpu(jh->j_first_unflushed_offset) <
jh               2405 fs/reiserfs/journal.c 	    && le32_to_cpu(jh->j_last_flush_trans_id) > 0) {
jh               2408 fs/reiserfs/journal.c 		    le32_to_cpu(jh->j_first_unflushed_offset);
jh               2409 fs/reiserfs/journal.c 		oldest_trans_id = le32_to_cpu(jh->j_last_flush_trans_id) + 1;
jh               2410 fs/reiserfs/journal.c 		newest_mount_id = le32_to_cpu(jh->j_mount_id);
jh               2414 fs/reiserfs/journal.c 			       "%lu", le32_to_cpu(jh->j_first_unflushed_offset),
jh               2415 fs/reiserfs/journal.c 			       le32_to_cpu(jh->j_last_flush_trans_id));
jh               2426 fs/reiserfs/journal.c 				  le32_to_cpu(jh->j_first_unflushed_offset));
jh               2532 fs/reiserfs/journal.c 		journal->j_start = le32_to_cpu(jh->j_first_unflushed_offset);
jh               2534 fs/reiserfs/journal.c 		    le32_to_cpu(jh->j_last_flush_trans_id) + 1;
jh               2539 fs/reiserfs/journal.c 		    le32_to_cpu(jh->j_last_flush_trans_id);
jh               2540 fs/reiserfs/journal.c 		journal->j_mount_id = le32_to_cpu(jh->j_mount_id) + 1;
jh               2718 fs/reiserfs/journal.c 	struct reiserfs_journal_header *jh;
jh               2783 fs/reiserfs/journal.c 	jh = (struct reiserfs_journal_header *)(bhjh->b_data);
jh               2787 fs/reiserfs/journal.c 	    && (le32_to_cpu(jh->jh_journal.jp_journal_magic) !=
jh               2792 fs/reiserfs/journal.c 				 jh->jh_journal.jp_journal_magic,
jh               2799 fs/reiserfs/journal.c 	journal->j_trans_max = le32_to_cpu(jh->jh_journal.jp_journal_trans_max);
jh               2800 fs/reiserfs/journal.c 	journal->j_max_batch = le32_to_cpu(jh->jh_journal.jp_journal_max_batch);
jh               2802 fs/reiserfs/journal.c 	    le32_to_cpu(jh->jh_journal.jp_journal_max_commit_age);
jh                515 fs/ubifs/replay.c 	struct ubifs_jhead *jh = &c->jheads[bud->jhead];
jh                520 fs/ubifs/replay.c 	if (list_is_last(&bud->list, &jh->buds_list))
jh                551 fs/ubifs/replay.c 	if (!list_is_last(&next->list, &jh->buds_list))
jh                335 include/linux/jbd2.h static inline struct buffer_head *jh2bh(struct journal_head *jh)
jh                337 include/linux/jbd2.h 	return jh->b_bh;
jh                378 include/linux/jbd2.h #define J_ASSERT_JH(jh, expr)	J_ASSERT(expr)
jh                383 include/linux/jbd2.h #define J_EXPECT_JH(jh, expr, why...)	J_ASSERT_JH(jh, expr)
jh                398 include/linux/jbd2.h #define J_EXPECT_JH(jh, expr, why...)	__journal_expect(expr, ## why)
jh               1317 include/linux/jbd2.h extern void jbd2_buffer_frozen_trigger(struct journal_head *jh,
jh               1320 include/linux/jbd2.h extern void jbd2_buffer_abort_trigger(struct journal_head *jh,
jh               1429 include/linux/jbd2.h void jbd2_journal_put_journal_head(struct journal_head *jh);
jh               1655 include/linux/jbd2.h #define JBUFFER_TRACE(jh, info)	do {} while (0)