Lines Matching refs:bio

149 static void log_end_io(struct bio *bio, int err)  in log_end_io()  argument
151 struct log_writes_c *lc = bio->bi_private; in log_end_io()
164 bio_for_each_segment_all(bvec, bio, i) in log_end_io()
168 bio_put(bio); in log_end_io()
193 struct bio *bio; in write_metadata() local
198 bio = bio_alloc(GFP_KERNEL, 1); in write_metadata()
199 if (!bio) { in write_metadata()
203 bio->bi_iter.bi_size = 0; in write_metadata()
204 bio->bi_iter.bi_sector = sector; in write_metadata()
205 bio->bi_bdev = lc->logdev->bdev; in write_metadata()
206 bio->bi_end_io = log_end_io; in write_metadata()
207 bio->bi_private = lc; in write_metadata()
208 set_bit(BIO_UPTODATE, &bio->bi_flags); in write_metadata()
213 bio_put(bio); in write_metadata()
225 ret = bio_add_page(bio, page, lc->sectorsize, 0); in write_metadata()
230 submit_bio(WRITE, bio); in write_metadata()
233 bio_put(bio); in write_metadata()
243 struct bio *bio; in log_one_block() local
262 bio = bio_alloc(GFP_KERNEL, block->vec_cnt); in log_one_block()
263 if (!bio) { in log_one_block()
268 bio->bi_iter.bi_size = 0; in log_one_block()
269 bio->bi_iter.bi_sector = sector; in log_one_block()
270 bio->bi_bdev = lc->logdev->bdev; in log_one_block()
271 bio->bi_end_io = log_end_io; in log_one_block()
272 bio->bi_private = lc; in log_one_block()
273 set_bit(BIO_UPTODATE, &bio->bi_flags); in log_one_block()
280 ret = bio_add_page(bio, block->vecs[i].bv_page, in log_one_block()
284 submit_bio(WRITE, bio); in log_one_block()
285 bio = bio_alloc(GFP_KERNEL, block->vec_cnt - i); in log_one_block()
286 if (!bio) { in log_one_block()
290 bio->bi_iter.bi_size = 0; in log_one_block()
291 bio->bi_iter.bi_sector = sector; in log_one_block()
292 bio->bi_bdev = lc->logdev->bdev; in log_one_block()
293 bio->bi_end_io = log_end_io; in log_one_block()
294 bio->bi_private = lc; in log_one_block()
295 set_bit(BIO_UPTODATE, &bio->bi_flags); in log_one_block()
297 ret = bio_add_page(bio, block->vecs[i].bv_page, in log_one_block()
301 bio_put(bio); in log_one_block()
307 submit_bio(WRITE, bio); in log_one_block()
537 static void normal_map_bio(struct dm_target *ti, struct bio *bio) in normal_map_bio() argument
541 bio->bi_bdev = lc->dev->bdev; in normal_map_bio()
544 static int log_writes_map(struct dm_target *ti, struct bio *bio) in log_writes_map() argument
547 struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data)); in log_writes_map()
553 bool flush_bio = (bio->bi_rw & REQ_FLUSH); in log_writes_map()
554 bool fua_bio = (bio->bi_rw & REQ_FUA); in log_writes_map()
555 bool discard_bio = (bio->bi_rw & REQ_DISCARD); in log_writes_map()
566 if (bio_data_dir(bio) == READ) in log_writes_map()
570 if (!bio_sectors(bio) && !flush_bio) in log_writes_map()
580 alloc_size = sizeof(struct pending_block) + sizeof(struct bio_vec) * bio_segments(bio); in log_writes_map()
601 block->sector = bio->bi_iter.bi_sector; in log_writes_map()
602 block->nr_sectors = bio_sectors(bio); in log_writes_map()
609 bio_endio(bio, 0); in log_writes_map()
614 if (flush_bio && !bio_sectors(bio)) { in log_writes_map()
630 bio_for_each_segment(bv, bio, iter) { in log_writes_map()
662 normal_map_bio(ti, bio); in log_writes_map()
666 static int normal_end_io(struct dm_target *ti, struct bio *bio, int error) in normal_end_io() argument
669 struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data)); in normal_end_io()
671 if (bio_data_dir(bio) == WRITE && pb->block) { in normal_end_io()