Lines Matching refs:bio
168 static void log_end_io(struct bio *bio) in log_end_io() argument
170 struct log_writes_c *lc = bio->bi_private; in log_end_io()
172 if (bio->bi_status) { in log_end_io()
175 DMERR("Error writing log block, error=%d", bio->bi_status); in log_end_io()
181 bio_free_pages(bio); in log_end_io()
183 bio_put(bio); in log_end_io()
186 static void log_end_super(struct bio *bio) in log_end_super() argument
188 struct log_writes_c *lc = bio->bi_private; in log_end_super()
191 log_end_io(bio); in log_end_super()
216 struct bio *bio; in write_metadata() local
221 bio = bio_alloc(lc->logdev->bdev, 1, REQ_OP_WRITE, GFP_KERNEL); in write_metadata()
222 bio->bi_iter.bi_size = 0; in write_metadata()
223 bio->bi_iter.bi_sector = sector; in write_metadata()
224 bio->bi_end_io = (sector == WRITE_LOG_SUPER_SECTOR) ? in write_metadata()
226 bio->bi_private = lc; in write_metadata()
231 bio_put(bio); in write_metadata()
243 ret = bio_add_page(bio, page, lc->sectorsize, 0); in write_metadata()
248 submit_bio(bio); in write_metadata()
251 bio_put(bio); in write_metadata()
264 struct bio *bio; in write_inline_data() local
273 bio = bio_alloc(lc->logdev->bdev, bio_pages, REQ_OP_WRITE, in write_inline_data()
275 bio->bi_iter.bi_size = 0; in write_inline_data()
276 bio->bi_iter.bi_sector = sector; in write_inline_data()
277 bio->bi_end_io = log_end_io; in write_inline_data()
278 bio->bi_private = lc; in write_inline_data()
296 ret = bio_add_page(bio, page, pg_sectorlen, 0); in write_inline_data()
306 submit_bio(bio); in write_inline_data()
312 bio_free_pages(bio); in write_inline_data()
313 bio_put(bio); in write_inline_data()
321 struct bio *bio; in log_one_block() local
354 bio = bio_alloc(lc->logdev->bdev, bio_max_segs(block->vec_cnt), in log_one_block()
356 bio->bi_iter.bi_size = 0; in log_one_block()
357 bio->bi_iter.bi_sector = sector; in log_one_block()
358 bio->bi_end_io = log_end_io; in log_one_block()
359 bio->bi_private = lc; in log_one_block()
366 ret = bio_add_page(bio, block->vecs[i].bv_page, in log_one_block()
370 submit_bio(bio); in log_one_block()
371 bio = bio_alloc(lc->logdev->bdev, in log_one_block()
374 bio->bi_iter.bi_size = 0; in log_one_block()
375 bio->bi_iter.bi_sector = sector; in log_one_block()
376 bio->bi_end_io = log_end_io; in log_one_block()
377 bio->bi_private = lc; in log_one_block()
379 ret = bio_add_page(bio, block->vecs[i].bv_page, in log_one_block()
383 bio_put(bio); in log_one_block()
389 submit_bio(bio); in log_one_block()
636 static void normal_map_bio(struct dm_target *ti, struct bio *bio) in normal_map_bio() argument
640 bio_set_dev(bio, lc->dev->bdev); in normal_map_bio()
643 static int log_writes_map(struct dm_target *ti, struct bio *bio) in log_writes_map() argument
646 struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data)); in log_writes_map()
652 bool flush_bio = (bio->bi_opf & REQ_PREFLUSH); in log_writes_map()
653 bool fua_bio = (bio->bi_opf & REQ_FUA); in log_writes_map()
654 bool discard_bio = (bio_op(bio) == REQ_OP_DISCARD); in log_writes_map()
655 bool meta_bio = (bio->bi_opf & REQ_META); in log_writes_map()
666 if (bio_data_dir(bio) == READ) in log_writes_map()
670 if (!bio_sectors(bio) && !flush_bio) in log_writes_map()
680 alloc_size = struct_size(block, vecs, bio_segments(bio)); in log_writes_map()
703 block->sector = bio_to_dev_sectors(lc, bio->bi_iter.bi_sector); in log_writes_map()
704 block->nr_sectors = bio_to_dev_sectors(lc, bio_sectors(bio)); in log_writes_map()
711 bio_endio(bio); in log_writes_map()
716 if (flush_bio && !bio_sectors(bio)) { in log_writes_map()
732 bio_for_each_segment(bv, bio, iter) { in log_writes_map()
762 normal_map_bio(ti, bio); in log_writes_map()
766 static int normal_end_io(struct dm_target *ti, struct bio *bio, in normal_end_io() argument
770 struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data)); in normal_end_io()
772 if (bio_data_dir(bio) == WRITE && pb->block) { in normal_end_io()