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);
927 static void jbd2_freeze_jh_data(struct journal_head *jh) in jbd2_freeze_jh_data() argument
932 struct buffer_head *bh = jh2bh(jh); in jbd2_freeze_jh_data()
934 J_EXPECT_JH(jh, buffer_uptodate(bh), "Possible IO failure.\n"); in jbd2_freeze_jh_data()
939 jbd2_buffer_frozen_trigger(jh, source + offset, jh->b_triggers); in jbd2_freeze_jh_data()
940 memcpy(jh->b_frozen_data, source + offset, bh->b_size); in jbd2_freeze_jh_data()
947 jh->b_frozen_triggers = jh->b_triggers; in jbd2_freeze_jh_data()
961 do_get_write_access(handle_t *handle, struct journal_head *jh, in do_get_write_access() argument
973 jbd_debug(5, "journal_head %p, force_copy %d\n", jh, force_copy); in do_get_write_access()
975 JBUFFER_TRACE(jh, "entry"); in do_get_write_access()
977 bh = jh2bh(jh); in do_get_write_access()
983 spin_lock(&jh->b_state_lock); in do_get_write_access()
1009 if (jh->b_transaction) { in do_get_write_access()
1010 J_ASSERT_JH(jh, in do_get_write_access()
1011 jh->b_transaction == transaction || in do_get_write_access()
1012 jh->b_transaction == in do_get_write_access()
1014 if (jh->b_next_transaction) in do_get_write_access()
1015 J_ASSERT_JH(jh, jh->b_next_transaction == in do_get_write_access()
1024 JBUFFER_TRACE(jh, "Journalling dirty buffer"); in do_get_write_access()
1033 spin_unlock(&jh->b_state_lock); in do_get_write_access()
1042 if (jh->b_transaction == transaction || in do_get_write_access()
1043 jh->b_next_transaction == transaction) in do_get_write_access()
1050 jh->b_modified = 0; in do_get_write_access()
1057 if (!jh->b_transaction) { in do_get_write_access()
1058 JBUFFER_TRACE(jh, "no transaction"); in do_get_write_access()
1059 J_ASSERT_JH(jh, !jh->b_next_transaction); in do_get_write_access()
1060 JBUFFER_TRACE(jh, "file as BJ_Reserved"); in do_get_write_access()
1068 __jbd2_journal_file_buffer(jh, transaction, BJ_Reserved); in do_get_write_access()
1076 if (jh->b_frozen_data) { in do_get_write_access()
1077 JBUFFER_TRACE(jh, "has frozen data"); in do_get_write_access()
1078 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); in do_get_write_access()
1082 JBUFFER_TRACE(jh, "owned by older transaction"); in do_get_write_access()
1083 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); in do_get_write_access()
1084 J_ASSERT_JH(jh, jh->b_transaction == journal->j_committing_transaction); in do_get_write_access()
1096 JBUFFER_TRACE(jh, "on shadow: sleep"); in do_get_write_access()
1097 spin_unlock(&jh->b_state_lock); in do_get_write_access()
1114 if (jh->b_jlist == BJ_Metadata || force_copy) { in do_get_write_access()
1115 JBUFFER_TRACE(jh, "generate frozen data"); in do_get_write_access()
1117 JBUFFER_TRACE(jh, "allocate memory for buffer"); in do_get_write_access()
1118 spin_unlock(&jh->b_state_lock); in do_get_write_access()
1119 frozen_buffer = jbd2_alloc(jh2bh(jh)->b_size, in do_get_write_access()
1123 jh->b_frozen_data = frozen_buffer; in do_get_write_access()
1125 jbd2_freeze_jh_data(jh); in do_get_write_access()
1134 jh->b_next_transaction = transaction; in do_get_write_access()
1137 spin_unlock(&jh->b_state_lock); in do_get_write_access()
1143 jbd2_journal_cancel_revoke(handle, jh); in do_get_write_access()
1149 JBUFFER_TRACE(jh, "exit"); in do_get_write_access()
1157 struct journal_head *jh; in jbd2_write_access_granted() local
1179 jh = READ_ONCE(bh->b_private); in jbd2_write_access_granted()
1180 if (!jh) in jbd2_write_access_granted()
1183 if (undo && !jh->b_committed_data) in jbd2_write_access_granted()
1185 if (READ_ONCE(jh->b_transaction) != handle->h_transaction && in jbd2_write_access_granted()
1186 READ_ONCE(jh->b_next_transaction) != handle->h_transaction) in jbd2_write_access_granted()
1198 if (unlikely(jh->b_bh != bh)) in jbd2_write_access_granted()
1220 struct journal_head *jh; in jbd2_journal_get_write_access() local
1229 jh = jbd2_journal_add_journal_head(bh); in jbd2_journal_get_write_access()
1233 rc = do_get_write_access(handle, jh, 0); in jbd2_journal_get_write_access()
1234 jbd2_journal_put_journal_head(jh); in jbd2_journal_get_write_access()
1262 struct journal_head *jh = jbd2_journal_add_journal_head(bh); in jbd2_journal_get_create_access() local
1265 jbd_debug(5, "journal_head %p\n", jh); in jbd2_journal_get_create_access()
1272 JBUFFER_TRACE(jh, "entry"); in jbd2_journal_get_create_access()
1280 spin_lock(&jh->b_state_lock); in jbd2_journal_get_create_access()
1281 J_ASSERT_JH(jh, (jh->b_transaction == transaction || in jbd2_journal_get_create_access()
1282 jh->b_transaction == NULL || in jbd2_journal_get_create_access()
1283 (jh->b_transaction == journal->j_committing_transaction && in jbd2_journal_get_create_access()
1284 jh->b_jlist == BJ_Forget))); in jbd2_journal_get_create_access()
1286 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); in jbd2_journal_get_create_access()
1287 J_ASSERT_JH(jh, buffer_locked(jh2bh(jh))); in jbd2_journal_get_create_access()
1289 if (jh->b_transaction == NULL) { in jbd2_journal_get_create_access()
1298 clear_buffer_dirty(jh2bh(jh)); in jbd2_journal_get_create_access()
1300 jh->b_modified = 0; in jbd2_journal_get_create_access()
1302 JBUFFER_TRACE(jh, "file as BJ_Reserved"); in jbd2_journal_get_create_access()
1304 __jbd2_journal_file_buffer(jh, transaction, BJ_Reserved); in jbd2_journal_get_create_access()
1306 } else if (jh->b_transaction == journal->j_committing_transaction) { in jbd2_journal_get_create_access()
1308 jh->b_modified = 0; in jbd2_journal_get_create_access()
1310 JBUFFER_TRACE(jh, "set next transaction"); in jbd2_journal_get_create_access()
1312 jh->b_next_transaction = transaction; in jbd2_journal_get_create_access()
1315 spin_unlock(&jh->b_state_lock); in jbd2_journal_get_create_access()
1324 JBUFFER_TRACE(jh, "cancelling revoke"); in jbd2_journal_get_create_access()
1325 jbd2_journal_cancel_revoke(handle, jh); in jbd2_journal_get_create_access()
1327 jbd2_journal_put_journal_head(jh); in jbd2_journal_get_create_access()
1360 struct journal_head *jh; in jbd2_journal_get_undo_access() local
1369 jh = jbd2_journal_add_journal_head(bh); in jbd2_journal_get_undo_access()
1370 JBUFFER_TRACE(jh, "entry"); in jbd2_journal_get_undo_access()
1377 err = do_get_write_access(handle, jh, 1); in jbd2_journal_get_undo_access()
1382 if (!jh->b_committed_data) in jbd2_journal_get_undo_access()
1383 committed_data = jbd2_alloc(jh2bh(jh)->b_size, in jbd2_journal_get_undo_access()
1386 spin_lock(&jh->b_state_lock); in jbd2_journal_get_undo_access()
1387 if (!jh->b_committed_data) { in jbd2_journal_get_undo_access()
1390 JBUFFER_TRACE(jh, "generate b_committed data"); in jbd2_journal_get_undo_access()
1392 spin_unlock(&jh->b_state_lock); in jbd2_journal_get_undo_access()
1396 jh->b_committed_data = committed_data; in jbd2_journal_get_undo_access()
1398 memcpy(jh->b_committed_data, bh->b_data, bh->b_size); in jbd2_journal_get_undo_access()
1400 spin_unlock(&jh->b_state_lock); in jbd2_journal_get_undo_access()
1402 jbd2_journal_put_journal_head(jh); in jbd2_journal_get_undo_access()
1422 struct journal_head *jh = jbd2_journal_grab_journal_head(bh); in jbd2_journal_set_triggers() local
1424 if (WARN_ON_ONCE(!jh)) in jbd2_journal_set_triggers()
1426 jh->b_triggers = type; in jbd2_journal_set_triggers()
1427 jbd2_journal_put_journal_head(jh); in jbd2_journal_set_triggers()
1430 void jbd2_buffer_frozen_trigger(struct journal_head *jh, void *mapped_data, in jbd2_buffer_frozen_trigger() argument
1433 struct buffer_head *bh = jh2bh(jh); in jbd2_buffer_frozen_trigger()
1441 void jbd2_buffer_abort_trigger(struct journal_head *jh, in jbd2_buffer_abort_trigger() argument
1447 triggers->t_abort(triggers, jh2bh(jh)); in jbd2_buffer_abort_trigger()
1477 struct journal_head *jh; in jbd2_journal_dirty_metadata() local
1489 jh = bh2jh(bh); in jbd2_journal_dirty_metadata()
1490 jbd_debug(5, "journal_head %p\n", jh); in jbd2_journal_dirty_metadata()
1491 JBUFFER_TRACE(jh, "entry"); in jbd2_journal_dirty_metadata()
1499 if (data_race(jh->b_transaction != transaction && in jbd2_journal_dirty_metadata()
1500 jh->b_next_transaction != transaction)) { in jbd2_journal_dirty_metadata()
1501 spin_lock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1502 J_ASSERT_JH(jh, jh->b_transaction == transaction || in jbd2_journal_dirty_metadata()
1503 jh->b_next_transaction == transaction); in jbd2_journal_dirty_metadata()
1504 spin_unlock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1506 if (jh->b_modified == 1) { in jbd2_journal_dirty_metadata()
1508 if (data_race(jh->b_transaction == transaction && in jbd2_journal_dirty_metadata()
1509 jh->b_jlist != BJ_Metadata)) { in jbd2_journal_dirty_metadata()
1510 spin_lock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1511 if (jh->b_transaction == transaction && in jbd2_journal_dirty_metadata()
1512 jh->b_jlist != BJ_Metadata) in jbd2_journal_dirty_metadata()
1517 jh->b_jlist); in jbd2_journal_dirty_metadata()
1518 J_ASSERT_JH(jh, jh->b_transaction != transaction || in jbd2_journal_dirty_metadata()
1519 jh->b_jlist == BJ_Metadata); in jbd2_journal_dirty_metadata()
1520 spin_unlock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1526 spin_lock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1528 if (jh->b_modified == 0) { in jbd2_journal_dirty_metadata()
1538 jh->b_modified = 1; in jbd2_journal_dirty_metadata()
1549 if (jh->b_transaction == transaction && jh->b_jlist == BJ_Metadata) { in jbd2_journal_dirty_metadata()
1550 JBUFFER_TRACE(jh, "fastpath"); in jbd2_journal_dirty_metadata()
1551 if (unlikely(jh->b_transaction != in jbd2_journal_dirty_metadata()
1558 jh->b_transaction, in jbd2_journal_dirty_metadata()
1559 jh->b_transaction ? jh->b_transaction->t_tid : 0, in jbd2_journal_dirty_metadata()
1576 if (jh->b_transaction != transaction) { in jbd2_journal_dirty_metadata()
1577 JBUFFER_TRACE(jh, "already on other transaction"); in jbd2_journal_dirty_metadata()
1578 if (unlikely(((jh->b_transaction != in jbd2_journal_dirty_metadata()
1580 (jh->b_next_transaction != transaction))) { in jbd2_journal_dirty_metadata()
1589 jh->b_transaction, in jbd2_journal_dirty_metadata()
1590 jh->b_transaction ? in jbd2_journal_dirty_metadata()
1591 jh->b_transaction->t_tid : 0, in jbd2_journal_dirty_metadata()
1592 jh->b_next_transaction, in jbd2_journal_dirty_metadata()
1593 jh->b_next_transaction ? in jbd2_journal_dirty_metadata()
1594 jh->b_next_transaction->t_tid : 0, in jbd2_journal_dirty_metadata()
1595 jh->b_jlist); in jbd2_journal_dirty_metadata()
1605 J_ASSERT_JH(jh, jh->b_frozen_data == NULL); in jbd2_journal_dirty_metadata()
1607 JBUFFER_TRACE(jh, "file as BJ_Metadata"); in jbd2_journal_dirty_metadata()
1609 __jbd2_journal_file_buffer(jh, transaction, BJ_Metadata); in jbd2_journal_dirty_metadata()
1612 spin_unlock(&jh->b_state_lock); in jbd2_journal_dirty_metadata()
1614 JBUFFER_TRACE(jh, "exit"); in jbd2_journal_dirty_metadata()
1639 struct journal_head *jh; in jbd2_journal_forget() local
1650 jh = jbd2_journal_grab_journal_head(bh); in jbd2_journal_forget()
1651 if (!jh) { in jbd2_journal_forget()
1656 spin_lock(&jh->b_state_lock); in jbd2_journal_forget()
1660 if (!J_EXPECT_JH(jh, !jh->b_committed_data, in jbd2_journal_forget()
1667 was_modified = jh->b_modified; in jbd2_journal_forget()
1673 jh->b_modified = 0; in jbd2_journal_forget()
1675 if (jh->b_transaction == transaction) { in jbd2_journal_forget()
1676 J_ASSERT_JH(jh, !jh->b_frozen_data); in jbd2_journal_forget()
1684 JBUFFER_TRACE(jh, "belongs to current transaction: unfile"); in jbd2_journal_forget()
1706 if (jh->b_cp_transaction) { in jbd2_journal_forget()
1707 __jbd2_journal_temp_unlink_buffer(jh); in jbd2_journal_forget()
1708 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); in jbd2_journal_forget()
1710 __jbd2_journal_unfile_buffer(jh); in jbd2_journal_forget()
1711 jbd2_journal_put_journal_head(jh); in jbd2_journal_forget()
1714 } else if (jh->b_transaction) { in jbd2_journal_forget()
1715 J_ASSERT_JH(jh, (jh->b_transaction == in jbd2_journal_forget()
1719 JBUFFER_TRACE(jh, "belongs to older transaction"); in jbd2_journal_forget()
1729 if (!jh->b_next_transaction) { in jbd2_journal_forget()
1731 jh->b_next_transaction = transaction; in jbd2_journal_forget()
1734 J_ASSERT(jh->b_next_transaction == transaction); in jbd2_journal_forget()
1750 if (!jh->b_cp_transaction) { in jbd2_journal_forget()
1751 JBUFFER_TRACE(jh, "belongs to none transaction"); in jbd2_journal_forget()
1761 __jbd2_journal_remove_checkpoint(jh); in jbd2_journal_forget()
1773 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); in jbd2_journal_forget()
1778 spin_unlock(&jh->b_state_lock); in jbd2_journal_forget()
1779 jbd2_journal_put_journal_head(jh); in jbd2_journal_forget()
1958 __blist_add_buffer(struct journal_head **list, struct journal_head *jh) in __blist_add_buffer() argument
1961 jh->b_tnext = jh->b_tprev = jh; in __blist_add_buffer()
1962 *list = jh; in __blist_add_buffer()
1966 jh->b_tprev = last; in __blist_add_buffer()
1967 jh->b_tnext = first; in __blist_add_buffer()
1968 last->b_tnext = first->b_tprev = jh; in __blist_add_buffer()
1982 __blist_del_buffer(struct journal_head **list, struct journal_head *jh) in __blist_del_buffer() argument
1984 if (*list == jh) { in __blist_del_buffer()
1985 *list = jh->b_tnext; in __blist_del_buffer()
1986 if (*list == jh) in __blist_del_buffer()
1989 jh->b_tprev->b_tnext = jh->b_tnext; in __blist_del_buffer()
1990 jh->b_tnext->b_tprev = jh->b_tprev; in __blist_del_buffer()
2004 static void __jbd2_journal_temp_unlink_buffer(struct journal_head *jh) in __jbd2_journal_temp_unlink_buffer() argument
2008 struct buffer_head *bh = jh2bh(jh); in __jbd2_journal_temp_unlink_buffer()
2010 lockdep_assert_held(&jh->b_state_lock); in __jbd2_journal_temp_unlink_buffer()
2011 transaction = jh->b_transaction; in __jbd2_journal_temp_unlink_buffer()
2015 J_ASSERT_JH(jh, jh->b_jlist < BJ_Types); in __jbd2_journal_temp_unlink_buffer()
2016 if (jh->b_jlist != BJ_None) in __jbd2_journal_temp_unlink_buffer()
2017 J_ASSERT_JH(jh, transaction != NULL); in __jbd2_journal_temp_unlink_buffer()
2019 switch (jh->b_jlist) { in __jbd2_journal_temp_unlink_buffer()
2024 J_ASSERT_JH(jh, transaction->t_nr_buffers >= 0); in __jbd2_journal_temp_unlink_buffer()
2038 __blist_del_buffer(list, jh); in __jbd2_journal_temp_unlink_buffer()
2039 jh->b_jlist = BJ_None; in __jbd2_journal_temp_unlink_buffer()
2052 static void __jbd2_journal_unfile_buffer(struct journal_head *jh) in __jbd2_journal_unfile_buffer() argument
2054 J_ASSERT_JH(jh, jh->b_transaction != NULL); in __jbd2_journal_unfile_buffer()
2055 J_ASSERT_JH(jh, jh->b_next_transaction == NULL); in __jbd2_journal_unfile_buffer()
2057 __jbd2_journal_temp_unlink_buffer(jh); in __jbd2_journal_unfile_buffer()
2058 jh->b_transaction = NULL; in __jbd2_journal_unfile_buffer()
2061 void jbd2_journal_unfile_buffer(journal_t *journal, struct journal_head *jh) in jbd2_journal_unfile_buffer() argument
2063 struct buffer_head *bh = jh2bh(jh); in jbd2_journal_unfile_buffer()
2067 spin_lock(&jh->b_state_lock); in jbd2_journal_unfile_buffer()
2069 __jbd2_journal_unfile_buffer(jh); in jbd2_journal_unfile_buffer()
2071 spin_unlock(&jh->b_state_lock); in jbd2_journal_unfile_buffer()
2072 jbd2_journal_put_journal_head(jh); in jbd2_journal_unfile_buffer()
2084 struct journal_head *jh; in __journal_try_to_free_buffer() local
2086 jh = bh2jh(bh); in __journal_try_to_free_buffer()
2091 if (jh->b_next_transaction != NULL || jh->b_transaction != NULL) in __journal_try_to_free_buffer()
2095 if (jh->b_cp_transaction != NULL) { in __journal_try_to_free_buffer()
2097 JBUFFER_TRACE(jh, "remove from checkpoint list"); in __journal_try_to_free_buffer()
2098 __jbd2_journal_remove_checkpoint(jh); in __journal_try_to_free_buffer()
2150 struct journal_head *jh; in jbd2_journal_try_to_free_buffers() local
2157 jh = jbd2_journal_grab_journal_head(bh); in jbd2_journal_try_to_free_buffers()
2158 if (!jh) in jbd2_journal_try_to_free_buffers()
2161 spin_lock(&jh->b_state_lock); in jbd2_journal_try_to_free_buffers()
2163 spin_unlock(&jh->b_state_lock); in jbd2_journal_try_to_free_buffers()
2164 jbd2_journal_put_journal_head(jh); in jbd2_journal_try_to_free_buffers()
2186 static int __dispose_buffer(struct journal_head *jh, transaction_t *transaction) in __dispose_buffer() argument
2189 struct buffer_head *bh = jh2bh(jh); in __dispose_buffer()
2191 if (jh->b_cp_transaction) { in __dispose_buffer()
2192 JBUFFER_TRACE(jh, "on running+cp transaction"); in __dispose_buffer()
2193 __jbd2_journal_temp_unlink_buffer(jh); in __dispose_buffer()
2200 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget); in __dispose_buffer()
2203 JBUFFER_TRACE(jh, "on running transaction"); in __dispose_buffer()
2204 __jbd2_journal_unfile_buffer(jh); in __dispose_buffer()
2205 jbd2_journal_put_journal_head(jh); in __dispose_buffer()
2261 struct journal_head *jh; in journal_unmap_buffer() local
2272 jh = jbd2_journal_grab_journal_head(bh); in journal_unmap_buffer()
2273 if (!jh) in journal_unmap_buffer()
2278 spin_lock(&jh->b_state_lock); in journal_unmap_buffer()
2304 transaction = jh->b_transaction; in journal_unmap_buffer()
2310 if (!jh->b_cp_transaction) { in journal_unmap_buffer()
2311 JBUFFER_TRACE(jh, "not on any transaction: zap"); in journal_unmap_buffer()
2317 __jbd2_journal_remove_checkpoint(jh); in journal_unmap_buffer()
2329 JBUFFER_TRACE(jh, "checkpointed: add to BJ_Forget"); in journal_unmap_buffer()
2330 may_free = __dispose_buffer(jh, in journal_unmap_buffer()
2339 JBUFFER_TRACE(jh, "give to committing trans"); in journal_unmap_buffer()
2340 may_free = __dispose_buffer(jh, in journal_unmap_buffer()
2347 __jbd2_journal_remove_checkpoint(jh); in journal_unmap_buffer()
2352 JBUFFER_TRACE(jh, "on committing transaction"); in journal_unmap_buffer()
2360 spin_unlock(&jh->b_state_lock); in journal_unmap_buffer()
2362 jbd2_journal_put_journal_head(jh); in journal_unmap_buffer()
2374 jh->b_next_transaction = journal->j_running_transaction; in journal_unmap_buffer()
2375 jh->b_modified = 0; in journal_unmap_buffer()
2377 spin_unlock(&jh->b_state_lock); in journal_unmap_buffer()
2379 jbd2_journal_put_journal_head(jh); in journal_unmap_buffer()
2388 J_ASSERT_JH(jh, transaction == journal->j_running_transaction); in journal_unmap_buffer()
2389 JBUFFER_TRACE(jh, "on running transaction"); in journal_unmap_buffer()
2390 may_free = __dispose_buffer(jh, transaction); in journal_unmap_buffer()
2402 jh->b_modified = 0; in journal_unmap_buffer()
2404 spin_unlock(&jh->b_state_lock); in journal_unmap_buffer()
2406 jbd2_journal_put_journal_head(jh); in journal_unmap_buffer()
2486 void __jbd2_journal_file_buffer(struct journal_head *jh, in __jbd2_journal_file_buffer() argument
2491 struct buffer_head *bh = jh2bh(jh); in __jbd2_journal_file_buffer()
2493 lockdep_assert_held(&jh->b_state_lock); in __jbd2_journal_file_buffer()
2496 J_ASSERT_JH(jh, jh->b_jlist < BJ_Types); in __jbd2_journal_file_buffer()
2497 J_ASSERT_JH(jh, jh->b_transaction == transaction || in __jbd2_journal_file_buffer()
2498 jh->b_transaction == NULL); in __jbd2_journal_file_buffer()
2500 if (jh->b_transaction && jh->b_jlist == jlist) in __jbd2_journal_file_buffer()
2519 if (jh->b_transaction) in __jbd2_journal_file_buffer()
2520 __jbd2_journal_temp_unlink_buffer(jh); in __jbd2_journal_file_buffer()
2523 jh->b_transaction = transaction; in __jbd2_journal_file_buffer()
2527 J_ASSERT_JH(jh, !jh->b_committed_data); in __jbd2_journal_file_buffer()
2528 J_ASSERT_JH(jh, !jh->b_frozen_data); in __jbd2_journal_file_buffer()
2545 __blist_add_buffer(list, jh); in __jbd2_journal_file_buffer()
2546 jh->b_jlist = jlist; in __jbd2_journal_file_buffer()
2552 void jbd2_journal_file_buffer(struct journal_head *jh, in jbd2_journal_file_buffer() argument
2555 spin_lock(&jh->b_state_lock); in jbd2_journal_file_buffer()
2557 __jbd2_journal_file_buffer(jh, transaction, jlist); in jbd2_journal_file_buffer()
2559 spin_unlock(&jh->b_state_lock); in jbd2_journal_file_buffer()
2575 bool __jbd2_journal_refile_buffer(struct journal_head *jh) in __jbd2_journal_refile_buffer() argument
2578 struct buffer_head *bh = jh2bh(jh); in __jbd2_journal_refile_buffer()
2580 lockdep_assert_held(&jh->b_state_lock); in __jbd2_journal_refile_buffer()
2581 if (jh->b_transaction) in __jbd2_journal_refile_buffer()
2582 assert_spin_locked(&jh->b_transaction->t_journal->j_list_lock); in __jbd2_journal_refile_buffer()
2585 if (jh->b_next_transaction == NULL) { in __jbd2_journal_refile_buffer()
2586 __jbd2_journal_unfile_buffer(jh); in __jbd2_journal_refile_buffer()
2596 __jbd2_journal_temp_unlink_buffer(jh); in __jbd2_journal_refile_buffer()
2602 J_ASSERT_JH(jh, jh->b_transaction != NULL); in __jbd2_journal_refile_buffer()
2609 WRITE_ONCE(jh->b_transaction, jh->b_next_transaction); in __jbd2_journal_refile_buffer()
2610 WRITE_ONCE(jh->b_next_transaction, NULL); in __jbd2_journal_refile_buffer()
2613 else if (jh->b_modified) in __jbd2_journal_refile_buffer()
2617 __jbd2_journal_file_buffer(jh, jh->b_transaction, jlist); in __jbd2_journal_refile_buffer()
2618 J_ASSERT_JH(jh, jh->b_transaction->t_state == T_RUNNING); in __jbd2_journal_refile_buffer()
2631 void jbd2_journal_refile_buffer(journal_t *journal, struct journal_head *jh) in jbd2_journal_refile_buffer() argument
2635 spin_lock(&jh->b_state_lock); in jbd2_journal_refile_buffer()
2637 drop = __jbd2_journal_refile_buffer(jh); in jbd2_journal_refile_buffer()
2638 spin_unlock(&jh->b_state_lock); in jbd2_journal_refile_buffer()
2641 jbd2_journal_put_journal_head(jh); in jbd2_journal_refile_buffer()