Lines Matching refs:bh

35 	struct buffer_head *bh, *head;
43 bh = head;
46 if (!buffer_mapped(bh))
56 lock_buffer(bh);
57 } else if (!trylock_buffer(bh)) {
61 if (test_clear_buffer_dirty(bh)) {
62 mark_buffer_async_write(bh);
64 unlock_buffer(bh);
66 } while ((bh = bh->b_this_page) != head);
70 * drop the bh refcounts early.
76 struct buffer_head *next = bh->b_this_page;
77 if (buffer_async_write(bh)) {
78 submit_bh(REQ_OP_WRITE | write_flags, bh);
81 bh = next;
82 } while (bh != head);
119 struct buffer_head *bh;
146 bh = NULL;
152 for (bh = page_buffers(page); bufnum--; bh = bh->b_this_page)
154 get_bh(bh);
156 if (!buffer_mapped(bh))
157 map_bh(bh, sdp->sd_vfs, blkno);
163 return bh;
166 static void meta_prep_new(struct buffer_head *bh)
168 struct gfs2_meta_header *mh = (struct gfs2_meta_header *)bh->b_data;
170 lock_buffer(bh);
171 clear_buffer_dirty(bh);
172 set_buffer_uptodate(bh);
173 unlock_buffer(bh);
188 struct buffer_head *bh;
189 bh = gfs2_getbuf(gl, blkno, CREATE);
190 meta_prep_new(bh);
191 return bh;
201 struct buffer_head *bh = page_buffers(page);
204 while (bh_offset(bh) < bvec->bv_offset)
205 bh = bh->b_this_page;
207 struct buffer_head *next = bh->b_this_page;
208 len -= bh->b_size;
209 bh->b_end_io(bh, !bio->bi_status);
210 bh = next;
211 } while (bh && len);
223 struct buffer_head *bh = *bhs;
226 bio = bio_alloc(bh->b_bdev, num, opf, GFP_NOIO);
227 bio->bi_iter.bi_sector = bh->b_blocknr * (bh->b_size >> 9);
229 bh = *bhs;
230 if (!bio_add_page(bio, bh->b_page, bh->b_size, bh_offset(bh))) {
257 struct buffer_head *bh, *bhs[2];
265 *bhp = bh = gfs2_getbuf(gl, blkno, CREATE);
267 lock_buffer(bh);
268 if (buffer_uptodate(bh)) {
269 unlock_buffer(bh);
272 bh->b_end_io = end_buffer_read_sync;
273 get_bh(bh);
274 bhs[num++] = bh;
278 bh = gfs2_getbuf(gl, blkno + 1, CREATE);
280 lock_buffer(bh);
281 if (buffer_uptodate(bh)) {
282 unlock_buffer(bh);
283 brelse(bh);
285 bh->b_end_io = end_buffer_read_sync;
286 bhs[num++] = bh;
294 bh = *bhp;
295 wait_on_buffer(bh);
296 if (unlikely(!buffer_uptodate(bh))) {
299 gfs2_io_error_bh_wd(sdp, bh);
300 brelse(bh);
311 * @bh: The block to wait for
316 int gfs2_meta_wait(struct gfs2_sbd *sdp, struct buffer_head *bh)
321 wait_on_buffer(bh);
323 if (!buffer_uptodate(bh)) {
326 gfs2_io_error_bh_wd(sdp, bh);
335 void gfs2_remove_from_journal(struct buffer_head *bh, int meta)
337 struct address_space *mapping = bh->b_folio->mapping;
339 struct gfs2_bufdata *bd = bh->b_private;
343 if (test_clear_buffer_pinned(bh)) {
353 brelse(bh);
359 bh->b_private = NULL;
366 clear_buffer_dirty(bh);
367 clear_buffer_uptodate(bh);
385 struct buffer_head *bh;
393 bh = bd->bd_bh;
394 if (bh->b_blocknr < bstart || bh->b_blocknr >= end)
397 gfs2_remove_from_journal(bh, REMOVE_JDATA);
409 struct buffer_head *bh;
423 for (bh = page_buffers(page); bufnum--; bh = bh->b_this_page)
425 get_bh(bh);
428 return bh;
442 struct buffer_head *bh;
454 bh = gfs2_getbuf(ip->i_gl, bstart, NO_CREATE);
455 if (!bh && gfs2_is_jdata(ip)) {
456 bh = gfs2_getjdatabuf(ip, bstart);
459 if (bh) {
460 lock_buffer(bh);
463 gfs2_remove_from_journal(bh, ty);
466 unlock_buffer(bh);
467 brelse(bh);
490 struct buffer_head *bh;
497 ret = gfs2_meta_read(gl, num, DIO_WAIT, rahead, &bh);
498 if (ret == 0 && gfs2_metatype_check(sdp, bh, mtype)) {
499 brelse(bh);
502 *bhp = bh;
519 struct buffer_head *first_bh, *bh;
540 bh = gfs2_getbuf(gl, dblock, CREATE);
542 bh_readahead(bh, REQ_RAHEAD | REQ_META | REQ_PRIO);
543 brelse(bh);