Lines Matching refs:bio

546 		struct bio *bio = bio_kmalloc(GFP_KERNEL, 1);  in pkt_alloc_packet_data()  local
547 if (!bio) in pkt_alloc_packet_data()
550 pkt->r_bios[i] = bio; in pkt_alloc_packet_data()
557 struct bio *bio = pkt->r_bios[i]; in pkt_alloc_packet_data() local
558 if (bio) in pkt_alloc_packet_data()
559 bio_put(bio); in pkt_alloc_packet_data()
581 struct bio *bio = pkt->r_bios[i]; in pkt_free_packet_data() local
582 if (bio) in pkt_free_packet_data()
583 bio_put(bio); in pkt_free_packet_data()
655 if (s <= tmp->bio->bi_iter.bi_sector) in pkt_rbtree_find()
664 if (s > tmp->bio->bi_iter.bi_sector) { in pkt_rbtree_find()
669 BUG_ON(s > tmp->bio->bi_iter.bi_sector); in pkt_rbtree_find()
680 sector_t s = node->bio->bi_iter.bi_sector; in pkt_rbtree_insert()
686 if (s < tmp->bio->bi_iter.bi_sector) in pkt_rbtree_insert()
812 static void pkt_queue_bio(struct pktcdvd_device *pd, struct bio *bio) in pkt_queue_bio() argument
815 if (bio_data_dir(bio) == READ) in pkt_queue_bio()
816 bio_list_add(&pd->iosched.read_queue, bio); in pkt_queue_bio()
818 bio_list_add(&pd->iosched.write_queue, bio); in pkt_queue_bio()
849 struct bio *bio; in pkt_iosched_process_queue() local
863 bio = bio_list_peek(&pd->iosched.write_queue); in pkt_iosched_process_queue()
865 if (bio && (bio->bi_iter.bi_sector == in pkt_iosched_process_queue()
888 bio = bio_list_pop(&pd->iosched.write_queue); in pkt_iosched_process_queue()
890 bio = bio_list_pop(&pd->iosched.read_queue); in pkt_iosched_process_queue()
893 if (!bio) in pkt_iosched_process_queue()
896 if (bio_data_dir(bio) == READ) in pkt_iosched_process_queue()
898 bio->bi_iter.bi_size >> 10; in pkt_iosched_process_queue()
901 pd->iosched.last_write = bio_end_sector(bio); in pkt_iosched_process_queue()
916 generic_make_request(bio); in pkt_iosched_process_queue()
980 static void pkt_end_io_read(struct bio *bio) in pkt_end_io_read() argument
982 struct packet_data *pkt = bio->bi_private; in pkt_end_io_read()
987 bio, (unsigned long long)pkt->sector, in pkt_end_io_read()
988 (unsigned long long)bio->bi_iter.bi_sector, bio->bi_error); in pkt_end_io_read()
990 if (bio->bi_error) in pkt_end_io_read()
999 static void pkt_end_io_packet_write(struct bio *bio) in pkt_end_io_packet_write() argument
1001 struct packet_data *pkt = bio->bi_private; in pkt_end_io_packet_write()
1005 pkt_dbg(2, pd, "id=%d, err=%d\n", pkt->id, bio->bi_error); in pkt_end_io_packet_write()
1021 struct bio *bio; in pkt_gather_data() local
1035 bio_list_for_each(bio, &pkt->orig_bios) { in pkt_gather_data()
1036 int first_frame = (bio->bi_iter.bi_sector - pkt->sector) / in pkt_gather_data()
1038 int num_frames = bio->bi_iter.bi_size / CD_FRAMESIZE; in pkt_gather_data()
1062 bio = pkt->r_bios[f]; in pkt_gather_data()
1063 bio_reset(bio); in pkt_gather_data()
1064 bio->bi_iter.bi_sector = pkt->sector + f * (CD_FRAMESIZE >> 9); in pkt_gather_data()
1065 bio->bi_bdev = pd->bdev; in pkt_gather_data()
1066 bio->bi_end_io = pkt_end_io_read; in pkt_gather_data()
1067 bio->bi_private = pkt; in pkt_gather_data()
1073 if (!bio_add_page(bio, pkt->pages[p], CD_FRAMESIZE, offset)) in pkt_gather_data()
1077 bio->bi_rw = READ; in pkt_gather_data()
1078 pkt_queue_bio(pd, bio); in pkt_gather_data()
1158 bio_reset(pkt->bio); in pkt_start_recovery()
1159 pkt->bio->bi_bdev = pd->bdev; in pkt_start_recovery()
1160 pkt->bio->bi_rw = REQ_WRITE; in pkt_start_recovery()
1161 pkt->bio->bi_iter.bi_sector = new_sector; in pkt_start_recovery()
1162 pkt->bio->bi_iter.bi_size = pkt->frames * CD_FRAMESIZE; in pkt_start_recovery()
1163 pkt->bio->bi_vcnt = pkt->frames; in pkt_start_recovery()
1165 pkt->bio->bi_end_io = pkt_end_io_packet_write; in pkt_start_recovery()
1166 pkt->bio->bi_private = pkt; in pkt_start_recovery()
1198 struct bio *bio = NULL; in pkt_handle_queue() local
1223 bio = node->bio; in pkt_handle_queue()
1224 zone = get_zone(bio->bi_iter.bi_sector, pd); in pkt_handle_queue()
1227 bio = NULL; in pkt_handle_queue()
1243 if (!bio) { in pkt_handle_queue()
1262 bio = node->bio; in pkt_handle_queue()
1264 get_zone(bio->bi_iter.bi_sector, pd)); in pkt_handle_queue()
1265 if (get_zone(bio->bi_iter.bi_sector, pd) != zone) in pkt_handle_queue()
1269 bio_list_add(&pkt->orig_bios, bio); in pkt_handle_queue()
1270 pkt->write_size += bio->bi_iter.bi_size / CD_FRAMESIZE; in pkt_handle_queue()
1345 struct bio *bio; in pkt_finish_packet() local
1351 while ((bio = bio_list_pop(&pkt->orig_bios))) { in pkt_finish_packet()
1352 bio->bi_error = error; in pkt_finish_packet()
1353 bio_endio(bio); in pkt_finish_packet()
2334 static void pkt_end_io_read_cloned(struct bio *bio) in pkt_end_io_read_cloned() argument
2336 struct packet_stacked_data *psd = bio->bi_private; in pkt_end_io_read_cloned()
2339 psd->bio->bi_error = bio->bi_error; in pkt_end_io_read_cloned()
2340 bio_put(bio); in pkt_end_io_read_cloned()
2341 bio_endio(psd->bio); in pkt_end_io_read_cloned()
2346 static void pkt_make_request_read(struct pktcdvd_device *pd, struct bio *bio) in pkt_make_request_read() argument
2348 struct bio *cloned_bio = bio_clone(bio, GFP_NOIO); in pkt_make_request_read()
2352 psd->bio = bio; in pkt_make_request_read()
2356 pd->stats.secs_r += bio_sectors(bio); in pkt_make_request_read()
2360 static void pkt_make_request_write(struct request_queue *q, struct bio *bio) in pkt_make_request_write() argument
2368 zone = get_zone(bio->bi_iter.bi_sector, pd); in pkt_make_request_write()
2381 bio_list_add(&pkt->orig_bios, bio); in pkt_make_request_write()
2383 bio->bi_iter.bi_size / CD_FRAMESIZE; in pkt_make_request_write()
2421 node->bio = bio; in pkt_make_request_write()
2444 static blk_qc_t pkt_make_request(struct request_queue *q, struct bio *bio) in pkt_make_request() argument
2448 struct bio *split; in pkt_make_request()
2450 blk_queue_bounce(q, &bio); in pkt_make_request()
2452 blk_queue_split(q, &bio, q->bio_split); in pkt_make_request()
2457 bdevname(bio->bi_bdev, b)); in pkt_make_request()
2462 (unsigned long long)bio->bi_iter.bi_sector, in pkt_make_request()
2463 (unsigned long long)bio_end_sector(bio)); in pkt_make_request()
2468 if (bio_data_dir(bio) == READ) { in pkt_make_request()
2469 pkt_make_request_read(pd, bio); in pkt_make_request()
2475 (unsigned long long)bio->bi_iter.bi_sector); in pkt_make_request()
2479 if (!bio->bi_iter.bi_size || (bio->bi_iter.bi_size % CD_FRAMESIZE)) { in pkt_make_request()
2485 sector_t zone = get_zone(bio->bi_iter.bi_sector, pd); in pkt_make_request()
2486 sector_t last_zone = get_zone(bio_end_sector(bio) - 1, pd); in pkt_make_request()
2491 split = bio_split(bio, last_zone - in pkt_make_request()
2492 bio->bi_iter.bi_sector, in pkt_make_request()
2494 bio_chain(split, bio); in pkt_make_request()
2496 split = bio; in pkt_make_request()
2500 } while (split != bio); in pkt_make_request()
2504 bio_io_error(bio); in pkt_make_request()