Lines Matching defs:bio

13 #include <linux/bio.h>
168 static void log_end_io(struct bio *bio)
170 struct log_writes_c *lc = bio->bi_private;
172 if (bio->bi_status) {
175 DMERR("Error writing log block, error=%d", bio->bi_status);
181 bio_free_pages(bio);
183 bio_put(bio);
186 static void log_end_super(struct bio *bio)
188 struct log_writes_c *lc = bio->bi_private;
191 log_end_io(bio);
216 struct bio *bio;
221 bio = bio_alloc(lc->logdev->bdev, 1, REQ_OP_WRITE, GFP_KERNEL);
222 bio->bi_iter.bi_size = 0;
223 bio->bi_iter.bi_sector = sector;
224 bio->bi_end_io = (sector == WRITE_LOG_SUPER_SECTOR) ?
226 bio->bi_private = lc;
231 bio_put(bio);
243 ret = bio_add_page(bio, page, lc->sectorsize, 0);
248 submit_bio(bio);
251 bio_put(bio);
264 struct bio *bio;
273 bio = bio_alloc(lc->logdev->bdev, bio_pages, REQ_OP_WRITE,
275 bio->bi_iter.bi_size = 0;
276 bio->bi_iter.bi_sector = sector;
277 bio->bi_end_io = log_end_io;
278 bio->bi_private = lc;
296 ret = bio_add_page(bio, page, pg_sectorlen, 0);
306 submit_bio(bio);
312 bio_free_pages(bio);
313 bio_put(bio);
321 struct bio *bio;
346 /* we don't support both inline data & bio data */
354 bio = bio_alloc(lc->logdev->bdev, bio_max_segs(block->vec_cnt),
356 bio->bi_iter.bi_size = 0;
357 bio->bi_iter.bi_sector = sector;
358 bio->bi_end_io = log_end_io;
359 bio->bi_private = lc;
364 * for every bvec in the original bio for simplicity sake.
366 ret = bio_add_page(bio, block->vecs[i].bv_page,
370 submit_bio(bio);
371 bio = bio_alloc(lc->logdev->bdev,
374 bio->bi_iter.bi_size = 0;
375 bio->bi_iter.bi_sector = sector;
376 bio->bi_end_io = log_end_io;
377 bio->bi_private = lc;
379 ret = bio_add_page(bio, block->vecs[i].bv_page,
382 DMERR("Couldn't add page on new bio?");
383 bio_put(bio);
389 submit_bio(bio);
418 * nr_entries could be rewritten incorrectly by an old bio.
636 static void normal_map_bio(struct dm_target *ti, struct bio *bio)
640 bio_set_dev(bio, lc->dev->bdev);
643 static int log_writes_map(struct dm_target *ti, struct bio *bio)
646 struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data));
652 bool flush_bio = (bio->bi_opf & REQ_PREFLUSH);
653 bool fua_bio = (bio->bi_opf & REQ_FUA);
654 bool discard_bio = (bio_op(bio) == REQ_OP_DISCARD);
655 bool meta_bio = (bio->bi_opf & REQ_META);
666 if (bio_data_dir(bio) == READ)
670 if (!bio_sectors(bio) && !flush_bio)
680 alloc_size = struct_size(block, vecs, bio_segments(bio));
703 block->sector = bio_to_dev_sectors(lc, bio->bi_iter.bi_sector);
704 block->nr_sectors = bio_to_dev_sectors(lc, bio_sectors(bio));
711 bio_endio(bio);
715 /* Flush bio, splice the unflushed blocks onto this list and submit */
716 if (flush_bio && !bio_sectors(bio)) {
724 * We will write this bio somewhere else way later so we need to copy
728 * We do this because this could be a bio from O_DIRECT in which case we
732 bio_for_each_segment(bv, bio, iter) {
762 normal_map_bio(ti, bio);
766 static int normal_end_io(struct dm_target *ti, struct bio *bio,
770 struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data));
772 if (bio_data_dir(bio) == WRITE && pb->block) {