Lines Matching defs:bio
10 #include "dm-bio-record.h"
1572 struct bio *bio;
1576 bio = dm_bio_from_per_bio_data(dio, sizeof(struct dm_integrity_io));
1577 bio_list_add(&ic->flush_bio_list, bio);
1583 static void do_endio(struct dm_integrity_c *ic, struct bio *bio)
1588 if (unlikely(r) && !bio->bi_status)
1589 bio->bi_status = errno_to_blk_status(r);
1590 if (unlikely(ic->synchronous_mode) && bio_op(bio) == REQ_OP_WRITE) {
1594 bio_list_add(&ic->synchronous_bios, bio);
1599 bio_endio(bio);
1604 struct bio *bio = dm_bio_from_per_bio_data(dio, sizeof(struct dm_integrity_io));
1606 if (unlikely(dio->fua) && likely(!bio->bi_status) && likely(!dm_integrity_failed(ic)))
1609 do_endio(ic, bio);
1616 struct bio *bio;
1623 bio = dm_bio_from_per_bio_data(dio, sizeof(struct dm_integrity_io));
1624 if (unlikely(dio->bi_status) && !bio->bi_status)
1625 bio->bi_status = dio->bi_status;
1626 if (likely(!bio->bi_status) && unlikely(bio_sectors(bio) != dio->range.n_sectors)) {
1628 bio_advance(bio, dio->range.n_sectors << SECTOR_SHIFT);
1637 static void integrity_end_io(struct bio *bio)
1639 struct dm_integrity_io *dio = dm_per_bio_data(bio, sizeof(struct dm_integrity_io));
1641 dm_bio_restore(&dio->bio_details, bio);
1642 if (bio->bi_integrity)
1643 bio->bi_opf |= REQ_INTEGRITY;
1706 struct bio *bio = dm_bio_from_per_bio_data(dio, sizeof(struct dm_integrity_io));
1721 __bio_for_each_segment(bv, bio, iter, dio->bio_details.bi_iter) {
1740 /* Align the bio to logical block size */
1741 alignment = dio->range.logical_sector | bio_sectors(bio) | (PAGE_SIZE >> SECTOR_SHIFT);
1760 bio->bi_bdev, logical_sector);
1763 bio, logical_sector, 0);
1794 struct bio *bio = dm_bio_from_per_bio_data(dio, sizeof(struct dm_integrity_io));
1848 __bio_for_each_segment(bv, bio, iter, dio->bio_details.bi_iter) {
1926 static int dm_integrity_map(struct dm_target *ti, struct bio *bio)
1929 struct dm_integrity_io *dio = dm_per_bio_data(bio, sizeof(struct dm_integrity_io));
1936 dio->op = bio_op(bio);
1940 sector_t sec = dm_target_offset(ti, bio->bi_iter.bi_sector);
1943 sector_t end_boundary = (sec + bio_sectors(bio) - 1) >> log2_max_io_len;
1948 dm_accept_partial_bio(bio, len);
1953 if (unlikely(bio->bi_opf & REQ_PREFLUSH)) {
1958 dio->range.logical_sector = dm_target_offset(ti, bio->bi_iter.bi_sector);
1959 dio->fua = dio->op == REQ_OP_WRITE && bio->bi_opf & REQ_FUA;
1965 bio->bi_opf &= ~REQ_FUA;
1967 if (unlikely(dio->range.logical_sector + bio_sectors(bio) > ic->provided_data_sectors)) {
1969 dio->range.logical_sector, bio_sectors(bio),
1973 if (unlikely((dio->range.logical_sector | bio_sectors(bio)) & (unsigned int)(ic->sectors_per_block - 1))) {
1976 dio->range.logical_sector, bio_sectors(bio));
1984 bio_for_each_segment(bv, bio, iter) {
1993 bip = bio_integrity(bio);
1996 unsigned int wanted_tag_size = bio_sectors(bio) >> ic->sb->log2_sectors_per_block;
2020 bio->bi_iter.bi_sector = get_data_sector(ic, area, offset);
2026 static bool __journal_read_write(struct dm_integrity_io *dio, struct bio *bio,
2036 struct bio_vec bv = bio_iovec(bio);
2042 bio_advance_iter(bio, &bio->bi_iter, bv.bv_len);
2083 bio, logical_sector, 0);
2090 struct bio_integrity_payload *bip = bio_integrity(bio);
2168 if (unlikely(bio->bi_iter.bi_size)) {
2183 struct bio *bio = dm_bio_from_per_bio_data(dio, sizeof(struct dm_integrity_io));
2204 do_endio(ic, bio);
2207 dio->range.n_sectors = bio_sectors(bio);
2281 * So, we offload the bio to a workqueue if we have to sleep.
2341 bio_list_add(&bbs->bio_queue, bio);
2356 dm_bio_record(&dio->bio_details, bio);
2357 bio_set_dev(bio, ic->dev->bdev);
2358 bio->bi_integrity = NULL;
2359 bio->bi_opf &= ~REQ_INTEGRITY;
2360 bio->bi_end_io = integrity_end_io;
2361 bio->bi_iter.bi_size = dio->range.n_sectors << SECTOR_SHIFT;
2370 submit_bio_noacct(bio);
2375 submit_bio_noacct(bio);
2388 if (likely(!bio->bi_status))
2401 if (unlikely(__journal_read_write(dio, bio, journal_section, journal_entry)))
2441 struct bio *flushes;
2498 struct bio *next = flushes->bi_next;
2885 struct bio *bio;
2896 while ((bio = bio_list_pop(&bio_queue))) {
2899 dio = dm_per_bio_data(bio, sizeof(struct dm_integrity_io));
2909 bio_list_add(&waiting, bio);
2920 while ((bio = bio_list_pop(&waiting))) {
2921 struct dm_integrity_io *dio = dm_per_bio_data(bio, sizeof(struct dm_integrity_io));
2939 struct bio *bio;
2967 while (unlikely((bio = bio_list_pop(&ic->synchronous_bios)) != NULL)) {
2968 bio_endio(bio);
4363 * If this workqueue weren't ordered, it would cause bio reordering