Lines Matching defs:bio
22 struct bio *bio;
75 static inline void dmz_bio_endio(struct bio *bio, blk_status_t status)
78 dm_per_bio_data(bio, sizeof(struct dmz_bioctx));
80 if (status != BLK_STS_OK && bio->bi_status == BLK_STS_OK)
81 bio->bi_status = status;
82 if (bioctx->dev && bio->bi_status != BLK_STS_OK)
89 if (bio->bi_status != BLK_STS_OK &&
90 bio_op(bio) == REQ_OP_WRITE &&
95 bio_endio(bio);
103 static void dmz_clone_endio(struct bio *clone)
109 dmz_bio_endio(bioctx->bio, status);
117 struct bio *bio, sector_t chunk_block,
121 dm_per_bio_data(bio, sizeof(struct dmz_bioctx));
123 struct bio *clone;
128 clone = bio_clone_fast(bio, GFP_NOIO, &dmz->bio_set);
140 bio_advance(bio, clone->bi_iter.bi_size);
145 if (bio_op(bio) == REQ_OP_WRITE && dmz_is_seq(zone))
154 static void dmz_handle_read_zero(struct dmz_target *dmz, struct bio *bio,
160 swap(bio->bi_iter.bi_size, size);
161 zero_fill_bio(bio);
162 swap(bio->bi_iter.bi_size, size);
164 bio_advance(bio, size);
171 struct bio *bio)
174 sector_t chunk_block = dmz_chunk_block(zmd, dmz_bio_block(bio));
175 unsigned int nr_blocks = dmz_bio_blocks(bio);
182 zero_fill_bio(bio);
188 (unsigned long long)dmz_bio_chunk(zmd, bio),
230 ret = dmz_submit_bio(dmz, rzone, bio,
237 dmz_handle_read_zero(dmz, bio, chunk_block, 1);
251 struct dm_zone *zone, struct bio *bio,
263 ret = dmz_submit_bio(dmz, zone, bio, chunk_block, nr_blocks);
284 struct dm_zone *zone, struct bio *bio,
301 ret = dmz_submit_bio(dmz, bzone, bio, chunk_block, nr_blocks);
320 struct bio *bio)
323 sector_t chunk_block = dmz_chunk_block(zmd, dmz_bio_block(bio));
324 unsigned int nr_blocks = dmz_bio_blocks(bio);
331 (unsigned long long)dmz_bio_chunk(zmd, bio),
344 return dmz_handle_direct_write(dmz, zone, bio,
352 return dmz_handle_buffered_write(dmz, zone, bio, chunk_block, nr_blocks);
359 struct bio *bio)
362 sector_t block = dmz_bio_block(bio);
363 unsigned int nr_blocks = dmz_bio_blocks(bio);
376 (unsigned long long)dmz_bio_chunk(zmd, bio),
397 struct bio *bio)
400 dm_per_bio_data(bio, sizeof(struct dmz_bioctx));
412 zone = dmz_get_chunk_mapping(zmd, dmz_bio_chunk(zmd, bio),
413 bio_op(bio));
426 switch (bio_op(bio)) {
428 ret = dmz_handle_read(dmz, zone, bio);
431 ret = dmz_handle_write(dmz, zone, bio);
435 ret = dmz_handle_discard(dmz, zone, bio);
439 dmz_metadata_label(dmz->metadata), bio_op(bio));
450 dmz_bio_endio(bio, errno_to_blk_status(ret));
483 struct bio *bio;
488 while ((bio = bio_list_pop(&cw->bio_list))) {
490 dmz_handle_bio(dmz, cw, bio);
507 struct bio *bio;
519 bio = bio_list_pop(&dmz->flush_list);
522 if (!bio)
525 dmz_bio_endio(bio, errno_to_blk_status(ret));
535 static int dmz_queue_chunk_work(struct dmz_target *dmz, struct bio *bio)
537 unsigned int chunk = dmz_bio_chunk(dmz->metadata, bio);
568 bio_list_add(&cw->bio_list, bio);
626 static int dmz_map(struct dm_target *ti, struct bio *bio)
630 struct dmz_bioctx *bioctx = dm_per_bio_data(bio, sizeof(struct dmz_bioctx));
631 sector_t sector = bio->bi_iter.bi_sector;
632 unsigned int nr_sectors = bio_sectors(bio);
641 bio_op(bio), (unsigned long long)sector, nr_sectors,
642 (unsigned long long)dmz_bio_chunk(zmd, bio),
643 (unsigned long long)dmz_chunk_block(zmd, dmz_bio_block(bio)),
644 (unsigned int)dmz_bio_blocks(bio));
646 if (!nr_sectors && bio_op(bio) != REQ_OP_WRITE)
656 bioctx->bio = bio;
660 if (!nr_sectors && bio_op(bio) == REQ_OP_WRITE) {
662 bio_list_add(&dmz->flush_list, bio);
671 dm_accept_partial_bio(bio, dmz_zone_nr_sectors(zmd) - chunk_sector);
674 ret = dmz_queue_chunk_work(dmz, bio);
678 bio_op(bio), (u64)dmz_bio_chunk(zmd, bio),