Lines Matching refs:bio

200 static void gfs2_end_log_write(struct bio *bio)  in gfs2_end_log_write()  argument
202 struct gfs2_sbd *sdp = bio->bi_private; in gfs2_end_log_write()
206 if (bio->bi_status) { in gfs2_end_log_write()
207 int err = blk_status_to_errno(bio->bi_status); in gfs2_end_log_write()
218 bio_for_each_segment_all(bvec, bio, iter_all) { in gfs2_end_log_write()
224 bvec->bv_len, bio->bi_status); in gfs2_end_log_write()
229 bio_put(bio); in gfs2_end_log_write()
243 void gfs2_log_submit_bio(struct bio **biop, blk_opf_t opf) in gfs2_log_submit_bio()
245 struct bio *bio = *biop; in gfs2_log_submit_bio() local
246 if (bio) { in gfs2_log_submit_bio()
247 struct gfs2_sbd *sdp = bio->bi_private; in gfs2_log_submit_bio()
249 bio->bi_opf = opf; in gfs2_log_submit_bio()
250 submit_bio(bio); in gfs2_log_submit_bio()
266 static struct bio *gfs2_log_alloc_bio(struct gfs2_sbd *sdp, u64 blkno, in gfs2_log_alloc_bio()
270 struct bio *bio = bio_alloc(sb->s_bdev, BIO_MAX_VECS, 0, GFP_NOIO); in gfs2_log_alloc_bio() local
272 bio->bi_iter.bi_sector = blkno << sdp->sd_fsb2bb_shift; in gfs2_log_alloc_bio()
273 bio->bi_end_io = end_io; in gfs2_log_alloc_bio()
274 bio->bi_private = sdp; in gfs2_log_alloc_bio()
276 return bio; in gfs2_log_alloc_bio()
296 static struct bio *gfs2_log_get_bio(struct gfs2_sbd *sdp, u64 blkno, in gfs2_log_get_bio()
297 struct bio **biop, enum req_op op, in gfs2_log_get_bio()
300 struct bio *bio = *biop; in gfs2_log_get_bio() local
302 if (bio) { in gfs2_log_get_bio()
305 nblk = bio_end_sector(bio); in gfs2_log_get_bio()
308 return bio; in gfs2_log_get_bio()
334 struct bio *bio; in gfs2_log_write() local
337 bio = gfs2_log_get_bio(sdp, blkno, &jd->jd_log_bio, REQ_OP_WRITE, in gfs2_log_write()
339 ret = bio_add_page(bio, page, size, offset); in gfs2_log_write()
341 bio = gfs2_log_get_bio(sdp, blkno, &jd->jd_log_bio, in gfs2_log_write()
343 ret = bio_add_page(bio, page, size, offset); in gfs2_log_write()
396 static void gfs2_end_log_read(struct bio *bio) in gfs2_end_log_read() argument
398 int error = blk_status_to_errno(bio->bi_status); in gfs2_end_log_read()
401 bio_for_each_folio_all(fi, bio) { in gfs2_end_log_read()
407 bio_put(bio); in gfs2_end_log_read()
483 static struct bio *gfs2_chain_bio(struct bio *prev, unsigned int nr_iovecs) in gfs2_chain_bio()
485 struct bio *new; in gfs2_chain_bio()
516 struct bio *bio = NULL; in gfs2_find_jhead() local
541 if (bio && (off || block < blocks_submitted + max_blocks)) { in gfs2_find_jhead()
544 if (bio_end_sector(bio) == sector) { in gfs2_find_jhead()
545 if (bio_add_folio(bio, folio, bsize, off)) in gfs2_find_jhead()
552 bio = gfs2_chain_bio(bio, blocks); in gfs2_find_jhead()
557 if (bio) { in gfs2_find_jhead()
559 submit_bio(bio); in gfs2_find_jhead()
562 bio = gfs2_log_alloc_bio(sdp, dblock, gfs2_end_log_read); in gfs2_find_jhead()
563 bio->bi_opf = REQ_OP_READ; in gfs2_find_jhead()
565 if (!bio_add_folio(bio, folio, bsize, off)) in gfs2_find_jhead()
584 if (bio) in gfs2_find_jhead()
585 submit_bio(bio); in gfs2_find_jhead()