• Home
  • Raw
  • Download

Lines Matching refs:bio

202 static void gfs2_end_log_write(struct bio *bio)  in gfs2_end_log_write()  argument
204 struct gfs2_sbd *sdp = bio->bi_private; in gfs2_end_log_write()
209 if (bio->bi_status) { in gfs2_end_log_write()
210 if (!cmpxchg(&sdp->sd_log_error, 0, (int)bio->bi_status)) in gfs2_end_log_write()
212 bio->bi_status, sdp->sd_jdesc->jd_jid); in gfs2_end_log_write()
219 bio_for_each_segment_all(bvec, bio, iter_all) { in gfs2_end_log_write()
222 gfs2_end_log_write_bh(sdp, bvec, bio->bi_status); in gfs2_end_log_write()
227 bio_put(bio); in gfs2_end_log_write()
241 void gfs2_log_submit_bio(struct bio **biop, blk_opf_t opf) in gfs2_log_submit_bio()
243 struct bio *bio = *biop; in gfs2_log_submit_bio() local
244 if (bio) { in gfs2_log_submit_bio()
245 struct gfs2_sbd *sdp = bio->bi_private; in gfs2_log_submit_bio()
247 bio->bi_opf = opf; in gfs2_log_submit_bio()
248 submit_bio(bio); in gfs2_log_submit_bio()
264 static struct bio *gfs2_log_alloc_bio(struct gfs2_sbd *sdp, u64 blkno, in gfs2_log_alloc_bio()
268 struct bio *bio = bio_alloc(sb->s_bdev, BIO_MAX_VECS, 0, GFP_NOIO); in gfs2_log_alloc_bio() local
270 bio->bi_iter.bi_sector = blkno << sdp->sd_fsb2bb_shift; in gfs2_log_alloc_bio()
271 bio->bi_end_io = end_io; in gfs2_log_alloc_bio()
272 bio->bi_private = sdp; in gfs2_log_alloc_bio()
274 return bio; in gfs2_log_alloc_bio()
294 static struct bio *gfs2_log_get_bio(struct gfs2_sbd *sdp, u64 blkno, in gfs2_log_get_bio()
295 struct bio **biop, enum req_op op, in gfs2_log_get_bio()
298 struct bio *bio = *biop; in gfs2_log_get_bio() local
300 if (bio) { in gfs2_log_get_bio()
303 nblk = bio_end_sector(bio); in gfs2_log_get_bio()
306 return bio; in gfs2_log_get_bio()
332 struct bio *bio; in gfs2_log_write() local
335 bio = gfs2_log_get_bio(sdp, blkno, &jd->jd_log_bio, REQ_OP_WRITE, in gfs2_log_write()
337 ret = bio_add_page(bio, page, size, offset); in gfs2_log_write()
339 bio = gfs2_log_get_bio(sdp, blkno, &jd->jd_log_bio, in gfs2_log_write()
341 ret = bio_add_page(bio, page, size, offset); in gfs2_log_write()
395 static void gfs2_end_log_read(struct bio *bio) in gfs2_end_log_read() argument
401 bio_for_each_segment_all(bvec, bio, iter_all) { in gfs2_end_log_read()
403 if (bio->bi_status) { in gfs2_end_log_read()
404 int err = blk_status_to_errno(bio->bi_status); in gfs2_end_log_read()
412 bio_put(bio); in gfs2_end_log_read()
487 static struct bio *gfs2_chain_bio(struct bio *prev, unsigned int nr_iovecs) in gfs2_chain_bio()
489 struct bio *new; in gfs2_chain_bio()
522 struct bio *bio = NULL; in gfs2_find_jhead() local
547 if (bio && (off || block < blocks_submitted + max_blocks)) { in gfs2_find_jhead()
550 if (bio_end_sector(bio) == sector) { in gfs2_find_jhead()
551 sz = bio_add_page(bio, page, bsize, off); in gfs2_find_jhead()
559 bio = gfs2_chain_bio(bio, blocks); in gfs2_find_jhead()
564 if (bio) { in gfs2_find_jhead()
566 submit_bio(bio); in gfs2_find_jhead()
569 bio = gfs2_log_alloc_bio(sdp, dblock, gfs2_end_log_read); in gfs2_find_jhead()
570 bio->bi_opf = REQ_OP_READ; in gfs2_find_jhead()
572 sz = bio_add_page(bio, page, bsize, off); in gfs2_find_jhead()
591 if (bio) in gfs2_find_jhead()
592 submit_bio(bio); in gfs2_find_jhead()