Lines Matching refs:bh
765 static void warn_dirty_buffer(struct buffer_head *bh) in warn_dirty_buffer() argument
773 bdevname(bh->b_bdev, b), (unsigned long long)bh->b_blocknr); in warn_dirty_buffer()
782 struct buffer_head *bh = jh2bh(jh); in jbd2_freeze_jh_data() local
784 J_EXPECT_JH(jh, buffer_uptodate(bh), "Possible IO failure.\n"); in jbd2_freeze_jh_data()
785 page = bh->b_page; in jbd2_freeze_jh_data()
786 offset = offset_in_page(bh->b_data); in jbd2_freeze_jh_data()
790 memcpy(jh->b_frozen_data, source + offset, bh->b_size); in jbd2_freeze_jh_data()
814 struct buffer_head *bh; in do_get_write_access() local
829 bh = jh2bh(jh); in do_get_write_access()
834 lock_buffer(bh); in do_get_write_access()
835 jbd_lock_bh_state(bh); in do_get_write_access()
840 trace_jbd2_lock_buffer_stall(bh->b_bdev->bd_dev, in do_get_write_access()
856 if (buffer_dirty(bh)) { in do_get_write_access()
869 warn_dirty_buffer(bh); in do_get_write_access()
877 clear_buffer_dirty(bh); in do_get_write_access()
878 set_buffer_jbddirty(bh); in do_get_write_access()
881 unlock_buffer(bh); in do_get_write_access()
885 jbd_unlock_bh_state(bh); in do_get_write_access()
947 if (buffer_shadow(bh)) { in do_get_write_access()
949 jbd_unlock_bh_state(bh); in do_get_write_access()
950 wait_on_bit_io(&bh->b_state, BH_Shadow, TASK_UNINTERRUPTIBLE); in do_get_write_access()
970 jbd_unlock_bh_state(bh); in do_get_write_access()
995 jbd_unlock_bh_state(bh); in do_get_write_access()
1005 jbd2_free(frozen_buffer, bh->b_size); in do_get_write_access()
1012 static bool jbd2_write_access_granted(handle_t *handle, struct buffer_head *bh, in jbd2_write_access_granted() argument
1019 if (buffer_dirty(bh)) in jbd2_write_access_granted()
1034 if (!buffer_jbd(bh)) in jbd2_write_access_granted()
1037 jh = READ_ONCE(bh->b_private); in jbd2_write_access_granted()
1056 if (unlikely(jh->b_bh != bh)) in jbd2_write_access_granted()
1075 int jbd2_journal_get_write_access(handle_t *handle, struct buffer_head *bh) in jbd2_journal_get_write_access() argument
1080 if (jbd2_write_access_granted(handle, bh, false)) in jbd2_journal_get_write_access()
1083 jh = jbd2_journal_add_journal_head(bh); in jbd2_journal_get_write_access()
1112 int jbd2_journal_get_create_access(handle_t *handle, struct buffer_head *bh) in jbd2_journal_get_create_access() argument
1116 struct journal_head *jh = jbd2_journal_add_journal_head(bh); in jbd2_journal_get_create_access()
1134 jbd_lock_bh_state(bh); in jbd2_journal_get_create_access()
1168 jbd_unlock_bh_state(bh); in jbd2_journal_get_create_access()
1210 int jbd2_journal_get_undo_access(handle_t *handle, struct buffer_head *bh) in jbd2_journal_get_undo_access() argument
1217 if (jbd2_write_access_granted(handle, bh, true)) in jbd2_journal_get_undo_access()
1220 jh = jbd2_journal_add_journal_head(bh); in jbd2_journal_get_undo_access()
1241 jbd_lock_bh_state(bh); in jbd2_journal_get_undo_access()
1247 jbd_unlock_bh_state(bh); in jbd2_journal_get_undo_access()
1253 memcpy(jh->b_committed_data, bh->b_data, bh->b_size); in jbd2_journal_get_undo_access()
1255 jbd_unlock_bh_state(bh); in jbd2_journal_get_undo_access()
1259 jbd2_free(committed_data, bh->b_size); in jbd2_journal_get_undo_access()
1274 void jbd2_journal_set_triggers(struct buffer_head *bh, in jbd2_journal_set_triggers() argument
1277 struct journal_head *jh = jbd2_journal_grab_journal_head(bh); in jbd2_journal_set_triggers()
1288 struct buffer_head *bh = jh2bh(jh); in jbd2_buffer_frozen_trigger() local
1293 triggers->t_frozen(triggers, bh, mapped_data, bh->b_size); in jbd2_buffer_frozen_trigger()
1328 int jbd2_journal_dirty_metadata(handle_t *handle, struct buffer_head *bh) in jbd2_journal_dirty_metadata() argument
1337 if (!buffer_jbd(bh)) { in jbd2_journal_dirty_metadata()
1345 jh = bh2jh(bh); in jbd2_journal_dirty_metadata()
1354 jbd_lock_bh_state(bh); in jbd2_journal_dirty_metadata()
1357 jbd_unlock_bh_state(bh); in jbd2_journal_dirty_metadata()
1363 jbd_lock_bh_state(bh); in jbd2_journal_dirty_metadata()
1366 jbd_unlock_bh_state(bh); in jbd2_journal_dirty_metadata()
1375 jbd_lock_bh_state(bh); in jbd2_journal_dirty_metadata()
1406 (unsigned long long) bh->b_blocknr, in jbd2_journal_dirty_metadata()
1417 set_buffer_jbddirty(bh); in jbd2_journal_dirty_metadata()
1436 (unsigned long long) bh->b_blocknr, in jbd2_journal_dirty_metadata()
1461 jbd_unlock_bh_state(bh); in jbd2_journal_dirty_metadata()
1484 int jbd2_journal_forget (handle_t *handle, struct buffer_head *bh) in jbd2_journal_forget() argument
1497 BUFFER_TRACE(bh, "entry"); in jbd2_journal_forget()
1499 jbd_lock_bh_state(bh); in jbd2_journal_forget()
1501 if (!buffer_jbd(bh)) in jbd2_journal_forget()
1503 jh = bh2jh(bh); in jbd2_journal_forget()
1528 clear_buffer_dirty(bh); in jbd2_journal_forget()
1529 clear_buffer_jbddirty(bh); in jbd2_journal_forget()
1558 if (!buffer_jbd(bh)) { in jbd2_journal_forget()
1560 jbd_unlock_bh_state(bh); in jbd2_journal_forget()
1561 __bforget(bh); in jbd2_journal_forget()
1591 jbd_unlock_bh_state(bh); in jbd2_journal_forget()
1592 __brelse(bh); in jbd2_journal_forget()
1846 struct buffer_head *bh = jh2bh(jh); in __jbd2_journal_temp_unlink_buffer() local
1848 J_ASSERT_JH(jh, jbd_is_locked_bh_state(bh)); in __jbd2_journal_temp_unlink_buffer()
1878 if (test_clear_buffer_jbddirty(bh)) in __jbd2_journal_temp_unlink_buffer()
1879 mark_buffer_dirty(bh); /* Expose it to the VM */ in __jbd2_journal_temp_unlink_buffer()
1898 struct buffer_head *bh = jh2bh(jh); in jbd2_journal_unfile_buffer() local
1901 get_bh(bh); in jbd2_journal_unfile_buffer()
1902 jbd_lock_bh_state(bh); in jbd2_journal_unfile_buffer()
1906 jbd_unlock_bh_state(bh); in jbd2_journal_unfile_buffer()
1907 __brelse(bh); in jbd2_journal_unfile_buffer()
1916 __journal_try_to_free_buffer(journal_t *journal, struct buffer_head *bh) in __journal_try_to_free_buffer() argument
1920 jh = bh2jh(bh); in __journal_try_to_free_buffer()
1922 if (buffer_locked(bh) || buffer_dirty(bh)) in __journal_try_to_free_buffer()
1981 struct buffer_head *bh; in jbd2_journal_try_to_free_buffers() local
1987 bh = head; in jbd2_journal_try_to_free_buffers()
1996 jh = jbd2_journal_grab_journal_head(bh); in jbd2_journal_try_to_free_buffers()
2000 jbd_lock_bh_state(bh); in jbd2_journal_try_to_free_buffers()
2001 __journal_try_to_free_buffer(journal, bh); in jbd2_journal_try_to_free_buffers()
2003 jbd_unlock_bh_state(bh); in jbd2_journal_try_to_free_buffers()
2004 if (buffer_jbd(bh)) in jbd2_journal_try_to_free_buffers()
2006 } while ((bh = bh->b_this_page) != head); in jbd2_journal_try_to_free_buffers()
2029 struct buffer_head *bh = jh2bh(jh); in __dispose_buffer() local
2039 clear_buffer_dirty(bh); in __dispose_buffer()
2096 static int journal_unmap_buffer(journal_t *journal, struct buffer_head *bh, in journal_unmap_buffer() argument
2103 BUFFER_TRACE(bh, "entry"); in journal_unmap_buffer()
2111 if (!buffer_jbd(bh)) in journal_unmap_buffer()
2116 jbd_lock_bh_state(bh); in journal_unmap_buffer()
2119 jh = jbd2_journal_grab_journal_head(bh); in journal_unmap_buffer()
2157 if (!buffer_dirty(bh)) { in journal_unmap_buffer()
2188 clear_buffer_jbddirty(bh); in journal_unmap_buffer()
2203 jbd_unlock_bh_state(bh); in journal_unmap_buffer()
2213 set_buffer_freed(bh); in journal_unmap_buffer()
2214 if (journal->j_running_transaction && buffer_jbddirty(bh)) in journal_unmap_buffer()
2218 jbd_unlock_bh_state(bh); in journal_unmap_buffer()
2246 jbd_unlock_bh_state(bh); in journal_unmap_buffer()
2249 clear_buffer_dirty(bh); in journal_unmap_buffer()
2250 J_ASSERT_BH(bh, !buffer_jbddirty(bh)); in journal_unmap_buffer()
2251 clear_buffer_mapped(bh); in journal_unmap_buffer()
2252 clear_buffer_req(bh); in journal_unmap_buffer()
2253 clear_buffer_new(bh); in journal_unmap_buffer()
2254 clear_buffer_delay(bh); in journal_unmap_buffer()
2255 clear_buffer_unwritten(bh); in journal_unmap_buffer()
2256 bh->b_bdev = NULL; in journal_unmap_buffer()
2277 struct buffer_head *head, *bh, *next; in jbd2_journal_invalidatepage() local
2295 head = bh = page_buffers(page); in jbd2_journal_invalidatepage()
2297 unsigned int next_off = curr_off + bh->b_size; in jbd2_journal_invalidatepage()
2298 next = bh->b_this_page; in jbd2_journal_invalidatepage()
2305 lock_buffer(bh); in jbd2_journal_invalidatepage()
2306 ret = journal_unmap_buffer(journal, bh, partial_page); in jbd2_journal_invalidatepage()
2307 unlock_buffer(bh); in jbd2_journal_invalidatepage()
2313 bh = next; in jbd2_journal_invalidatepage()
2315 } while (bh != head); in jbd2_journal_invalidatepage()
2332 struct buffer_head *bh = jh2bh(jh); in __jbd2_journal_file_buffer() local
2334 J_ASSERT_JH(jh, jbd_is_locked_bh_state(bh)); in __jbd2_journal_file_buffer()
2353 if (buffer_dirty(bh)) in __jbd2_journal_file_buffer()
2354 warn_dirty_buffer(bh); in __jbd2_journal_file_buffer()
2355 if (test_clear_buffer_dirty(bh) || in __jbd2_journal_file_buffer()
2356 test_clear_buffer_jbddirty(bh)) in __jbd2_journal_file_buffer()
2363 jbd2_journal_grab_journal_head(bh); in __jbd2_journal_file_buffer()
2390 set_buffer_jbddirty(bh); in __jbd2_journal_file_buffer()
2417 struct buffer_head *bh = jh2bh(jh); in __jbd2_journal_refile_buffer() local
2419 J_ASSERT_JH(jh, jbd_is_locked_bh_state(bh)); in __jbd2_journal_refile_buffer()
2434 was_dirty = test_clear_buffer_jbddirty(bh); in __jbd2_journal_refile_buffer()
2443 if (buffer_freed(bh)) in __jbd2_journal_refile_buffer()
2453 set_buffer_jbddirty(bh); in __jbd2_journal_refile_buffer()
2464 struct buffer_head *bh = jh2bh(jh); in jbd2_journal_refile_buffer() local
2467 get_bh(bh); in jbd2_journal_refile_buffer()
2468 jbd_lock_bh_state(bh); in jbd2_journal_refile_buffer()
2471 jbd_unlock_bh_state(bh); in jbd2_journal_refile_buffer()
2473 __brelse(bh); in jbd2_journal_refile_buffer()