Lines Matching refs:jh

33 static void __jbd2_journal_temp_unlink_buffer(struct journal_head *jh);
34 static void __jbd2_journal_unfile_buffer(struct journal_head *jh);
936 static void jbd2_freeze_jh_data(struct journal_head *jh) in jbd2_freeze_jh_data() argument
941 struct buffer_head *bh = jh2bh(jh); in jbd2_freeze_jh_data()
943 J_EXPECT_JH(jh, buffer_uptodate(bh), "Possible IO failure.\n"); in jbd2_freeze_jh_data()
948 jbd2_buffer_frozen_trigger(jh, source + offset, jh->b_triggers); in jbd2_freeze_jh_data()
949 memcpy(jh->b_frozen_data, source + offset, bh->b_size); in jbd2_freeze_jh_data()
956 jh->b_frozen_triggers = jh->b_triggers; in jbd2_freeze_jh_data()
970 do_get_write_access(handle_t *handle, struct journal_head *jh, in do_get_write_access() argument
982 jbd2_debug(5, "journal_head %p, force_copy %d\n", jh, force_copy); in do_get_write_access()
984 JBUFFER_TRACE(jh, "entry"); in do_get_write_access()
986 bh = jh2bh(jh); in do_get_write_access()
992 spin_lock(&jh->b_state_lock); in do_get_write_access()
1018 if (jh->b_transaction) { in do_get_write_access()
1019 J_ASSERT_JH(jh, in do_get_write_access()
1020 jh->b_transaction == transaction || in do_get_write_access()
1021 jh->b_transaction == in do_get_write_access()
1023 if (jh->b_next_transaction) in do_get_write_access()
1024 J_ASSERT_JH(jh, jh->b_next_transaction == in do_get_write_access()
1033 JBUFFER_TRACE(jh, "Journalling dirty buffer"); in do_get_write_access()
1042 spin_unlock(&jh->b_state_lock); in do_get_write_access()
1051 if (jh->b_transaction == transaction || in do_get_write_access()
1052 jh->b_next_transaction == transaction) in do_get_write_access()
1059 jh->b_modified = 0; in do_get_write_access()
1066 if (!jh->b_transaction) { in do_get_write_access()
1067 JBUFFER_TRACE(jh, "no transaction"); in do_get_write_access()
1068 J_ASSERT_JH(jh, !jh->b_next_transaction); in do_get_write_access()
1069 JBUFFER_TRACE(jh, "file as BJ_Reserved"); in do_get_write_access()
1077 __jbd2_journal_file_buffer(jh, transaction, BJ_Reserved); in do_get_write_access()
1085 if (jh->b_frozen_data) { in do_get_write_access()
1086 JBUFFER_TRACE(jh, "has frozen data"); in do_get_write_access()
1087 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); in do_get_write_access()
1091 JBUFFER_TRACE(jh, "owned by older transaction"); in do_get_write_access()
1092 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); in do_get_write_access()
1093 J_ASSERT_JH(jh, jh->b_transaction == journal->j_committing_transaction); in do_get_write_access()
1105 JBUFFER_TRACE(jh, "on shadow: sleep"); in do_get_write_access()
1106 spin_unlock(&jh->b_state_lock); in do_get_write_access()
1123 if (jh->b_jlist == BJ_Metadata || force_copy) { in do_get_write_access()
1124 JBUFFER_TRACE(jh, "generate frozen data"); in do_get_write_access()
1126 JBUFFER_TRACE(jh, "allocate memory for buffer"); in do_get_write_access()
1127 spin_unlock(&jh->b_state_lock); in do_get_write_access()
1128 frozen_buffer = jbd2_alloc(jh2bh(jh)->b_size, in do_get_write_access()
1132 jh->b_frozen_data = frozen_buffer; in do_get_write_access()
1134 jbd2_freeze_jh_data(jh); in do_get_write_access()
1143 jh->b_next_transaction = transaction; in do_get_write_access()
1146 spin_unlock(&jh->b_state_lock); in do_get_write_access()
1152 jbd2_journal_cancel_revoke(handle, jh); in do_get_write_access()
1158 JBUFFER_TRACE(jh, "exit"); in do_get_write_access()
1166 struct journal_head *jh; in jbd2_write_access_granted() local
1188 jh = READ_ONCE(bh->b_private); in jbd2_write_access_granted()
1189 if (!jh) in jbd2_write_access_granted()
1192 if (undo && !jh->b_committed_data) in jbd2_write_access_granted()
1194 if (READ_ONCE(jh->b_transaction) != handle->h_transaction && in jbd2_write_access_granted()
1195 READ_ONCE(jh->b_next_transaction) != handle->h_transaction) in jbd2_write_access_granted()
1207 if (unlikely(jh->b_bh != bh)) in jbd2_write_access_granted()
1229 struct journal_head *jh; in jbd2_journal_get_write_access() local
1238 jh = jbd2_journal_add_journal_head(bh); in jbd2_journal_get_write_access()
1242 rc = do_get_write_access(handle, jh, 0); in jbd2_journal_get_write_access()
1243 jbd2_journal_put_journal_head(jh); in jbd2_journal_get_write_access()
1271 struct journal_head *jh = jbd2_journal_add_journal_head(bh); in jbd2_journal_get_create_access() local
1274 jbd2_debug(5, "journal_head %p\n", jh); in jbd2_journal_get_create_access()
1281 JBUFFER_TRACE(jh, "entry"); in jbd2_journal_get_create_access()
1289 spin_lock(&jh->b_state_lock); in jbd2_journal_get_create_access()
1290 J_ASSERT_JH(jh, (jh->b_transaction == transaction || in jbd2_journal_get_create_access()
1291 jh->b_transaction == NULL || in jbd2_journal_get_create_access()
1292 (jh->b_transaction == journal->j_committing_transaction && in jbd2_journal_get_create_access()
1293 jh->b_jlist == BJ_Forget))); in jbd2_journal_get_create_access()
1295 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); in jbd2_journal_get_create_access()
1296 J_ASSERT_JH(jh, buffer_locked(jh2bh(jh))); in jbd2_journal_get_create_access()
1298 if (jh->b_transaction == NULL) { in jbd2_journal_get_create_access()
1307 clear_buffer_dirty(jh2bh(jh)); in jbd2_journal_get_create_access()
1309 jh->b_modified = 0; in jbd2_journal_get_create_access()
1311 JBUFFER_TRACE(jh, "file as BJ_Reserved"); in jbd2_journal_get_create_access()
1313 __jbd2_journal_file_buffer(jh, transaction, BJ_Reserved); in jbd2_journal_get_create_access()
1315 } else if (jh->b_transaction == journal->j_committing_transaction) { in jbd2_journal_get_create_access()
1317 jh->b_modified = 0; in jbd2_journal_get_create_access()
1319 JBUFFER_TRACE(jh, "set next transaction"); in jbd2_journal_get_create_access()
1321 jh->b_next_transaction = transaction; in jbd2_journal_get_create_access()
1324 spin_unlock(&jh->b_state_lock); in jbd2_journal_get_create_access()
1333 JBUFFER_TRACE(jh, "cancelling revoke"); in jbd2_journal_get_create_access()
1334 jbd2_journal_cancel_revoke(handle, jh); in jbd2_journal_get_create_access()
1336 jbd2_journal_put_journal_head(jh); in jbd2_journal_get_create_access()
1369 struct journal_head *jh; in jbd2_journal_get_undo_access() local
1378 jh = jbd2_journal_add_journal_head(bh); in jbd2_journal_get_undo_access()
1379 JBUFFER_TRACE(jh, "entry"); in jbd2_journal_get_undo_access()
1386 err = do_get_write_access(handle, jh, 1); in jbd2_journal_get_undo_access()
1391 if (!jh->b_committed_data) in jbd2_journal_get_undo_access()
1392 committed_data = jbd2_alloc(jh2bh(jh)->b_size, in jbd2_journal_get_undo_access()
1395 spin_lock(&jh->b_state_lock); in jbd2_journal_get_undo_access()
1396 if (!jh->b_committed_data) { in jbd2_journal_get_undo_access()
1399 JBUFFER_TRACE(jh, "generate b_committed data"); in jbd2_journal_get_undo_access()
1401 spin_unlock(&jh->b_state_lock); in jbd2_journal_get_undo_access()
1405 jh->b_committed_data = committed_data; in jbd2_journal_get_undo_access()
1407 memcpy(jh->b_committed_data, bh->b_data, bh->b_size); in jbd2_journal_get_undo_access()
1409 spin_unlock(&jh->b_state_lock); in jbd2_journal_get_undo_access()
1411 jbd2_journal_put_journal_head(jh); in jbd2_journal_get_undo_access()
1431 struct journal_head *jh = jbd2_journal_grab_journal_head(bh); in jbd2_journal_set_triggers() local
1433 if (WARN_ON_ONCE(!jh)) in jbd2_journal_set_triggers()
1435 jh->b_triggers = type; in jbd2_journal_set_triggers()
1436 jbd2_journal_put_journal_head(jh); in jbd2_journal_set_triggers()
1439 void jbd2_buffer_frozen_trigger(struct journal_head *jh, void *mapped_data, in jbd2_buffer_frozen_trigger() argument
1442 struct buffer_head *bh = jh2bh(jh); in jbd2_buffer_frozen_trigger()
1450 void jbd2_buffer_abort_trigger(struct journal_head *jh, in jbd2_buffer_abort_trigger() argument
1456 triggers->t_abort(triggers, jh2bh(jh)); in jbd2_buffer_abort_trigger()
1486 struct journal_head *jh; in jbd2_journal_dirty_metadata() local
1496 jh = bh2jh(bh); in jbd2_journal_dirty_metadata()
1497 jbd2_debug(5, "journal_head %p\n", jh); in jbd2_journal_dirty_metadata()
1498 JBUFFER_TRACE(jh, "entry"); in jbd2_journal_dirty_metadata()
1506 if (data_race(jh->b_transaction != transaction && in jbd2_journal_dirty_metadata()
1507 jh->b_next_transaction != transaction)) { in jbd2_journal_dirty_metadata()
1508 spin_lock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1509 J_ASSERT_JH(jh, jh->b_transaction == transaction || in jbd2_journal_dirty_metadata()
1510 jh->b_next_transaction == transaction); in jbd2_journal_dirty_metadata()
1511 spin_unlock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1513 if (jh->b_modified == 1) { in jbd2_journal_dirty_metadata()
1515 if (data_race(jh->b_transaction == transaction && in jbd2_journal_dirty_metadata()
1516 jh->b_jlist != BJ_Metadata)) { in jbd2_journal_dirty_metadata()
1517 spin_lock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1518 if (jh->b_transaction == transaction && in jbd2_journal_dirty_metadata()
1519 jh->b_jlist != BJ_Metadata) in jbd2_journal_dirty_metadata()
1524 jh->b_jlist); in jbd2_journal_dirty_metadata()
1525 J_ASSERT_JH(jh, jh->b_transaction != transaction || in jbd2_journal_dirty_metadata()
1526 jh->b_jlist == BJ_Metadata); in jbd2_journal_dirty_metadata()
1527 spin_unlock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1533 spin_lock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1547 if (jh->b_modified == 0) { in jbd2_journal_dirty_metadata()
1557 jh->b_modified = 1; in jbd2_journal_dirty_metadata()
1568 if (jh->b_transaction == transaction && jh->b_jlist == BJ_Metadata) { in jbd2_journal_dirty_metadata()
1569 JBUFFER_TRACE(jh, "fastpath"); in jbd2_journal_dirty_metadata()
1570 if (unlikely(jh->b_transaction != in jbd2_journal_dirty_metadata()
1577 jh->b_transaction, in jbd2_journal_dirty_metadata()
1578 jh->b_transaction ? jh->b_transaction->t_tid : 0, in jbd2_journal_dirty_metadata()
1595 if (jh->b_transaction != transaction) { in jbd2_journal_dirty_metadata()
1596 JBUFFER_TRACE(jh, "already on other transaction"); in jbd2_journal_dirty_metadata()
1597 if (unlikely(((jh->b_transaction != in jbd2_journal_dirty_metadata()
1599 (jh->b_next_transaction != transaction))) { in jbd2_journal_dirty_metadata()
1608 jh->b_transaction, in jbd2_journal_dirty_metadata()
1609 jh->b_transaction ? in jbd2_journal_dirty_metadata()
1610 jh->b_transaction->t_tid : 0, in jbd2_journal_dirty_metadata()
1611 jh->b_next_transaction, in jbd2_journal_dirty_metadata()
1612 jh->b_next_transaction ? in jbd2_journal_dirty_metadata()
1613 jh->b_next_transaction->t_tid : 0, in jbd2_journal_dirty_metadata()
1614 jh->b_jlist); in jbd2_journal_dirty_metadata()
1624 J_ASSERT_JH(jh, jh->b_frozen_data == NULL); in jbd2_journal_dirty_metadata()
1626 JBUFFER_TRACE(jh, "file as BJ_Metadata"); in jbd2_journal_dirty_metadata()
1628 __jbd2_journal_file_buffer(jh, transaction, BJ_Metadata); in jbd2_journal_dirty_metadata()
1631 spin_unlock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1633 JBUFFER_TRACE(jh, "exit"); in jbd2_journal_dirty_metadata()
1658 struct journal_head *jh; in jbd2_journal_forget() local
1669 jh = jbd2_journal_grab_journal_head(bh); in jbd2_journal_forget()
1670 if (!jh) { in jbd2_journal_forget()
1675 spin_lock(&jh->b_state_lock); in jbd2_journal_forget()
1679 if (!J_EXPECT_JH(jh, !jh->b_committed_data, in jbd2_journal_forget()
1686 was_modified = jh->b_modified; in jbd2_journal_forget()
1692 jh->b_modified = 0; in jbd2_journal_forget()
1694 if (jh->b_transaction == transaction) { in jbd2_journal_forget()
1695 J_ASSERT_JH(jh, !jh->b_frozen_data); in jbd2_journal_forget()
1703 JBUFFER_TRACE(jh, "belongs to current transaction: unfile"); in jbd2_journal_forget()
1725 if (jh->b_cp_transaction) { in jbd2_journal_forget()
1726 __jbd2_journal_temp_unlink_buffer(jh); in jbd2_journal_forget()
1727 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); in jbd2_journal_forget()
1729 __jbd2_journal_unfile_buffer(jh); in jbd2_journal_forget()
1730 jbd2_journal_put_journal_head(jh); in jbd2_journal_forget()
1733 } else if (jh->b_transaction) { in jbd2_journal_forget()
1734 J_ASSERT_JH(jh, (jh->b_transaction == in jbd2_journal_forget()
1738 JBUFFER_TRACE(jh, "belongs to older transaction"); in jbd2_journal_forget()
1748 if (!jh->b_next_transaction) { in jbd2_journal_forget()
1750 jh->b_next_transaction = transaction; in jbd2_journal_forget()
1753 J_ASSERT(jh->b_next_transaction == transaction); in jbd2_journal_forget()
1769 if (!jh->b_cp_transaction) { in jbd2_journal_forget()
1770 JBUFFER_TRACE(jh, "belongs to none transaction"); in jbd2_journal_forget()
1780 __jbd2_journal_remove_checkpoint(jh); in jbd2_journal_forget()
1792 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); in jbd2_journal_forget()
1797 spin_unlock(&jh->b_state_lock); in jbd2_journal_forget()
1798 jbd2_journal_put_journal_head(jh); in jbd2_journal_forget()
1977 __blist_add_buffer(struct journal_head **list, struct journal_head *jh) in __blist_add_buffer() argument
1980 jh->b_tnext = jh->b_tprev = jh; in __blist_add_buffer()
1981 *list = jh; in __blist_add_buffer()
1985 jh->b_tprev = last; in __blist_add_buffer()
1986 jh->b_tnext = first; in __blist_add_buffer()
1987 last->b_tnext = first->b_tprev = jh; in __blist_add_buffer()
2001 __blist_del_buffer(struct journal_head **list, struct journal_head *jh) in __blist_del_buffer() argument
2003 if (*list == jh) { in __blist_del_buffer()
2004 *list = jh->b_tnext; in __blist_del_buffer()
2005 if (*list == jh) in __blist_del_buffer()
2008 jh->b_tprev->b_tnext = jh->b_tnext; in __blist_del_buffer()
2009 jh->b_tnext->b_tprev = jh->b_tprev; in __blist_del_buffer()
2023 static void __jbd2_journal_temp_unlink_buffer(struct journal_head *jh) in __jbd2_journal_temp_unlink_buffer() argument
2027 struct buffer_head *bh = jh2bh(jh); in __jbd2_journal_temp_unlink_buffer()
2029 lockdep_assert_held(&jh->b_state_lock); in __jbd2_journal_temp_unlink_buffer()
2030 transaction = jh->b_transaction; in __jbd2_journal_temp_unlink_buffer()
2034 J_ASSERT_JH(jh, jh->b_jlist < BJ_Types); in __jbd2_journal_temp_unlink_buffer()
2035 if (jh->b_jlist != BJ_None) in __jbd2_journal_temp_unlink_buffer()
2036 J_ASSERT_JH(jh, transaction != NULL); in __jbd2_journal_temp_unlink_buffer()
2038 switch (jh->b_jlist) { in __jbd2_journal_temp_unlink_buffer()
2043 J_ASSERT_JH(jh, transaction->t_nr_buffers >= 0); in __jbd2_journal_temp_unlink_buffer()
2057 __blist_del_buffer(list, jh); in __jbd2_journal_temp_unlink_buffer()
2058 jh->b_jlist = BJ_None; in __jbd2_journal_temp_unlink_buffer()
2071 static void __jbd2_journal_unfile_buffer(struct journal_head *jh) in __jbd2_journal_unfile_buffer() argument
2073 J_ASSERT_JH(jh, jh->b_transaction != NULL); in __jbd2_journal_unfile_buffer()
2074 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); in __jbd2_journal_unfile_buffer()
2076 __jbd2_journal_temp_unlink_buffer(jh); in __jbd2_journal_unfile_buffer()
2077 jh->b_transaction = NULL; in __jbd2_journal_unfile_buffer()
2080 void jbd2_journal_unfile_buffer(journal_t *journal, struct journal_head *jh) in jbd2_journal_unfile_buffer() argument
2082 struct buffer_head *bh = jh2bh(jh); in jbd2_journal_unfile_buffer()
2086 spin_lock(&jh->b_state_lock); in jbd2_journal_unfile_buffer()
2088 __jbd2_journal_unfile_buffer(jh); in jbd2_journal_unfile_buffer()
2090 spin_unlock(&jh->b_state_lock); in jbd2_journal_unfile_buffer()
2091 jbd2_journal_put_journal_head(jh); in jbd2_journal_unfile_buffer()
2103 struct journal_head *jh; in __journal_try_to_free_buffer() local
2105 jh = bh2jh(bh); in __journal_try_to_free_buffer()
2110 if (jh->b_next_transaction != NULL || jh->b_transaction != NULL) in __journal_try_to_free_buffer()
2114 if (jh->b_cp_transaction != NULL) { in __journal_try_to_free_buffer()
2116 JBUFFER_TRACE(jh, "remove from checkpoint list"); in __journal_try_to_free_buffer()
2117 __jbd2_journal_remove_checkpoint(jh); in __journal_try_to_free_buffer()
2169 struct journal_head *jh; in jbd2_journal_try_to_free_buffers() local
2176 jh = jbd2_journal_grab_journal_head(bh); in jbd2_journal_try_to_free_buffers()
2177 if (!jh) in jbd2_journal_try_to_free_buffers()
2180 spin_lock(&jh->b_state_lock); in jbd2_journal_try_to_free_buffers()
2182 spin_unlock(&jh->b_state_lock); in jbd2_journal_try_to_free_buffers()
2183 jbd2_journal_put_journal_head(jh); in jbd2_journal_try_to_free_buffers()
2205 static int __dispose_buffer(struct journal_head *jh, transaction_t *transaction) in __dispose_buffer() argument
2208 struct buffer_head *bh = jh2bh(jh); in __dispose_buffer()
2210 if (jh->b_cp_transaction) { in __dispose_buffer()
2211 JBUFFER_TRACE(jh, "on running+cp transaction"); in __dispose_buffer()
2212 __jbd2_journal_temp_unlink_buffer(jh); in __dispose_buffer()
2219 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); in __dispose_buffer()
2222 JBUFFER_TRACE(jh, "on running transaction"); in __dispose_buffer()
2223 __jbd2_journal_unfile_buffer(jh); in __dispose_buffer()
2224 jbd2_journal_put_journal_head(jh); in __dispose_buffer()
2280 struct journal_head *jh; in journal_unmap_buffer() local
2291 jh = jbd2_journal_grab_journal_head(bh); in journal_unmap_buffer()
2292 if (!jh) in journal_unmap_buffer()
2297 spin_lock(&jh->b_state_lock); in journal_unmap_buffer()
2323 transaction = jh->b_transaction; in journal_unmap_buffer()
2329 if (!jh->b_cp_transaction) { in journal_unmap_buffer()
2330 JBUFFER_TRACE(jh, "not on any transaction: zap"); in journal_unmap_buffer()
2336 __jbd2_journal_remove_checkpoint(jh); in journal_unmap_buffer()
2348 JBUFFER_TRACE(jh, "checkpointed: add to BJ_Forget"); in journal_unmap_buffer()
2349 may_free = __dispose_buffer(jh, in journal_unmap_buffer()
2358 JBUFFER_TRACE(jh, "give to committing trans"); in journal_unmap_buffer()
2359 may_free = __dispose_buffer(jh, in journal_unmap_buffer()
2366 __jbd2_journal_remove_checkpoint(jh); in journal_unmap_buffer()
2371 JBUFFER_TRACE(jh, "on committing transaction"); in journal_unmap_buffer()
2379 spin_unlock(&jh->b_state_lock); in journal_unmap_buffer()
2381 jbd2_journal_put_journal_head(jh); in journal_unmap_buffer()
2393 jh->b_next_transaction = journal->j_running_transaction; in journal_unmap_buffer()
2394 jh->b_modified = 0; in journal_unmap_buffer()
2396 spin_unlock(&jh->b_state_lock); in journal_unmap_buffer()
2398 jbd2_journal_put_journal_head(jh); in journal_unmap_buffer()
2407 J_ASSERT_JH(jh, transaction == journal->j_running_transaction); in journal_unmap_buffer()
2408 JBUFFER_TRACE(jh, "on running transaction"); in journal_unmap_buffer()
2409 may_free = __dispose_buffer(jh, transaction); in journal_unmap_buffer()
2421 jh->b_modified = 0; in journal_unmap_buffer()
2423 spin_unlock(&jh->b_state_lock); in journal_unmap_buffer()
2425 jbd2_journal_put_journal_head(jh); in journal_unmap_buffer()
2504 void __jbd2_journal_file_buffer(struct journal_head *jh, in __jbd2_journal_file_buffer() argument
2509 struct buffer_head *bh = jh2bh(jh); in __jbd2_journal_file_buffer()
2511 lockdep_assert_held(&jh->b_state_lock); in __jbd2_journal_file_buffer()
2514 J_ASSERT_JH(jh, jh->b_jlist < BJ_Types); in __jbd2_journal_file_buffer()
2515 J_ASSERT_JH(jh, jh->b_transaction == transaction || in __jbd2_journal_file_buffer()
2516 jh->b_transaction == NULL); in __jbd2_journal_file_buffer()
2518 if (jh->b_transaction && jh->b_jlist == jlist) in __jbd2_journal_file_buffer()
2537 if (jh->b_transaction) in __jbd2_journal_file_buffer()
2538 __jbd2_journal_temp_unlink_buffer(jh); in __jbd2_journal_file_buffer()
2541 jh->b_transaction = transaction; in __jbd2_journal_file_buffer()
2545 J_ASSERT_JH(jh, !jh->b_committed_data); in __jbd2_journal_file_buffer()
2546 J_ASSERT_JH(jh, !jh->b_frozen_data); in __jbd2_journal_file_buffer()
2563 __blist_add_buffer(list, jh); in __jbd2_journal_file_buffer()
2564 jh->b_jlist = jlist; in __jbd2_journal_file_buffer()
2570 void jbd2_journal_file_buffer(struct journal_head *jh, in jbd2_journal_file_buffer() argument
2573 spin_lock(&jh->b_state_lock); in jbd2_journal_file_buffer()
2575 __jbd2_journal_file_buffer(jh, transaction, jlist); in jbd2_journal_file_buffer()
2577 spin_unlock(&jh->b_state_lock); in jbd2_journal_file_buffer()
2593 bool __jbd2_journal_refile_buffer(struct journal_head *jh) in __jbd2_journal_refile_buffer() argument
2596 struct buffer_head *bh = jh2bh(jh); in __jbd2_journal_refile_buffer()
2598 lockdep_assert_held(&jh->b_state_lock); in __jbd2_journal_refile_buffer()
2599 if (jh->b_transaction) in __jbd2_journal_refile_buffer()
2600 assert_spin_locked(&jh->b_transaction->t_journal->j_list_lock); in __jbd2_journal_refile_buffer()
2603 if (jh->b_next_transaction == NULL) { in __jbd2_journal_refile_buffer()
2604 __jbd2_journal_unfile_buffer(jh); in __jbd2_journal_refile_buffer()
2614 __jbd2_journal_temp_unlink_buffer(jh); in __jbd2_journal_refile_buffer()
2620 J_ASSERT_JH(jh, jh->b_transaction != NULL); in __jbd2_journal_refile_buffer()
2627 WRITE_ONCE(jh->b_transaction, jh->b_next_transaction); in __jbd2_journal_refile_buffer()
2628 WRITE_ONCE(jh->b_next_transaction, NULL); in __jbd2_journal_refile_buffer()
2631 else if (jh->b_modified) in __jbd2_journal_refile_buffer()
2635 __jbd2_journal_file_buffer(jh, jh->b_transaction, jlist); in __jbd2_journal_refile_buffer()
2636 J_ASSERT_JH(jh, jh->b_transaction->t_state == T_RUNNING); in __jbd2_journal_refile_buffer()
2649 void jbd2_journal_refile_buffer(journal_t *journal, struct journal_head *jh) in jbd2_journal_refile_buffer() argument
2653 spin_lock(&jh->b_state_lock); in jbd2_journal_refile_buffer()
2655 drop = __jbd2_journal_refile_buffer(jh); in jbd2_journal_refile_buffer()
2656 spin_unlock(&jh->b_state_lock); in jbd2_journal_refile_buffer()
2659 jbd2_journal_put_journal_head(jh); in jbd2_journal_refile_buffer()