Lines Matching refs:bio
545 struct bio *bio = bio_kmalloc(GFP_KERNEL, 1); in pkt_alloc_packet_data() local
546 if (!bio) in pkt_alloc_packet_data()
549 pkt->r_bios[i] = bio; in pkt_alloc_packet_data()
556 struct bio *bio = pkt->r_bios[i]; in pkt_alloc_packet_data() local
557 if (bio) in pkt_alloc_packet_data()
558 bio_put(bio); in pkt_alloc_packet_data()
580 struct bio *bio = pkt->r_bios[i]; in pkt_free_packet_data() local
581 if (bio) in pkt_free_packet_data()
582 bio_put(bio); in pkt_free_packet_data()
654 if (s <= tmp->bio->bi_iter.bi_sector) in pkt_rbtree_find()
663 if (s > tmp->bio->bi_iter.bi_sector) { in pkt_rbtree_find()
668 BUG_ON(s > tmp->bio->bi_iter.bi_sector); in pkt_rbtree_find()
679 sector_t s = node->bio->bi_iter.bi_sector; in pkt_rbtree_insert()
685 if (s < tmp->bio->bi_iter.bi_sector) in pkt_rbtree_insert()
811 static void pkt_queue_bio(struct pktcdvd_device *pd, struct bio *bio) in pkt_queue_bio() argument
814 if (bio_data_dir(bio) == READ) in pkt_queue_bio()
815 bio_list_add(&pd->iosched.read_queue, bio); in pkt_queue_bio()
817 bio_list_add(&pd->iosched.write_queue, bio); in pkt_queue_bio()
848 struct bio *bio; in pkt_iosched_process_queue() local
862 bio = bio_list_peek(&pd->iosched.write_queue); in pkt_iosched_process_queue()
864 if (bio && (bio->bi_iter.bi_sector == in pkt_iosched_process_queue()
887 bio = bio_list_pop(&pd->iosched.write_queue); in pkt_iosched_process_queue()
889 bio = bio_list_pop(&pd->iosched.read_queue); in pkt_iosched_process_queue()
892 if (!bio) in pkt_iosched_process_queue()
895 if (bio_data_dir(bio) == READ) in pkt_iosched_process_queue()
897 bio->bi_iter.bi_size >> 10; in pkt_iosched_process_queue()
900 pd->iosched.last_write = bio_end_sector(bio); in pkt_iosched_process_queue()
915 generic_make_request(bio); in pkt_iosched_process_queue()
979 static void pkt_end_io_read(struct bio *bio, int err) in pkt_end_io_read() argument
981 struct packet_data *pkt = bio->bi_private; in pkt_end_io_read()
986 bio, (unsigned long long)pkt->sector, in pkt_end_io_read()
987 (unsigned long long)bio->bi_iter.bi_sector, err); in pkt_end_io_read()
998 static void pkt_end_io_packet_write(struct bio *bio, int err) in pkt_end_io_packet_write() argument
1000 struct packet_data *pkt = bio->bi_private; in pkt_end_io_packet_write()
1020 struct bio *bio; in pkt_gather_data() local
1034 bio_list_for_each(bio, &pkt->orig_bios) { in pkt_gather_data()
1035 int first_frame = (bio->bi_iter.bi_sector - pkt->sector) / in pkt_gather_data()
1037 int num_frames = bio->bi_iter.bi_size / CD_FRAMESIZE; in pkt_gather_data()
1061 bio = pkt->r_bios[f]; in pkt_gather_data()
1062 bio_reset(bio); in pkt_gather_data()
1063 bio->bi_iter.bi_sector = pkt->sector + f * (CD_FRAMESIZE >> 9); in pkt_gather_data()
1064 bio->bi_bdev = pd->bdev; in pkt_gather_data()
1065 bio->bi_end_io = pkt_end_io_read; in pkt_gather_data()
1066 bio->bi_private = pkt; in pkt_gather_data()
1072 if (!bio_add_page(bio, pkt->pages[p], CD_FRAMESIZE, offset)) in pkt_gather_data()
1076 bio->bi_rw = READ; in pkt_gather_data()
1077 pkt_queue_bio(pd, bio); in pkt_gather_data()
1157 bio_reset(pkt->bio); in pkt_start_recovery()
1158 pkt->bio->bi_bdev = pd->bdev; in pkt_start_recovery()
1159 pkt->bio->bi_rw = REQ_WRITE; in pkt_start_recovery()
1160 pkt->bio->bi_iter.bi_sector = new_sector; in pkt_start_recovery()
1161 pkt->bio->bi_iter.bi_size = pkt->frames * CD_FRAMESIZE; in pkt_start_recovery()
1162 pkt->bio->bi_vcnt = pkt->frames; in pkt_start_recovery()
1164 pkt->bio->bi_end_io = pkt_end_io_packet_write; in pkt_start_recovery()
1165 pkt->bio->bi_private = pkt; in pkt_start_recovery()
1197 struct bio *bio = NULL; in pkt_handle_queue() local
1222 bio = node->bio; in pkt_handle_queue()
1223 zone = get_zone(bio->bi_iter.bi_sector, pd); in pkt_handle_queue()
1226 bio = NULL; in pkt_handle_queue()
1242 if (!bio) { in pkt_handle_queue()
1261 bio = node->bio; in pkt_handle_queue()
1263 get_zone(bio->bi_iter.bi_sector, pd)); in pkt_handle_queue()
1264 if (get_zone(bio->bi_iter.bi_sector, pd) != zone) in pkt_handle_queue()
1268 bio_list_add(&pkt->orig_bios, bio); in pkt_handle_queue()
1269 pkt->write_size += bio->bi_iter.bi_size / CD_FRAMESIZE; in pkt_handle_queue()
1344 struct bio *bio; in pkt_finish_packet() local
1350 while ((bio = bio_list_pop(&pkt->orig_bios))) in pkt_finish_packet()
1351 bio_endio(bio, uptodate ? 0 : -EIO); in pkt_finish_packet()
2334 static void pkt_end_io_read_cloned(struct bio *bio, int err) in pkt_end_io_read_cloned() argument
2336 struct packet_stacked_data *psd = bio->bi_private; in pkt_end_io_read_cloned()
2339 bio_put(bio); in pkt_end_io_read_cloned()
2340 bio_endio(psd->bio, err); in pkt_end_io_read_cloned()
2345 static void pkt_make_request_read(struct pktcdvd_device *pd, struct bio *bio) in pkt_make_request_read() argument
2347 struct bio *cloned_bio = bio_clone(bio, GFP_NOIO); in pkt_make_request_read()
2351 psd->bio = bio; in pkt_make_request_read()
2355 pd->stats.secs_r += bio_sectors(bio); in pkt_make_request_read()
2359 static void pkt_make_request_write(struct request_queue *q, struct bio *bio) in pkt_make_request_write() argument
2367 zone = get_zone(bio->bi_iter.bi_sector, pd); in pkt_make_request_write()
2380 bio_list_add(&pkt->orig_bios, bio); in pkt_make_request_write()
2382 bio->bi_iter.bi_size / CD_FRAMESIZE; in pkt_make_request_write()
2420 node->bio = bio; in pkt_make_request_write()
2443 static void pkt_make_request(struct request_queue *q, struct bio *bio) in pkt_make_request() argument
2447 struct bio *split; in pkt_make_request()
2452 bdevname(bio->bi_bdev, b)); in pkt_make_request()
2457 (unsigned long long)bio->bi_iter.bi_sector, in pkt_make_request()
2458 (unsigned long long)bio_end_sector(bio)); in pkt_make_request()
2463 if (bio_data_dir(bio) == READ) { in pkt_make_request()
2464 pkt_make_request_read(pd, bio); in pkt_make_request()
2470 (unsigned long long)bio->bi_iter.bi_sector); in pkt_make_request()
2474 if (!bio->bi_iter.bi_size || (bio->bi_iter.bi_size % CD_FRAMESIZE)) { in pkt_make_request()
2479 blk_queue_bounce(q, &bio); in pkt_make_request()
2482 sector_t zone = get_zone(bio->bi_iter.bi_sector, pd); in pkt_make_request()
2483 sector_t last_zone = get_zone(bio_end_sector(bio) - 1, pd); in pkt_make_request()
2488 split = bio_split(bio, last_zone - in pkt_make_request()
2489 bio->bi_iter.bi_sector, in pkt_make_request()
2491 bio_chain(split, bio); in pkt_make_request()
2493 split = bio; in pkt_make_request()
2497 } while (split != bio); in pkt_make_request()
2501 bio_io_error(bio); in pkt_make_request()