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);
905 static void jbd2_freeze_jh_data(struct journal_head *jh) in jbd2_freeze_jh_data() argument
910 struct buffer_head *bh = jh2bh(jh); in jbd2_freeze_jh_data()
912 J_EXPECT_JH(jh, buffer_uptodate(bh), "Possible IO failure.\n"); in jbd2_freeze_jh_data()
917 jbd2_buffer_frozen_trigger(jh, source + offset, jh->b_triggers); in jbd2_freeze_jh_data()
918 memcpy(jh->b_frozen_data, source + offset, bh->b_size); in jbd2_freeze_jh_data()
925 jh->b_frozen_triggers = jh->b_triggers; in jbd2_freeze_jh_data()
939 do_get_write_access(handle_t *handle, struct journal_head *jh, in do_get_write_access() argument
951 jbd_debug(5, "journal_head %p, force_copy %d\n", jh, force_copy); in do_get_write_access()
953 JBUFFER_TRACE(jh, "entry"); in do_get_write_access()
955 bh = jh2bh(jh); in do_get_write_access()
961 spin_lock(&jh->b_state_lock); in do_get_write_access()
987 if (jh->b_transaction) { in do_get_write_access()
988 J_ASSERT_JH(jh, in do_get_write_access()
989 jh->b_transaction == transaction || in do_get_write_access()
990 jh->b_transaction == in do_get_write_access()
992 if (jh->b_next_transaction) in do_get_write_access()
993 J_ASSERT_JH(jh, jh->b_next_transaction == in do_get_write_access()
1002 JBUFFER_TRACE(jh, "Journalling dirty buffer"); in do_get_write_access()
1011 spin_unlock(&jh->b_state_lock); in do_get_write_access()
1020 if (jh->b_transaction == transaction || in do_get_write_access()
1021 jh->b_next_transaction == transaction) in do_get_write_access()
1028 jh->b_modified = 0; in do_get_write_access()
1035 if (!jh->b_transaction) { in do_get_write_access()
1036 JBUFFER_TRACE(jh, "no transaction"); in do_get_write_access()
1037 J_ASSERT_JH(jh, !jh->b_next_transaction); in do_get_write_access()
1038 JBUFFER_TRACE(jh, "file as BJ_Reserved"); in do_get_write_access()
1046 __jbd2_journal_file_buffer(jh, transaction, BJ_Reserved); in do_get_write_access()
1054 if (jh->b_frozen_data) { in do_get_write_access()
1055 JBUFFER_TRACE(jh, "has frozen data"); in do_get_write_access()
1056 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); in do_get_write_access()
1060 JBUFFER_TRACE(jh, "owned by older transaction"); in do_get_write_access()
1061 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); in do_get_write_access()
1062 J_ASSERT_JH(jh, jh->b_transaction == journal->j_committing_transaction); in do_get_write_access()
1074 JBUFFER_TRACE(jh, "on shadow: sleep"); in do_get_write_access()
1075 spin_unlock(&jh->b_state_lock); in do_get_write_access()
1092 if (jh->b_jlist == BJ_Metadata || force_copy) { in do_get_write_access()
1093 JBUFFER_TRACE(jh, "generate frozen data"); in do_get_write_access()
1095 JBUFFER_TRACE(jh, "allocate memory for buffer"); in do_get_write_access()
1096 spin_unlock(&jh->b_state_lock); in do_get_write_access()
1097 frozen_buffer = jbd2_alloc(jh2bh(jh)->b_size, in do_get_write_access()
1101 jh->b_frozen_data = frozen_buffer; in do_get_write_access()
1103 jbd2_freeze_jh_data(jh); in do_get_write_access()
1112 jh->b_next_transaction = transaction; in do_get_write_access()
1115 spin_unlock(&jh->b_state_lock); in do_get_write_access()
1121 jbd2_journal_cancel_revoke(handle, jh); in do_get_write_access()
1127 JBUFFER_TRACE(jh, "exit"); in do_get_write_access()
1135 struct journal_head *jh; in jbd2_write_access_granted() local
1157 jh = READ_ONCE(bh->b_private); in jbd2_write_access_granted()
1158 if (!jh) in jbd2_write_access_granted()
1161 if (undo && !jh->b_committed_data) in jbd2_write_access_granted()
1163 if (READ_ONCE(jh->b_transaction) != handle->h_transaction && in jbd2_write_access_granted()
1164 READ_ONCE(jh->b_next_transaction) != handle->h_transaction) in jbd2_write_access_granted()
1176 if (unlikely(jh->b_bh != bh)) in jbd2_write_access_granted()
1198 struct journal_head *jh; in jbd2_journal_get_write_access() local
1207 jh = jbd2_journal_add_journal_head(bh); in jbd2_journal_get_write_access()
1211 rc = do_get_write_access(handle, jh, 0); in jbd2_journal_get_write_access()
1212 jbd2_journal_put_journal_head(jh); in jbd2_journal_get_write_access()
1240 struct journal_head *jh = jbd2_journal_add_journal_head(bh); in jbd2_journal_get_create_access() local
1243 jbd_debug(5, "journal_head %p\n", jh); in jbd2_journal_get_create_access()
1250 JBUFFER_TRACE(jh, "entry"); in jbd2_journal_get_create_access()
1258 spin_lock(&jh->b_state_lock); in jbd2_journal_get_create_access()
1259 J_ASSERT_JH(jh, (jh->b_transaction == transaction || in jbd2_journal_get_create_access()
1260 jh->b_transaction == NULL || in jbd2_journal_get_create_access()
1261 (jh->b_transaction == journal->j_committing_transaction && in jbd2_journal_get_create_access()
1262 jh->b_jlist == BJ_Forget))); in jbd2_journal_get_create_access()
1264 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); in jbd2_journal_get_create_access()
1265 J_ASSERT_JH(jh, buffer_locked(jh2bh(jh))); in jbd2_journal_get_create_access()
1267 if (jh->b_transaction == NULL) { in jbd2_journal_get_create_access()
1276 clear_buffer_dirty(jh2bh(jh)); in jbd2_journal_get_create_access()
1278 jh->b_modified = 0; in jbd2_journal_get_create_access()
1280 JBUFFER_TRACE(jh, "file as BJ_Reserved"); in jbd2_journal_get_create_access()
1282 __jbd2_journal_file_buffer(jh, transaction, BJ_Reserved); in jbd2_journal_get_create_access()
1284 } else if (jh->b_transaction == journal->j_committing_transaction) { in jbd2_journal_get_create_access()
1286 jh->b_modified = 0; in jbd2_journal_get_create_access()
1288 JBUFFER_TRACE(jh, "set next transaction"); in jbd2_journal_get_create_access()
1290 jh->b_next_transaction = transaction; in jbd2_journal_get_create_access()
1293 spin_unlock(&jh->b_state_lock); in jbd2_journal_get_create_access()
1302 JBUFFER_TRACE(jh, "cancelling revoke"); in jbd2_journal_get_create_access()
1303 jbd2_journal_cancel_revoke(handle, jh); in jbd2_journal_get_create_access()
1305 jbd2_journal_put_journal_head(jh); in jbd2_journal_get_create_access()
1338 struct journal_head *jh; in jbd2_journal_get_undo_access() local
1347 jh = jbd2_journal_add_journal_head(bh); in jbd2_journal_get_undo_access()
1348 JBUFFER_TRACE(jh, "entry"); in jbd2_journal_get_undo_access()
1355 err = do_get_write_access(handle, jh, 1); in jbd2_journal_get_undo_access()
1360 if (!jh->b_committed_data) in jbd2_journal_get_undo_access()
1361 committed_data = jbd2_alloc(jh2bh(jh)->b_size, in jbd2_journal_get_undo_access()
1364 spin_lock(&jh->b_state_lock); in jbd2_journal_get_undo_access()
1365 if (!jh->b_committed_data) { in jbd2_journal_get_undo_access()
1368 JBUFFER_TRACE(jh, "generate b_committed data"); in jbd2_journal_get_undo_access()
1370 spin_unlock(&jh->b_state_lock); in jbd2_journal_get_undo_access()
1374 jh->b_committed_data = committed_data; in jbd2_journal_get_undo_access()
1376 memcpy(jh->b_committed_data, bh->b_data, bh->b_size); in jbd2_journal_get_undo_access()
1378 spin_unlock(&jh->b_state_lock); in jbd2_journal_get_undo_access()
1380 jbd2_journal_put_journal_head(jh); in jbd2_journal_get_undo_access()
1400 struct journal_head *jh = jbd2_journal_grab_journal_head(bh); in jbd2_journal_set_triggers() local
1402 if (WARN_ON(!jh)) in jbd2_journal_set_triggers()
1404 jh->b_triggers = type; in jbd2_journal_set_triggers()
1405 jbd2_journal_put_journal_head(jh); in jbd2_journal_set_triggers()
1408 void jbd2_buffer_frozen_trigger(struct journal_head *jh, void *mapped_data, in jbd2_buffer_frozen_trigger() argument
1411 struct buffer_head *bh = jh2bh(jh); in jbd2_buffer_frozen_trigger()
1419 void jbd2_buffer_abort_trigger(struct journal_head *jh, in jbd2_buffer_abort_trigger() argument
1425 triggers->t_abort(triggers, jh2bh(jh)); in jbd2_buffer_abort_trigger()
1455 struct journal_head *jh; in jbd2_journal_dirty_metadata() local
1467 jh = bh2jh(bh); in jbd2_journal_dirty_metadata()
1468 jbd_debug(5, "journal_head %p\n", jh); in jbd2_journal_dirty_metadata()
1469 JBUFFER_TRACE(jh, "entry"); in jbd2_journal_dirty_metadata()
1477 if (jh->b_transaction != transaction && in jbd2_journal_dirty_metadata()
1478 jh->b_next_transaction != transaction) { in jbd2_journal_dirty_metadata()
1479 spin_lock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1480 J_ASSERT_JH(jh, jh->b_transaction == transaction || in jbd2_journal_dirty_metadata()
1481 jh->b_next_transaction == transaction); in jbd2_journal_dirty_metadata()
1482 spin_unlock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1484 if (jh->b_modified == 1) { in jbd2_journal_dirty_metadata()
1486 if (jh->b_transaction == transaction && in jbd2_journal_dirty_metadata()
1487 jh->b_jlist != BJ_Metadata) { in jbd2_journal_dirty_metadata()
1488 spin_lock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1489 if (jh->b_transaction == transaction && in jbd2_journal_dirty_metadata()
1490 jh->b_jlist != BJ_Metadata) in jbd2_journal_dirty_metadata()
1495 jh->b_jlist); in jbd2_journal_dirty_metadata()
1496 J_ASSERT_JH(jh, jh->b_transaction != transaction || in jbd2_journal_dirty_metadata()
1497 jh->b_jlist == BJ_Metadata); in jbd2_journal_dirty_metadata()
1498 spin_unlock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1504 spin_lock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1506 if (jh->b_modified == 0) { in jbd2_journal_dirty_metadata()
1516 jh->b_modified = 1; in jbd2_journal_dirty_metadata()
1527 if (jh->b_transaction == transaction && jh->b_jlist == BJ_Metadata) { in jbd2_journal_dirty_metadata()
1528 JBUFFER_TRACE(jh, "fastpath"); in jbd2_journal_dirty_metadata()
1529 if (unlikely(jh->b_transaction != in jbd2_journal_dirty_metadata()
1536 jh->b_transaction, in jbd2_journal_dirty_metadata()
1537 jh->b_transaction ? jh->b_transaction->t_tid : 0, in jbd2_journal_dirty_metadata()
1554 if (jh->b_transaction != transaction) { in jbd2_journal_dirty_metadata()
1555 JBUFFER_TRACE(jh, "already on other transaction"); in jbd2_journal_dirty_metadata()
1556 if (unlikely(((jh->b_transaction != in jbd2_journal_dirty_metadata()
1558 (jh->b_next_transaction != transaction))) { in jbd2_journal_dirty_metadata()
1567 jh->b_transaction, in jbd2_journal_dirty_metadata()
1568 jh->b_transaction ? in jbd2_journal_dirty_metadata()
1569 jh->b_transaction->t_tid : 0, in jbd2_journal_dirty_metadata()
1570 jh->b_next_transaction, in jbd2_journal_dirty_metadata()
1571 jh->b_next_transaction ? in jbd2_journal_dirty_metadata()
1572 jh->b_next_transaction->t_tid : 0, in jbd2_journal_dirty_metadata()
1573 jh->b_jlist); in jbd2_journal_dirty_metadata()
1583 J_ASSERT_JH(jh, jh->b_frozen_data == NULL); in jbd2_journal_dirty_metadata()
1585 JBUFFER_TRACE(jh, "file as BJ_Metadata"); in jbd2_journal_dirty_metadata()
1587 __jbd2_journal_file_buffer(jh, transaction, BJ_Metadata); in jbd2_journal_dirty_metadata()
1590 spin_unlock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1592 JBUFFER_TRACE(jh, "exit"); in jbd2_journal_dirty_metadata()
1617 struct journal_head *jh; in jbd2_journal_forget() local
1628 jh = jbd2_journal_grab_journal_head(bh); in jbd2_journal_forget()
1629 if (!jh) { in jbd2_journal_forget()
1634 spin_lock(&jh->b_state_lock); in jbd2_journal_forget()
1638 if (!J_EXPECT_JH(jh, !jh->b_committed_data, in jbd2_journal_forget()
1645 was_modified = jh->b_modified; in jbd2_journal_forget()
1651 jh->b_modified = 0; in jbd2_journal_forget()
1653 if (jh->b_transaction == transaction) { in jbd2_journal_forget()
1654 J_ASSERT_JH(jh, !jh->b_frozen_data); in jbd2_journal_forget()
1662 JBUFFER_TRACE(jh, "belongs to current transaction: unfile"); in jbd2_journal_forget()
1684 if (jh->b_cp_transaction) { in jbd2_journal_forget()
1685 __jbd2_journal_temp_unlink_buffer(jh); in jbd2_journal_forget()
1686 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); in jbd2_journal_forget()
1688 __jbd2_journal_unfile_buffer(jh); in jbd2_journal_forget()
1689 jbd2_journal_put_journal_head(jh); in jbd2_journal_forget()
1692 } else if (jh->b_transaction) { in jbd2_journal_forget()
1693 J_ASSERT_JH(jh, (jh->b_transaction == in jbd2_journal_forget()
1697 JBUFFER_TRACE(jh, "belongs to older transaction"); in jbd2_journal_forget()
1707 if (!jh->b_next_transaction) { in jbd2_journal_forget()
1709 jh->b_next_transaction = transaction; in jbd2_journal_forget()
1712 J_ASSERT(jh->b_next_transaction == transaction); in jbd2_journal_forget()
1728 if (!jh->b_cp_transaction) { in jbd2_journal_forget()
1729 JBUFFER_TRACE(jh, "belongs to none transaction"); in jbd2_journal_forget()
1739 __jbd2_journal_remove_checkpoint(jh); in jbd2_journal_forget()
1751 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); in jbd2_journal_forget()
1756 spin_unlock(&jh->b_state_lock); in jbd2_journal_forget()
1757 jbd2_journal_put_journal_head(jh); in jbd2_journal_forget()
1936 __blist_add_buffer(struct journal_head **list, struct journal_head *jh) in __blist_add_buffer() argument
1939 jh->b_tnext = jh->b_tprev = jh; in __blist_add_buffer()
1940 *list = jh; in __blist_add_buffer()
1944 jh->b_tprev = last; in __blist_add_buffer()
1945 jh->b_tnext = first; in __blist_add_buffer()
1946 last->b_tnext = first->b_tprev = jh; in __blist_add_buffer()
1960 __blist_del_buffer(struct journal_head **list, struct journal_head *jh) in __blist_del_buffer() argument
1962 if (*list == jh) { in __blist_del_buffer()
1963 *list = jh->b_tnext; in __blist_del_buffer()
1964 if (*list == jh) in __blist_del_buffer()
1967 jh->b_tprev->b_tnext = jh->b_tnext; in __blist_del_buffer()
1968 jh->b_tnext->b_tprev = jh->b_tprev; in __blist_del_buffer()
1982 static void __jbd2_journal_temp_unlink_buffer(struct journal_head *jh) in __jbd2_journal_temp_unlink_buffer() argument
1986 struct buffer_head *bh = jh2bh(jh); in __jbd2_journal_temp_unlink_buffer()
1988 lockdep_assert_held(&jh->b_state_lock); in __jbd2_journal_temp_unlink_buffer()
1989 transaction = jh->b_transaction; in __jbd2_journal_temp_unlink_buffer()
1993 J_ASSERT_JH(jh, jh->b_jlist < BJ_Types); in __jbd2_journal_temp_unlink_buffer()
1994 if (jh->b_jlist != BJ_None) in __jbd2_journal_temp_unlink_buffer()
1995 J_ASSERT_JH(jh, transaction != NULL); in __jbd2_journal_temp_unlink_buffer()
1997 switch (jh->b_jlist) { in __jbd2_journal_temp_unlink_buffer()
2002 J_ASSERT_JH(jh, transaction->t_nr_buffers >= 0); in __jbd2_journal_temp_unlink_buffer()
2016 __blist_del_buffer(list, jh); in __jbd2_journal_temp_unlink_buffer()
2017 jh->b_jlist = BJ_None; in __jbd2_journal_temp_unlink_buffer()
2030 static void __jbd2_journal_unfile_buffer(struct journal_head *jh) in __jbd2_journal_unfile_buffer() argument
2032 J_ASSERT_JH(jh, jh->b_transaction != NULL); in __jbd2_journal_unfile_buffer()
2033 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); in __jbd2_journal_unfile_buffer()
2035 __jbd2_journal_temp_unlink_buffer(jh); in __jbd2_journal_unfile_buffer()
2036 jh->b_transaction = NULL; in __jbd2_journal_unfile_buffer()
2039 void jbd2_journal_unfile_buffer(journal_t *journal, struct journal_head *jh) in jbd2_journal_unfile_buffer() argument
2041 struct buffer_head *bh = jh2bh(jh); in jbd2_journal_unfile_buffer()
2045 spin_lock(&jh->b_state_lock); in jbd2_journal_unfile_buffer()
2047 __jbd2_journal_unfile_buffer(jh); in jbd2_journal_unfile_buffer()
2049 spin_unlock(&jh->b_state_lock); in jbd2_journal_unfile_buffer()
2050 jbd2_journal_put_journal_head(jh); in jbd2_journal_unfile_buffer()
2062 struct journal_head *jh; in __journal_try_to_free_buffer() local
2064 jh = bh2jh(bh); in __journal_try_to_free_buffer()
2069 if (jh->b_next_transaction != NULL || jh->b_transaction != NULL) in __journal_try_to_free_buffer()
2073 if (jh->b_cp_transaction != NULL) { in __journal_try_to_free_buffer()
2075 JBUFFER_TRACE(jh, "remove from checkpoint list"); in __journal_try_to_free_buffer()
2076 __jbd2_journal_remove_checkpoint(jh); in __journal_try_to_free_buffer()
2129 struct journal_head *jh; in jbd2_journal_try_to_free_buffers() local
2136 jh = jbd2_journal_grab_journal_head(bh); in jbd2_journal_try_to_free_buffers()
2137 if (!jh) in jbd2_journal_try_to_free_buffers()
2140 spin_lock(&jh->b_state_lock); in jbd2_journal_try_to_free_buffers()
2142 spin_unlock(&jh->b_state_lock); in jbd2_journal_try_to_free_buffers()
2143 jbd2_journal_put_journal_head(jh); in jbd2_journal_try_to_free_buffers()
2181 static int __dispose_buffer(struct journal_head *jh, transaction_t *transaction) in __dispose_buffer() argument
2184 struct buffer_head *bh = jh2bh(jh); in __dispose_buffer()
2186 if (jh->b_cp_transaction) { in __dispose_buffer()
2187 JBUFFER_TRACE(jh, "on running+cp transaction"); in __dispose_buffer()
2188 __jbd2_journal_temp_unlink_buffer(jh); in __dispose_buffer()
2195 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); in __dispose_buffer()
2198 JBUFFER_TRACE(jh, "on running transaction"); in __dispose_buffer()
2199 __jbd2_journal_unfile_buffer(jh); in __dispose_buffer()
2200 jbd2_journal_put_journal_head(jh); in __dispose_buffer()
2256 struct journal_head *jh; in journal_unmap_buffer() local
2267 jh = jbd2_journal_grab_journal_head(bh); in journal_unmap_buffer()
2268 if (!jh) in journal_unmap_buffer()
2273 spin_lock(&jh->b_state_lock); in journal_unmap_buffer()
2299 transaction = jh->b_transaction; in journal_unmap_buffer()
2305 if (!jh->b_cp_transaction) { in journal_unmap_buffer()
2306 JBUFFER_TRACE(jh, "not on any transaction: zap"); in journal_unmap_buffer()
2312 __jbd2_journal_remove_checkpoint(jh); in journal_unmap_buffer()
2324 JBUFFER_TRACE(jh, "checkpointed: add to BJ_Forget"); in journal_unmap_buffer()
2325 may_free = __dispose_buffer(jh, in journal_unmap_buffer()
2334 JBUFFER_TRACE(jh, "give to committing trans"); in journal_unmap_buffer()
2335 may_free = __dispose_buffer(jh, in journal_unmap_buffer()
2342 __jbd2_journal_remove_checkpoint(jh); in journal_unmap_buffer()
2347 JBUFFER_TRACE(jh, "on committing transaction"); in journal_unmap_buffer()
2355 spin_unlock(&jh->b_state_lock); in journal_unmap_buffer()
2357 jbd2_journal_put_journal_head(jh); in journal_unmap_buffer()
2369 jh->b_next_transaction = journal->j_running_transaction; in journal_unmap_buffer()
2370 jh->b_modified = 0; in journal_unmap_buffer()
2372 spin_unlock(&jh->b_state_lock); in journal_unmap_buffer()
2374 jbd2_journal_put_journal_head(jh); in journal_unmap_buffer()
2383 J_ASSERT_JH(jh, transaction == journal->j_running_transaction); in journal_unmap_buffer()
2384 JBUFFER_TRACE(jh, "on running transaction"); in journal_unmap_buffer()
2385 may_free = __dispose_buffer(jh, transaction); in journal_unmap_buffer()
2397 jh->b_modified = 0; in journal_unmap_buffer()
2399 spin_unlock(&jh->b_state_lock); in journal_unmap_buffer()
2401 jbd2_journal_put_journal_head(jh); in journal_unmap_buffer()
2481 void __jbd2_journal_file_buffer(struct journal_head *jh, in __jbd2_journal_file_buffer() argument
2486 struct buffer_head *bh = jh2bh(jh); in __jbd2_journal_file_buffer()
2488 lockdep_assert_held(&jh->b_state_lock); in __jbd2_journal_file_buffer()
2491 J_ASSERT_JH(jh, jh->b_jlist < BJ_Types); in __jbd2_journal_file_buffer()
2492 J_ASSERT_JH(jh, jh->b_transaction == transaction || in __jbd2_journal_file_buffer()
2493 jh->b_transaction == NULL); in __jbd2_journal_file_buffer()
2495 if (jh->b_transaction && jh->b_jlist == jlist) in __jbd2_journal_file_buffer()
2514 if (jh->b_transaction) in __jbd2_journal_file_buffer()
2515 __jbd2_journal_temp_unlink_buffer(jh); in __jbd2_journal_file_buffer()
2518 jh->b_transaction = transaction; in __jbd2_journal_file_buffer()
2522 J_ASSERT_JH(jh, !jh->b_committed_data); in __jbd2_journal_file_buffer()
2523 J_ASSERT_JH(jh, !jh->b_frozen_data); in __jbd2_journal_file_buffer()
2540 __blist_add_buffer(list, jh); in __jbd2_journal_file_buffer()
2541 jh->b_jlist = jlist; in __jbd2_journal_file_buffer()
2547 void jbd2_journal_file_buffer(struct journal_head *jh, in jbd2_journal_file_buffer() argument
2550 spin_lock(&jh->b_state_lock); in jbd2_journal_file_buffer()
2552 __jbd2_journal_file_buffer(jh, transaction, jlist); in jbd2_journal_file_buffer()
2554 spin_unlock(&jh->b_state_lock); in jbd2_journal_file_buffer()
2570 bool __jbd2_journal_refile_buffer(struct journal_head *jh) in __jbd2_journal_refile_buffer() argument
2573 struct buffer_head *bh = jh2bh(jh); in __jbd2_journal_refile_buffer()
2575 lockdep_assert_held(&jh->b_state_lock); in __jbd2_journal_refile_buffer()
2576 if (jh->b_transaction) in __jbd2_journal_refile_buffer()
2577 assert_spin_locked(&jh->b_transaction->t_journal->j_list_lock); in __jbd2_journal_refile_buffer()
2580 if (jh->b_next_transaction == NULL) { in __jbd2_journal_refile_buffer()
2581 __jbd2_journal_unfile_buffer(jh); in __jbd2_journal_refile_buffer()
2591 __jbd2_journal_temp_unlink_buffer(jh); in __jbd2_journal_refile_buffer()
2597 J_ASSERT_JH(jh, jh->b_transaction != NULL); in __jbd2_journal_refile_buffer()
2604 WRITE_ONCE(jh->b_transaction, jh->b_next_transaction); in __jbd2_journal_refile_buffer()
2605 WRITE_ONCE(jh->b_next_transaction, NULL); in __jbd2_journal_refile_buffer()
2608 else if (jh->b_modified) in __jbd2_journal_refile_buffer()
2612 __jbd2_journal_file_buffer(jh, jh->b_transaction, jlist); in __jbd2_journal_refile_buffer()
2613 J_ASSERT_JH(jh, jh->b_transaction->t_state == T_RUNNING); in __jbd2_journal_refile_buffer()
2626 void jbd2_journal_refile_buffer(journal_t *journal, struct journal_head *jh) in jbd2_journal_refile_buffer() argument
2630 spin_lock(&jh->b_state_lock); in jbd2_journal_refile_buffer()
2632 drop = __jbd2_journal_refile_buffer(jh); in jbd2_journal_refile_buffer()
2633 spin_unlock(&jh->b_state_lock); in jbd2_journal_refile_buffer()
2636 jbd2_journal_put_journal_head(jh); in jbd2_journal_refile_buffer()