Lines Matching refs:bh
35 static void journal_end_buffer_io_sync(struct buffer_head *bh, int uptodate) in journal_end_buffer_io_sync() argument
37 struct buffer_head *orig_bh = bh->b_private; in journal_end_buffer_io_sync()
39 BUFFER_TRACE(bh, ""); in journal_end_buffer_io_sync()
41 set_buffer_uptodate(bh); in journal_end_buffer_io_sync()
43 clear_buffer_uptodate(bh); in journal_end_buffer_io_sync()
49 unlock_buffer(bh); in journal_end_buffer_io_sync()
66 static void release_buffer_page(struct buffer_head *bh) in release_buffer_page() argument
70 if (buffer_dirty(bh)) in release_buffer_page()
72 if (atomic_read(&bh->b_count) != 1) in release_buffer_page()
74 page = bh->b_page; in release_buffer_page()
85 __brelse(bh); in release_buffer_page()
92 __brelse(bh); in release_buffer_page()
95 static void jbd2_commit_block_csum_set(journal_t *j, struct buffer_head *bh) in jbd2_commit_block_csum_set() argument
103 h = (struct commit_header *)(bh->b_data); in jbd2_commit_block_csum_set()
107 csum = jbd2_chksum(j, j->j_csum_seed, bh->b_data, j->j_blocksize); in jbd2_commit_block_csum_set()
125 struct buffer_head *bh; in journal_submit_commit_record() local
134 bh = jbd2_journal_get_descriptor_buffer(journal); in journal_submit_commit_record()
135 if (!bh) in journal_submit_commit_record()
138 tmp = (struct commit_header *)bh->b_data; in journal_submit_commit_record()
150 jbd2_commit_block_csum_set(journal, bh); in journal_submit_commit_record()
152 BUFFER_TRACE(bh, "submit commit block"); in journal_submit_commit_record()
153 lock_buffer(bh); in journal_submit_commit_record()
154 clear_buffer_dirty(bh); in journal_submit_commit_record()
155 set_buffer_uptodate(bh); in journal_submit_commit_record()
156 bh->b_end_io = journal_end_buffer_io_sync; in journal_submit_commit_record()
160 ret = submit_bh(WRITE_SYNC | WRITE_FLUSH_FUA, bh); in journal_submit_commit_record()
162 ret = submit_bh(WRITE_SYNC, bh); in journal_submit_commit_record()
164 *cbh = bh; in journal_submit_commit_record()
173 struct buffer_head *bh) in journal_wait_on_commit_record() argument
177 clear_buffer_dirty(bh); in journal_wait_on_commit_record()
178 wait_on_buffer(bh); in journal_wait_on_commit_record()
180 if (unlikely(!buffer_uptodate(bh))) in journal_wait_on_commit_record()
182 put_bh(bh); /* One for getblk() */ in journal_wait_on_commit_record()
300 static __u32 jbd2_checksum_data(__u32 crc32_sum, struct buffer_head *bh) in jbd2_checksum_data() argument
302 struct page *page = bh->b_page; in jbd2_checksum_data()
308 (void *)(addr + offset_in_page(bh->b_data)), bh->b_size); in jbd2_checksum_data()
323 struct buffer_head *bh) in jbd2_descr_block_csum_set() argument
331 tail = (struct jbd2_journal_block_tail *)(bh->b_data + j->j_blocksize - in jbd2_descr_block_csum_set()
334 csum = jbd2_chksum(j, j->j_csum_seed, bh->b_data, j->j_blocksize); in jbd2_descr_block_csum_set()
339 struct buffer_head *bh, __u32 sequence) in jbd2_block_tag_csum_set() argument
342 struct page *page = bh->b_page; in jbd2_block_tag_csum_set()
353 csum32 = jbd2_chksum(j, csum32, addr + offset_in_page(bh->b_data), in jbd2_block_tag_csum_set()
354 bh->b_size); in jbd2_block_tag_csum_set()
495 struct buffer_head *bh = jh2bh(jh); in jbd2_journal_commit_transaction() local
497 jbd_lock_bh_state(bh); in jbd2_journal_commit_transaction()
498 jbd2_free(jh->b_committed_data, bh->b_size); in jbd2_journal_commit_transaction()
500 jbd_unlock_bh_state(bh); in jbd2_journal_commit_transaction()
727 struct buffer_head *bh = wbuf[i]; in jbd2_journal_commit_transaction() local
733 jbd2_checksum_data(crc32_sum, bh); in jbd2_journal_commit_transaction()
736 lock_buffer(bh); in jbd2_journal_commit_transaction()
737 clear_buffer_dirty(bh); in jbd2_journal_commit_transaction()
738 set_buffer_uptodate(bh); in jbd2_journal_commit_transaction()
739 bh->b_end_io = journal_end_buffer_io_sync; in jbd2_journal_commit_transaction()
740 submit_bh(WRITE_SYNC, bh); in jbd2_journal_commit_transaction()
819 struct buffer_head *bh = list_entry(io_bufs.prev, in jbd2_journal_commit_transaction() local
823 wait_on_buffer(bh); in jbd2_journal_commit_transaction()
826 if (unlikely(!buffer_uptodate(bh))) in jbd2_journal_commit_transaction()
828 jbd2_unfile_log_bh(bh); in jbd2_journal_commit_transaction()
835 BUFFER_TRACE(bh, "dumping temporary bh"); in jbd2_journal_commit_transaction()
836 __brelse(bh); in jbd2_journal_commit_transaction()
837 J_ASSERT_BH(bh, atomic_read(&bh->b_count) == 0); in jbd2_journal_commit_transaction()
838 free_buffer_head(bh); in jbd2_journal_commit_transaction()
842 bh = jh2bh(jh); in jbd2_journal_commit_transaction()
843 clear_buffer_jwrite(bh); in jbd2_journal_commit_transaction()
844 J_ASSERT_BH(bh, buffer_jbddirty(bh)); in jbd2_journal_commit_transaction()
845 J_ASSERT_BH(bh, !buffer_shadow(bh)); in jbd2_journal_commit_transaction()
854 __brelse(bh); in jbd2_journal_commit_transaction()
863 struct buffer_head *bh; in jbd2_journal_commit_transaction() local
865 bh = list_entry(log_bufs.prev, struct buffer_head, b_assoc_buffers); in jbd2_journal_commit_transaction()
866 wait_on_buffer(bh); in jbd2_journal_commit_transaction()
869 if (unlikely(!buffer_uptodate(bh))) in jbd2_journal_commit_transaction()
872 BUFFER_TRACE(bh, "ph5: control buffer writeout done: unfile"); in jbd2_journal_commit_transaction()
873 clear_buffer_jwrite(bh); in jbd2_journal_commit_transaction()
874 jbd2_unfile_log_bh(bh); in jbd2_journal_commit_transaction()
876 __brelse(bh); /* One for getblk */ in jbd2_journal_commit_transaction()
934 struct buffer_head *bh; in jbd2_journal_commit_transaction() local
939 bh = jh2bh(jh); in jbd2_journal_commit_transaction()
944 get_bh(bh); in jbd2_journal_commit_transaction()
945 jbd_lock_bh_state(bh); in jbd2_journal_commit_transaction()
962 jbd2_free(jh->b_committed_data, bh->b_size); in jbd2_journal_commit_transaction()
970 jbd2_free(jh->b_frozen_data, bh->b_size); in jbd2_journal_commit_transaction()
998 if (buffer_freed(bh) && !jh->b_next_transaction) { in jbd2_journal_commit_transaction()
1001 clear_buffer_freed(bh); in jbd2_journal_commit_transaction()
1002 clear_buffer_jbddirty(bh); in jbd2_journal_commit_transaction()
1016 mapping = READ_ONCE(bh->b_page->mapping); in jbd2_journal_commit_transaction()
1018 clear_buffer_mapped(bh); in jbd2_journal_commit_transaction()
1019 clear_buffer_new(bh); in jbd2_journal_commit_transaction()
1020 clear_buffer_req(bh); in jbd2_journal_commit_transaction()
1021 bh->b_bdev = NULL; in jbd2_journal_commit_transaction()
1025 if (buffer_jbddirty(bh)) { in jbd2_journal_commit_transaction()
1029 clear_buffer_jbddirty(bh); in jbd2_journal_commit_transaction()
1031 J_ASSERT_BH(bh, !buffer_dirty(bh)); in jbd2_journal_commit_transaction()
1046 jbd_unlock_bh_state(bh); in jbd2_journal_commit_transaction()
1048 release_buffer_page(bh); /* Drops bh reference */ in jbd2_journal_commit_transaction()
1050 __brelse(bh); in jbd2_journal_commit_transaction()