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)