Lines Matching defs:bio
12 #include <linux/bio.h>
167 static void log_end_io(struct bio *bio)
169 struct log_writes_c *lc = bio->bi_private;
171 if (bio->bi_status) {
174 DMERR("Error writing log block, error=%d", bio->bi_status);
180 bio_free_pages(bio);
182 bio_put(bio);
185 static void log_end_super(struct bio *bio)
187 struct log_writes_c *lc = bio->bi_private;
190 log_end_io(bio);
215 struct bio *bio;
220 bio = bio_alloc(GFP_KERNEL, 1);
221 if (!bio) {
222 DMERR("Couldn't alloc log bio");
225 bio->bi_iter.bi_size = 0;
226 bio->bi_iter.bi_sector = sector;
227 bio_set_dev(bio, lc->logdev->bdev);
228 bio->bi_end_io = (sector == WRITE_LOG_SUPER_SECTOR) ?
230 bio->bi_private = lc;
231 bio_set_op_attrs(bio, REQ_OP_WRITE, 0);
236 bio_put(bio);
248 ret = bio_add_page(bio, page, lc->sectorsize, 0);
253 submit_bio(bio);
256 bio_put(bio);
269 struct bio *bio;
279 bio = bio_alloc(GFP_KERNEL, bio_pages);
280 if (!bio) {
281 DMERR("Couldn't alloc inline data bio");
285 bio->bi_iter.bi_size = 0;
286 bio->bi_iter.bi_sector = sector;
287 bio_set_dev(bio, lc->logdev->bdev);
288 bio->bi_end_io = log_end_io;
289 bio->bi_private = lc;
290 bio_set_op_attrs(bio, REQ_OP_WRITE, 0);
308 ret = bio_add_page(bio, page, pg_sectorlen, 0);
318 submit_bio(bio);
324 bio_free_pages(bio);
325 bio_put(bio);
334 struct bio *bio;
359 /* we don't support both inline data & bio data */
367 bio = bio_alloc(GFP_KERNEL, min(block->vec_cnt, BIO_MAX_PAGES));
368 if (!bio) {
369 DMERR("Couldn't alloc log bio");
372 bio->bi_iter.bi_size = 0;
373 bio->bi_iter.bi_sector = sector;
374 bio_set_dev(bio, lc->logdev->bdev);
375 bio->bi_end_io = log_end_io;
376 bio->bi_private = lc;
377 bio_set_op_attrs(bio, REQ_OP_WRITE, 0);
382 * for every bvec in the original bio for simplicity sake.
384 ret = bio_add_page(bio, block->vecs[i].bv_page,
388 submit_bio(bio);
389 bio = bio_alloc(GFP_KERNEL, min(block->vec_cnt - i, BIO_MAX_PAGES));
390 if (!bio) {
391 DMERR("Couldn't alloc log bio");
394 bio->bi_iter.bi_size = 0;
395 bio->bi_iter.bi_sector = sector;
396 bio_set_dev(bio, lc->logdev->bdev);
397 bio->bi_end_io = log_end_io;
398 bio->bi_private = lc;
399 bio_set_op_attrs(bio, REQ_OP_WRITE, 0);
401 ret = bio_add_page(bio, block->vecs[i].bv_page,
404 DMERR("Couldn't add page on new bio?");
405 bio_put(bio);
411 submit_bio(bio);
440 * nr_entries could be rewritten incorrectly by an old bio.
658 static void normal_map_bio(struct dm_target *ti, struct bio *bio)
662 bio_set_dev(bio, lc->dev->bdev);
665 static int log_writes_map(struct dm_target *ti, struct bio *bio)
668 struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data));
674 bool flush_bio = (bio->bi_opf & REQ_PREFLUSH);
675 bool fua_bio = (bio->bi_opf & REQ_FUA);
676 bool discard_bio = (bio_op(bio) == REQ_OP_DISCARD);
677 bool meta_bio = (bio->bi_opf & REQ_META);
688 if (bio_data_dir(bio) == READ)
692 if (!bio_sectors(bio) && !flush_bio)
702 alloc_size = struct_size(block, vecs, bio_segments(bio));
725 block->sector = bio_to_dev_sectors(lc, bio->bi_iter.bi_sector);
726 block->nr_sectors = bio_to_dev_sectors(lc, bio_sectors(bio));
733 bio_endio(bio);
737 /* Flush bio, splice the unflushed blocks onto this list and submit */
738 if (flush_bio && !bio_sectors(bio)) {
746 * We will write this bio somewhere else way later so we need to copy
750 * We do this because this could be a bio from O_DIRECT in which case we
754 bio_for_each_segment(bv, bio, iter) {
786 normal_map_bio(ti, bio);
790 static int normal_end_io(struct dm_target *ti, struct bio *bio,
794 struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data));
796 if (bio_data_dir(bio) == WRITE && pb->block) {