Lines Matching defs:bh
907 static void warn_dirty_buffer(struct buffer_head *bh)
913 bh->b_bdev, (unsigned long long)bh->b_blocknr);
920 struct buffer_head *bh = jh2bh(jh);
922 J_EXPECT_JH(jh, buffer_uptodate(bh), "Possible IO failure.\n");
923 source = kmap_local_folio(bh->b_folio, bh_offset(bh));
926 memcpy(jh->b_frozen_data, source, bh->b_size);
950 struct buffer_head *bh;
963 bh = jh2bh(jh);
968 lock_buffer(bh);
974 trace_jbd2_lock_buffer_stall(bh->b_bdev->bd_dev,
990 if (buffer_dirty(bh) && jh->b_transaction) {
991 warn_dirty_buffer(bh);
997 clear_buffer_dirty(bh);
1005 set_buffer_jbddirty(bh);
1011 unlock_buffer(bh);
1022 unlock_buffer(bh);
1048 if (test_clear_buffer_dirty(bh)) {
1052 * prevent bh being removed from checkpoint list if
1057 set_buffer_jbddirty(bh);
1061 unlock_buffer(bh);
1064 unlock_buffer(bh);
1089 if (buffer_shadow(bh)) {
1092 wait_on_bit_io(&bh->b_state, BH_Shadow, TASK_UNINTERRUPTIBLE);
1141 jbd2_free(frozen_buffer, bh->b_size);
1148 static bool jbd2_write_access_granted(handle_t *handle, struct buffer_head *bh,
1155 if (buffer_dirty(bh))
1164 * will be attached to the same bh while we run. However it can
1166 * just after we get pointer to it from bh. So we have to be careful
1167 * and recheck jh still belongs to our bh before we return success.
1170 if (!buffer_jbd(bh))
1173 jh = READ_ONCE(bh->b_private);
1187 * 2) So that access to bh done after jbd2_write_access_granted()
1192 if (unlikely(jh->b_bh != bh))
1204 * @bh: bh to be used for metadata writes
1212 int jbd2_journal_get_write_access(handle_t *handle, struct buffer_head *bh)
1234 if (jbd2_write_access_granted(handle, bh, false))
1237 jh = jbd2_journal_add_journal_head(bh);
1253 * the bh is not already part of an existing transaction.
1260 * jbd2_journal_get_create_access () - notify intent to use newly created bh
1262 * @bh: new buffer.
1264 * Call this if you create a new bh.
1266 int jbd2_journal_get_create_access(handle_t *handle, struct buffer_head *bh)
1270 struct journal_head *jh = jbd2_journal_add_journal_head(bh);
1343 * @bh: buffer to undo
1365 int jbd2_journal_get_undo_access(handle_t *handle, struct buffer_head *bh)
1374 if (jbd2_write_access_granted(handle, bh, true))
1377 jh = jbd2_journal_add_journal_head(bh);
1406 memcpy(jh->b_committed_data, bh->b_data, bh->b_size);
1412 jbd2_free(committed_data, bh->b_size);
1418 * @bh: buffer to trigger on
1427 void jbd2_journal_set_triggers(struct buffer_head *bh,
1430 struct journal_head *jh = jbd2_journal_grab_journal_head(bh);
1441 struct buffer_head *bh = jh2bh(jh);
1446 triggers->t_frozen(triggers, bh, mapped_data, bh->b_size);
1461 * @bh: buffer to mark
1481 int jbd2_journal_dirty_metadata(handle_t *handle, struct buffer_head *bh)
1488 if (!buffer_jbd(bh))
1495 jh = bh2jh(bh);
1522 (unsigned long long) bh->b_blocknr,
1576 (unsigned long long) bh->b_blocknr,
1587 set_buffer_jbddirty(bh);
1606 (unsigned long long) bh->b_blocknr,
1640 * @bh: bh to 'forget'
1646 * bh may not be a journalled buffer at all - it may be a non-JBD
1649 * Decrements bh->b_count by one.
1654 int jbd2_journal_forget(handle_t *handle, struct buffer_head *bh)
1667 BUFFER_TRACE(bh, "entry");
1669 jh = jbd2_journal_grab_journal_head(bh);
1671 __bforget(bh);
1700 clear_buffer_dirty(bh);
1701 clear_buffer_jbddirty(bh);
1746 set_buffer_freed(bh);
1790 clear_buffer_dirty(bh);
1795 __brelse(bh);
2015 * bh->b_transaction->t_buffers, t_forget, t_shadow_list, t_log_list or
2026 struct buffer_head *bh = jh2bh(jh);
2059 clear_buffer_jbddirty(bh);
2060 else if (test_clear_buffer_jbddirty(bh))
2061 mark_buffer_dirty(bh); /* Expose it to the VM */
2116 struct buffer_head *bh;
2122 bh = head;
2131 jh = jbd2_journal_grab_journal_head(bh);
2145 if (buffer_jbd(bh))
2147 } while ((bh = bh->b_this_page) != head);
2169 struct buffer_head *bh = jh2bh(jh);
2179 clear_buffer_dirty(bh);
2237 static int journal_unmap_buffer(journal_t *journal, struct buffer_head *bh,
2244 BUFFER_TRACE(bh, "entry");
2252 jh = jbd2_journal_grab_journal_head(bh);
2295 if (!buffer_dirty(bh)) {
2326 clear_buffer_jbddirty(bh);
2344 if (!bh->b_bdev)
2355 set_buffer_freed(bh);
2356 if (journal->j_running_transaction && buffer_jbddirty(bh))
2391 clear_buffer_dirty(bh);
2392 J_ASSERT_BH(bh, !buffer_jbddirty(bh));
2393 clear_buffer_mapped(bh);
2394 clear_buffer_req(bh);
2395 clear_buffer_new(bh);
2396 clear_buffer_delay(bh);
2397 clear_buffer_unwritten(bh);
2398 bh->b_bdev = NULL;
2417 struct buffer_head *head, *bh, *next;
2436 bh = head;
2438 unsigned int next_off = curr_off + bh->b_size;
2439 next = bh->b_this_page;
2446 lock_buffer(bh);
2447 ret = journal_unmap_buffer(journal, bh, partial_page);
2448 unlock_buffer(bh);
2454 bh = next;
2456 } while (bh != head);
2473 struct buffer_head *bh = jh2bh(jh);
2494 if (buffer_dirty(bh))
2495 warn_dirty_buffer(bh);
2496 if (test_clear_buffer_dirty(bh) ||
2497 test_clear_buffer_jbddirty(bh))
2504 jbd2_journal_grab_journal_head(bh);
2531 set_buffer_jbddirty(bh);
2560 struct buffer_head *bh = jh2bh(jh);
2577 was_dirty = test_clear_buffer_jbddirty(bh);
2593 if (buffer_freed(bh))
2603 set_buffer_jbddirty(bh);
2609 * bh reference so that we can safely unlock bh.
2611 * The jh and bh may be freed by this call.