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);
910 static void jbd2_freeze_jh_data(struct journal_head *jh) in jbd2_freeze_jh_data() argument
915 struct buffer_head *bh = jh2bh(jh); in jbd2_freeze_jh_data()
917 J_EXPECT_JH(jh, buffer_uptodate(bh), "Possible IO failure.\n"); in jbd2_freeze_jh_data()
922 jbd2_buffer_frozen_trigger(jh, source + offset, jh->b_triggers); in jbd2_freeze_jh_data()
923 memcpy(jh->b_frozen_data, source + offset, bh->b_size); in jbd2_freeze_jh_data()
930 jh->b_frozen_triggers = jh->b_triggers; in jbd2_freeze_jh_data()
944 do_get_write_access(handle_t *handle, struct journal_head *jh, in do_get_write_access() argument
956 jbd_debug(5, "journal_head %p, force_copy %d\n", jh, force_copy); in do_get_write_access()
958 JBUFFER_TRACE(jh, "entry"); in do_get_write_access()
960 bh = jh2bh(jh); in do_get_write_access()
966 spin_lock(&jh->b_state_lock); in do_get_write_access()
992 if (jh->b_transaction) { in do_get_write_access()
993 J_ASSERT_JH(jh, in do_get_write_access()
994 jh->b_transaction == transaction || in do_get_write_access()
995 jh->b_transaction == in do_get_write_access()
997 if (jh->b_next_transaction) in do_get_write_access()
998 J_ASSERT_JH(jh, jh->b_next_transaction == in do_get_write_access()
1007 JBUFFER_TRACE(jh, "Journalling dirty buffer"); in do_get_write_access()
1016 spin_unlock(&jh->b_state_lock); in do_get_write_access()
1025 if (jh->b_transaction == transaction || in do_get_write_access()
1026 jh->b_next_transaction == transaction) in do_get_write_access()
1033 jh->b_modified = 0; in do_get_write_access()
1040 if (!jh->b_transaction) { in do_get_write_access()
1041 JBUFFER_TRACE(jh, "no transaction"); in do_get_write_access()
1042 J_ASSERT_JH(jh, !jh->b_next_transaction); in do_get_write_access()
1043 JBUFFER_TRACE(jh, "file as BJ_Reserved"); in do_get_write_access()
1051 __jbd2_journal_file_buffer(jh, transaction, BJ_Reserved); in do_get_write_access()
1059 if (jh->b_frozen_data) { in do_get_write_access()
1060 JBUFFER_TRACE(jh, "has frozen data"); in do_get_write_access()
1061 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); in do_get_write_access()
1065 JBUFFER_TRACE(jh, "owned by older transaction"); in do_get_write_access()
1066 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); in do_get_write_access()
1067 J_ASSERT_JH(jh, jh->b_transaction == journal->j_committing_transaction); in do_get_write_access()
1079 JBUFFER_TRACE(jh, "on shadow: sleep"); in do_get_write_access()
1080 spin_unlock(&jh->b_state_lock); in do_get_write_access()
1097 if (jh->b_jlist == BJ_Metadata || force_copy) { in do_get_write_access()
1098 JBUFFER_TRACE(jh, "generate frozen data"); in do_get_write_access()
1100 JBUFFER_TRACE(jh, "allocate memory for buffer"); in do_get_write_access()
1101 spin_unlock(&jh->b_state_lock); in do_get_write_access()
1102 frozen_buffer = jbd2_alloc(jh2bh(jh)->b_size, in do_get_write_access()
1106 jh->b_frozen_data = frozen_buffer; in do_get_write_access()
1108 jbd2_freeze_jh_data(jh); in do_get_write_access()
1117 jh->b_next_transaction = transaction; in do_get_write_access()
1120 spin_unlock(&jh->b_state_lock); in do_get_write_access()
1126 jbd2_journal_cancel_revoke(handle, jh); in do_get_write_access()
1132 JBUFFER_TRACE(jh, "exit"); in do_get_write_access()
1140 struct journal_head *jh; in jbd2_write_access_granted() local
1162 jh = READ_ONCE(bh->b_private); in jbd2_write_access_granted()
1163 if (!jh) in jbd2_write_access_granted()
1166 if (undo && !jh->b_committed_data) in jbd2_write_access_granted()
1168 if (READ_ONCE(jh->b_transaction) != handle->h_transaction && in jbd2_write_access_granted()
1169 READ_ONCE(jh->b_next_transaction) != handle->h_transaction) in jbd2_write_access_granted()
1181 if (unlikely(jh->b_bh != bh)) in jbd2_write_access_granted()
1203 struct journal_head *jh; in jbd2_journal_get_write_access() local
1212 jh = jbd2_journal_add_journal_head(bh); in jbd2_journal_get_write_access()
1216 rc = do_get_write_access(handle, jh, 0); in jbd2_journal_get_write_access()
1217 jbd2_journal_put_journal_head(jh); in jbd2_journal_get_write_access()
1245 struct journal_head *jh = jbd2_journal_add_journal_head(bh); in jbd2_journal_get_create_access() local
1248 jbd_debug(5, "journal_head %p\n", jh); in jbd2_journal_get_create_access()
1255 JBUFFER_TRACE(jh, "entry"); in jbd2_journal_get_create_access()
1263 spin_lock(&jh->b_state_lock); in jbd2_journal_get_create_access()
1264 J_ASSERT_JH(jh, (jh->b_transaction == transaction || in jbd2_journal_get_create_access()
1265 jh->b_transaction == NULL || in jbd2_journal_get_create_access()
1266 (jh->b_transaction == journal->j_committing_transaction && in jbd2_journal_get_create_access()
1267 jh->b_jlist == BJ_Forget))); in jbd2_journal_get_create_access()
1269 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); in jbd2_journal_get_create_access()
1270 J_ASSERT_JH(jh, buffer_locked(jh2bh(jh))); in jbd2_journal_get_create_access()
1272 if (jh->b_transaction == NULL) { in jbd2_journal_get_create_access()
1281 clear_buffer_dirty(jh2bh(jh)); in jbd2_journal_get_create_access()
1283 jh->b_modified = 0; in jbd2_journal_get_create_access()
1285 JBUFFER_TRACE(jh, "file as BJ_Reserved"); in jbd2_journal_get_create_access()
1287 __jbd2_journal_file_buffer(jh, transaction, BJ_Reserved); in jbd2_journal_get_create_access()
1289 } else if (jh->b_transaction == journal->j_committing_transaction) { in jbd2_journal_get_create_access()
1291 jh->b_modified = 0; in jbd2_journal_get_create_access()
1293 JBUFFER_TRACE(jh, "set next transaction"); in jbd2_journal_get_create_access()
1295 jh->b_next_transaction = transaction; in jbd2_journal_get_create_access()
1298 spin_unlock(&jh->b_state_lock); in jbd2_journal_get_create_access()
1307 JBUFFER_TRACE(jh, "cancelling revoke"); in jbd2_journal_get_create_access()
1308 jbd2_journal_cancel_revoke(handle, jh); in jbd2_journal_get_create_access()
1310 jbd2_journal_put_journal_head(jh); in jbd2_journal_get_create_access()
1343 struct journal_head *jh; in jbd2_journal_get_undo_access() local
1352 jh = jbd2_journal_add_journal_head(bh); in jbd2_journal_get_undo_access()
1353 JBUFFER_TRACE(jh, "entry"); in jbd2_journal_get_undo_access()
1360 err = do_get_write_access(handle, jh, 1); in jbd2_journal_get_undo_access()
1365 if (!jh->b_committed_data) in jbd2_journal_get_undo_access()
1366 committed_data = jbd2_alloc(jh2bh(jh)->b_size, in jbd2_journal_get_undo_access()
1369 spin_lock(&jh->b_state_lock); in jbd2_journal_get_undo_access()
1370 if (!jh->b_committed_data) { in jbd2_journal_get_undo_access()
1373 JBUFFER_TRACE(jh, "generate b_committed data"); in jbd2_journal_get_undo_access()
1375 spin_unlock(&jh->b_state_lock); in jbd2_journal_get_undo_access()
1379 jh->b_committed_data = committed_data; in jbd2_journal_get_undo_access()
1381 memcpy(jh->b_committed_data, bh->b_data, bh->b_size); in jbd2_journal_get_undo_access()
1383 spin_unlock(&jh->b_state_lock); in jbd2_journal_get_undo_access()
1385 jbd2_journal_put_journal_head(jh); in jbd2_journal_get_undo_access()
1405 struct journal_head *jh = jbd2_journal_grab_journal_head(bh); in jbd2_journal_set_triggers() local
1407 if (WARN_ON(!jh)) in jbd2_journal_set_triggers()
1409 jh->b_triggers = type; in jbd2_journal_set_triggers()
1410 jbd2_journal_put_journal_head(jh); in jbd2_journal_set_triggers()
1413 void jbd2_buffer_frozen_trigger(struct journal_head *jh, void *mapped_data, in jbd2_buffer_frozen_trigger() argument
1416 struct buffer_head *bh = jh2bh(jh); in jbd2_buffer_frozen_trigger()
1424 void jbd2_buffer_abort_trigger(struct journal_head *jh, in jbd2_buffer_abort_trigger() argument
1430 triggers->t_abort(triggers, jh2bh(jh)); in jbd2_buffer_abort_trigger()
1460 struct journal_head *jh; in jbd2_journal_dirty_metadata() local
1470 jh = bh2jh(bh); in jbd2_journal_dirty_metadata()
1471 jbd_debug(5, "journal_head %p\n", jh); in jbd2_journal_dirty_metadata()
1472 JBUFFER_TRACE(jh, "entry"); in jbd2_journal_dirty_metadata()
1480 if (data_race(jh->b_transaction != transaction && in jbd2_journal_dirty_metadata()
1481 jh->b_next_transaction != transaction)) { in jbd2_journal_dirty_metadata()
1482 spin_lock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1483 J_ASSERT_JH(jh, jh->b_transaction == transaction || in jbd2_journal_dirty_metadata()
1484 jh->b_next_transaction == transaction); in jbd2_journal_dirty_metadata()
1485 spin_unlock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1487 if (jh->b_modified == 1) { in jbd2_journal_dirty_metadata()
1489 if (data_race(jh->b_transaction == transaction && in jbd2_journal_dirty_metadata()
1490 jh->b_jlist != BJ_Metadata)) { in jbd2_journal_dirty_metadata()
1491 spin_lock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1492 if (jh->b_transaction == transaction && in jbd2_journal_dirty_metadata()
1493 jh->b_jlist != BJ_Metadata) in jbd2_journal_dirty_metadata()
1498 jh->b_jlist); in jbd2_journal_dirty_metadata()
1499 J_ASSERT_JH(jh, jh->b_transaction != transaction || in jbd2_journal_dirty_metadata()
1500 jh->b_jlist == BJ_Metadata); in jbd2_journal_dirty_metadata()
1501 spin_unlock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1507 spin_lock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1521 if (jh->b_modified == 0) { in jbd2_journal_dirty_metadata()
1531 jh->b_modified = 1; in jbd2_journal_dirty_metadata()
1542 if (jh->b_transaction == transaction && jh->b_jlist == BJ_Metadata) { in jbd2_journal_dirty_metadata()
1543 JBUFFER_TRACE(jh, "fastpath"); in jbd2_journal_dirty_metadata()
1544 if (unlikely(jh->b_transaction != in jbd2_journal_dirty_metadata()
1551 jh->b_transaction, in jbd2_journal_dirty_metadata()
1552 jh->b_transaction ? jh->b_transaction->t_tid : 0, in jbd2_journal_dirty_metadata()
1569 if (jh->b_transaction != transaction) { in jbd2_journal_dirty_metadata()
1570 JBUFFER_TRACE(jh, "already on other transaction"); in jbd2_journal_dirty_metadata()
1571 if (unlikely(((jh->b_transaction != in jbd2_journal_dirty_metadata()
1573 (jh->b_next_transaction != transaction))) { in jbd2_journal_dirty_metadata()
1582 jh->b_transaction, in jbd2_journal_dirty_metadata()
1583 jh->b_transaction ? in jbd2_journal_dirty_metadata()
1584 jh->b_transaction->t_tid : 0, in jbd2_journal_dirty_metadata()
1585 jh->b_next_transaction, in jbd2_journal_dirty_metadata()
1586 jh->b_next_transaction ? in jbd2_journal_dirty_metadata()
1587 jh->b_next_transaction->t_tid : 0, in jbd2_journal_dirty_metadata()
1588 jh->b_jlist); in jbd2_journal_dirty_metadata()
1598 J_ASSERT_JH(jh, jh->b_frozen_data == NULL); in jbd2_journal_dirty_metadata()
1600 JBUFFER_TRACE(jh, "file as BJ_Metadata"); in jbd2_journal_dirty_metadata()
1602 __jbd2_journal_file_buffer(jh, transaction, BJ_Metadata); in jbd2_journal_dirty_metadata()
1605 spin_unlock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1607 JBUFFER_TRACE(jh, "exit"); in jbd2_journal_dirty_metadata()
1632 struct journal_head *jh; in jbd2_journal_forget() local
1643 jh = jbd2_journal_grab_journal_head(bh); in jbd2_journal_forget()
1644 if (!jh) { in jbd2_journal_forget()
1649 spin_lock(&jh->b_state_lock); in jbd2_journal_forget()
1653 if (!J_EXPECT_JH(jh, !jh->b_committed_data, in jbd2_journal_forget()
1660 was_modified = jh->b_modified; in jbd2_journal_forget()
1666 jh->b_modified = 0; in jbd2_journal_forget()
1668 if (jh->b_transaction == transaction) { in jbd2_journal_forget()
1669 J_ASSERT_JH(jh, !jh->b_frozen_data); in jbd2_journal_forget()
1677 JBUFFER_TRACE(jh, "belongs to current transaction: unfile"); in jbd2_journal_forget()
1699 if (jh->b_cp_transaction) { in jbd2_journal_forget()
1700 __jbd2_journal_temp_unlink_buffer(jh); in jbd2_journal_forget()
1701 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); in jbd2_journal_forget()
1703 __jbd2_journal_unfile_buffer(jh); in jbd2_journal_forget()
1704 jbd2_journal_put_journal_head(jh); in jbd2_journal_forget()
1707 } else if (jh->b_transaction) { in jbd2_journal_forget()
1708 J_ASSERT_JH(jh, (jh->b_transaction == in jbd2_journal_forget()
1712 JBUFFER_TRACE(jh, "belongs to older transaction"); in jbd2_journal_forget()
1722 if (!jh->b_next_transaction) { in jbd2_journal_forget()
1724 jh->b_next_transaction = transaction; in jbd2_journal_forget()
1727 J_ASSERT(jh->b_next_transaction == transaction); in jbd2_journal_forget()
1743 if (!jh->b_cp_transaction) { in jbd2_journal_forget()
1744 JBUFFER_TRACE(jh, "belongs to none transaction"); in jbd2_journal_forget()
1754 __jbd2_journal_remove_checkpoint(jh); in jbd2_journal_forget()
1766 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); in jbd2_journal_forget()
1771 spin_unlock(&jh->b_state_lock); in jbd2_journal_forget()
1772 jbd2_journal_put_journal_head(jh); in jbd2_journal_forget()
1951 __blist_add_buffer(struct journal_head **list, struct journal_head *jh) in __blist_add_buffer() argument
1954 jh->b_tnext = jh->b_tprev = jh; in __blist_add_buffer()
1955 *list = jh; in __blist_add_buffer()
1959 jh->b_tprev = last; in __blist_add_buffer()
1960 jh->b_tnext = first; in __blist_add_buffer()
1961 last->b_tnext = first->b_tprev = jh; in __blist_add_buffer()
1975 __blist_del_buffer(struct journal_head **list, struct journal_head *jh) in __blist_del_buffer() argument
1977 if (*list == jh) { in __blist_del_buffer()
1978 *list = jh->b_tnext; in __blist_del_buffer()
1979 if (*list == jh) in __blist_del_buffer()
1982 jh->b_tprev->b_tnext = jh->b_tnext; in __blist_del_buffer()
1983 jh->b_tnext->b_tprev = jh->b_tprev; in __blist_del_buffer()
1997 static void __jbd2_journal_temp_unlink_buffer(struct journal_head *jh) in __jbd2_journal_temp_unlink_buffer() argument
2001 struct buffer_head *bh = jh2bh(jh); in __jbd2_journal_temp_unlink_buffer()
2003 lockdep_assert_held(&jh->b_state_lock); in __jbd2_journal_temp_unlink_buffer()
2004 transaction = jh->b_transaction; in __jbd2_journal_temp_unlink_buffer()
2008 J_ASSERT_JH(jh, jh->b_jlist < BJ_Types); in __jbd2_journal_temp_unlink_buffer()
2009 if (jh->b_jlist != BJ_None) in __jbd2_journal_temp_unlink_buffer()
2010 J_ASSERT_JH(jh, transaction != NULL); in __jbd2_journal_temp_unlink_buffer()
2012 switch (jh->b_jlist) { in __jbd2_journal_temp_unlink_buffer()
2017 J_ASSERT_JH(jh, transaction->t_nr_buffers >= 0); in __jbd2_journal_temp_unlink_buffer()
2031 __blist_del_buffer(list, jh); in __jbd2_journal_temp_unlink_buffer()
2032 jh->b_jlist = BJ_None; in __jbd2_journal_temp_unlink_buffer()
2045 static void __jbd2_journal_unfile_buffer(struct journal_head *jh) in __jbd2_journal_unfile_buffer() argument
2047 J_ASSERT_JH(jh, jh->b_transaction != NULL); in __jbd2_journal_unfile_buffer()
2048 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); in __jbd2_journal_unfile_buffer()
2050 __jbd2_journal_temp_unlink_buffer(jh); in __jbd2_journal_unfile_buffer()
2051 jh->b_transaction = NULL; in __jbd2_journal_unfile_buffer()
2054 void jbd2_journal_unfile_buffer(journal_t *journal, struct journal_head *jh) in jbd2_journal_unfile_buffer() argument
2056 struct buffer_head *bh = jh2bh(jh); in jbd2_journal_unfile_buffer()
2060 spin_lock(&jh->b_state_lock); in jbd2_journal_unfile_buffer()
2062 __jbd2_journal_unfile_buffer(jh); in jbd2_journal_unfile_buffer()
2064 spin_unlock(&jh->b_state_lock); in jbd2_journal_unfile_buffer()
2065 jbd2_journal_put_journal_head(jh); in jbd2_journal_unfile_buffer()
2077 struct journal_head *jh; in __journal_try_to_free_buffer() local
2079 jh = bh2jh(bh); in __journal_try_to_free_buffer()
2084 if (jh->b_next_transaction != NULL || jh->b_transaction != NULL) in __journal_try_to_free_buffer()
2088 if (jh->b_cp_transaction != NULL) { in __journal_try_to_free_buffer()
2090 JBUFFER_TRACE(jh, "remove from checkpoint list"); in __journal_try_to_free_buffer()
2091 __jbd2_journal_remove_checkpoint(jh); in __journal_try_to_free_buffer()
2144 struct journal_head *jh; in jbd2_journal_try_to_free_buffers() local
2151 jh = jbd2_journal_grab_journal_head(bh); in jbd2_journal_try_to_free_buffers()
2152 if (!jh) in jbd2_journal_try_to_free_buffers()
2155 spin_lock(&jh->b_state_lock); in jbd2_journal_try_to_free_buffers()
2157 spin_unlock(&jh->b_state_lock); in jbd2_journal_try_to_free_buffers()
2158 jbd2_journal_put_journal_head(jh); in jbd2_journal_try_to_free_buffers()
2196 static int __dispose_buffer(struct journal_head *jh, transaction_t *transaction) in __dispose_buffer() argument
2199 struct buffer_head *bh = jh2bh(jh); in __dispose_buffer()
2201 if (jh->b_cp_transaction) { in __dispose_buffer()
2202 JBUFFER_TRACE(jh, "on running+cp transaction"); in __dispose_buffer()
2203 __jbd2_journal_temp_unlink_buffer(jh); in __dispose_buffer()
2210 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); in __dispose_buffer()
2213 JBUFFER_TRACE(jh, "on running transaction"); in __dispose_buffer()
2214 __jbd2_journal_unfile_buffer(jh); in __dispose_buffer()
2215 jbd2_journal_put_journal_head(jh); in __dispose_buffer()
2271 struct journal_head *jh; in journal_unmap_buffer() local
2282 jh = jbd2_journal_grab_journal_head(bh); in journal_unmap_buffer()
2283 if (!jh) in journal_unmap_buffer()
2288 spin_lock(&jh->b_state_lock); in journal_unmap_buffer()
2314 transaction = jh->b_transaction; in journal_unmap_buffer()
2320 if (!jh->b_cp_transaction) { in journal_unmap_buffer()
2321 JBUFFER_TRACE(jh, "not on any transaction: zap"); in journal_unmap_buffer()
2327 __jbd2_journal_remove_checkpoint(jh); in journal_unmap_buffer()
2339 JBUFFER_TRACE(jh, "checkpointed: add to BJ_Forget"); in journal_unmap_buffer()
2340 may_free = __dispose_buffer(jh, in journal_unmap_buffer()
2349 JBUFFER_TRACE(jh, "give to committing trans"); in journal_unmap_buffer()
2350 may_free = __dispose_buffer(jh, in journal_unmap_buffer()
2357 __jbd2_journal_remove_checkpoint(jh); in journal_unmap_buffer()
2362 JBUFFER_TRACE(jh, "on committing transaction"); in journal_unmap_buffer()
2370 spin_unlock(&jh->b_state_lock); in journal_unmap_buffer()
2372 jbd2_journal_put_journal_head(jh); in journal_unmap_buffer()
2384 jh->b_next_transaction = journal->j_running_transaction; in journal_unmap_buffer()
2385 jh->b_modified = 0; in journal_unmap_buffer()
2387 spin_unlock(&jh->b_state_lock); in journal_unmap_buffer()
2389 jbd2_journal_put_journal_head(jh); in journal_unmap_buffer()
2398 J_ASSERT_JH(jh, transaction == journal->j_running_transaction); in journal_unmap_buffer()
2399 JBUFFER_TRACE(jh, "on running transaction"); in journal_unmap_buffer()
2400 may_free = __dispose_buffer(jh, transaction); in journal_unmap_buffer()
2412 jh->b_modified = 0; in journal_unmap_buffer()
2414 spin_unlock(&jh->b_state_lock); in journal_unmap_buffer()
2416 jbd2_journal_put_journal_head(jh); in journal_unmap_buffer()
2496 void __jbd2_journal_file_buffer(struct journal_head *jh, in __jbd2_journal_file_buffer() argument
2501 struct buffer_head *bh = jh2bh(jh); in __jbd2_journal_file_buffer()
2503 lockdep_assert_held(&jh->b_state_lock); in __jbd2_journal_file_buffer()
2506 J_ASSERT_JH(jh, jh->b_jlist < BJ_Types); in __jbd2_journal_file_buffer()
2507 J_ASSERT_JH(jh, jh->b_transaction == transaction || in __jbd2_journal_file_buffer()
2508 jh->b_transaction == NULL); in __jbd2_journal_file_buffer()
2510 if (jh->b_transaction && jh->b_jlist == jlist) in __jbd2_journal_file_buffer()
2529 if (jh->b_transaction) in __jbd2_journal_file_buffer()
2530 __jbd2_journal_temp_unlink_buffer(jh); in __jbd2_journal_file_buffer()
2533 jh->b_transaction = transaction; in __jbd2_journal_file_buffer()
2537 J_ASSERT_JH(jh, !jh->b_committed_data); in __jbd2_journal_file_buffer()
2538 J_ASSERT_JH(jh, !jh->b_frozen_data); in __jbd2_journal_file_buffer()
2555 __blist_add_buffer(list, jh); in __jbd2_journal_file_buffer()
2556 jh->b_jlist = jlist; in __jbd2_journal_file_buffer()
2562 void jbd2_journal_file_buffer(struct journal_head *jh, in jbd2_journal_file_buffer() argument
2565 spin_lock(&jh->b_state_lock); in jbd2_journal_file_buffer()
2567 __jbd2_journal_file_buffer(jh, transaction, jlist); in jbd2_journal_file_buffer()
2569 spin_unlock(&jh->b_state_lock); in jbd2_journal_file_buffer()
2585 bool __jbd2_journal_refile_buffer(struct journal_head *jh) in __jbd2_journal_refile_buffer() argument
2588 struct buffer_head *bh = jh2bh(jh); in __jbd2_journal_refile_buffer()
2590 lockdep_assert_held(&jh->b_state_lock); in __jbd2_journal_refile_buffer()
2591 if (jh->b_transaction) in __jbd2_journal_refile_buffer()
2592 assert_spin_locked(&jh->b_transaction->t_journal->j_list_lock); in __jbd2_journal_refile_buffer()
2595 if (jh->b_next_transaction == NULL) { in __jbd2_journal_refile_buffer()
2596 __jbd2_journal_unfile_buffer(jh); in __jbd2_journal_refile_buffer()
2606 __jbd2_journal_temp_unlink_buffer(jh); in __jbd2_journal_refile_buffer()
2612 J_ASSERT_JH(jh, jh->b_transaction != NULL); in __jbd2_journal_refile_buffer()
2619 WRITE_ONCE(jh->b_transaction, jh->b_next_transaction); in __jbd2_journal_refile_buffer()
2620 WRITE_ONCE(jh->b_next_transaction, NULL); in __jbd2_journal_refile_buffer()
2623 else if (jh->b_modified) in __jbd2_journal_refile_buffer()
2627 __jbd2_journal_file_buffer(jh, jh->b_transaction, jlist); in __jbd2_journal_refile_buffer()
2628 J_ASSERT_JH(jh, jh->b_transaction->t_state == T_RUNNING); in __jbd2_journal_refile_buffer()
2641 void jbd2_journal_refile_buffer(journal_t *journal, struct journal_head *jh) in jbd2_journal_refile_buffer() argument
2645 spin_lock(&jh->b_state_lock); in jbd2_journal_refile_buffer()
2647 drop = __jbd2_journal_refile_buffer(jh); in jbd2_journal_refile_buffer()
2648 spin_unlock(&jh->b_state_lock); in jbd2_journal_refile_buffer()
2651 jbd2_journal_put_journal_head(jh); in jbd2_journal_refile_buffer()