Lines Matching refs:bi

228 	struct bio *bi = return_bi;  in return_io()  local
229 while (bi) { in return_io()
231 return_bi = bi->bi_next; in return_io()
232 bi->bi_next = NULL; in return_io()
233 bi->bi_iter.bi_size = 0; in return_io()
234 trace_block_bio_complete(bdev_get_queue(bi->bi_bdev), in return_io()
235 bi, 0); in return_io()
236 bio_endio(bi, 0); in return_io()
237 bi = return_bi; in return_io()
879 raid5_end_read_request(struct bio *bi, int error);
881 raid5_end_write_request(struct bio *bi, int error);
894 struct bio *bi, *rbi; in ops_run_io() local
917 bi = &sh->dev[i].req; in ops_run_io()
994 bio_reset(bi); in ops_run_io()
995 bi->bi_bdev = rdev->bdev; in ops_run_io()
996 bi->bi_rw = rw; in ops_run_io()
997 bi->bi_end_io = (rw & WRITE) in ops_run_io()
1000 bi->bi_private = sh; in ops_run_io()
1004 bi->bi_rw, i); in ops_run_io()
1009 bi->bi_iter.bi_sector = (sh->sector in ops_run_io()
1012 bi->bi_iter.bi_sector = (sh->sector in ops_run_io()
1015 bi->bi_rw |= REQ_NOMERGE; in ops_run_io()
1020 bi->bi_vcnt = 1; in ops_run_io()
1021 bi->bi_io_vec[0].bv_len = STRIPE_SIZE; in ops_run_io()
1022 bi->bi_io_vec[0].bv_offset = 0; in ops_run_io()
1023 bi->bi_iter.bi_size = STRIPE_SIZE; in ops_run_io()
1029 bi->bi_vcnt = 0; in ops_run_io()
1034 trace_block_bio_remap(bdev_get_queue(bi->bi_bdev), in ops_run_io()
1035 bi, disk_devt(conf->mddev->gendisk), in ops_run_io()
1037 generic_make_request(bi); in ops_run_io()
1089 bi->bi_rw, i, (unsigned long long)sh->sector); in ops_run_io()
2286 static void raid5_end_read_request(struct bio * bi, int error) in raid5_end_read_request() argument
2288 struct stripe_head *sh = bi->bi_private; in raid5_end_read_request()
2291 int uptodate = test_bit(BIO_UPTODATE, &bi->bi_flags); in raid5_end_read_request()
2297 if (bi == &sh->dev[i].req) in raid5_end_read_request()
2409 static void raid5_end_write_request(struct bio *bi, int error) in raid5_end_write_request() argument
2411 struct stripe_head *sh = bi->bi_private; in raid5_end_write_request()
2415 int uptodate = test_bit(BIO_UPTODATE, &bi->bi_flags); in raid5_end_write_request()
2421 if (bi == &sh->dev[i].req) { in raid5_end_write_request()
2425 if (bi == &sh->dev[i].rreq) { in raid5_end_write_request()
2953 static int add_stripe_bio(struct stripe_head *sh, struct bio *bi, int dd_idx, in add_stripe_bio() argument
2961 (unsigned long long)bi->bi_iter.bi_sector, in add_stripe_bio()
2982 while (*bip && (*bip)->bi_iter.bi_sector < bi->bi_iter.bi_sector) { in add_stripe_bio()
2983 if (bio_end_sector(*bip) > bi->bi_iter.bi_sector) in add_stripe_bio()
2987 if (*bip && (*bip)->bi_iter.bi_sector < bio_end_sector(bi)) in add_stripe_bio()
2993 BUG_ON(*bip && bi->bi_next && (*bip) != bi->bi_next); in add_stripe_bio()
2995 bi->bi_next = *bip; in add_stripe_bio()
2996 *bip = bi; in add_stripe_bio()
2997 raid5_inc_bi_active_stripes(bi); in add_stripe_bio()
3002 for (bi=sh->dev[dd_idx].towrite; in add_stripe_bio()
3004 bi && bi->bi_iter.bi_sector <= sector; in add_stripe_bio()
3005 bi = r5_next_bio(bi, sh->dev[dd_idx].sector)) { in add_stripe_bio()
3006 if (bio_end_sector(bi) >= sector) in add_stripe_bio()
3007 sector = bio_end_sector(bi); in add_stripe_bio()
3080 struct bio *bi; in handle_failed_stripe() local
3103 bi = sh->dev[i].towrite; in handle_failed_stripe()
3107 if (bi) in handle_failed_stripe()
3113 while (bi && bi->bi_iter.bi_sector < in handle_failed_stripe()
3115 struct bio *nextbi = r5_next_bio(bi, sh->dev[i].sector); in handle_failed_stripe()
3116 clear_bit(BIO_UPTODATE, &bi->bi_flags); in handle_failed_stripe()
3117 if (!raid5_dec_bi_active_stripes(bi)) { in handle_failed_stripe()
3119 bi->bi_next = *return_bi; in handle_failed_stripe()
3120 *return_bi = bi; in handle_failed_stripe()
3122 bi = nextbi; in handle_failed_stripe()
3129 bi = sh->dev[i].written; in handle_failed_stripe()
3136 if (bi) bitmap_end = 1; in handle_failed_stripe()
3137 while (bi && bi->bi_iter.bi_sector < in handle_failed_stripe()
3139 struct bio *bi2 = r5_next_bio(bi, sh->dev[i].sector); in handle_failed_stripe()
3140 clear_bit(BIO_UPTODATE, &bi->bi_flags); in handle_failed_stripe()
3141 if (!raid5_dec_bi_active_stripes(bi)) { in handle_failed_stripe()
3143 bi->bi_next = *return_bi; in handle_failed_stripe()
3144 *return_bi = bi; in handle_failed_stripe()
3146 bi = bi2; in handle_failed_stripe()
3156 bi = sh->dev[i].toread; in handle_failed_stripe()
3161 while (bi && bi->bi_iter.bi_sector < in handle_failed_stripe()
3164 r5_next_bio(bi, sh->dev[i].sector); in handle_failed_stripe()
3165 clear_bit(BIO_UPTODATE, &bi->bi_flags); in handle_failed_stripe()
3166 if (!raid5_dec_bi_active_stripes(bi)) { in handle_failed_stripe()
3167 bi->bi_next = *return_bi; in handle_failed_stripe()
3168 *return_bi = bi; in handle_failed_stripe()
3170 bi = nextbi; in handle_failed_stripe()
4718 static void add_bio_to_retry(struct bio *bi,struct r5conf *conf) in add_bio_to_retry() argument
4724 bi->bi_next = conf->retry_read_aligned_list; in add_bio_to_retry()
4725 conf->retry_read_aligned_list = bi; in add_bio_to_retry()
4733 struct bio *bi; in remove_bio_from_retry() local
4735 bi = conf->retry_read_aligned; in remove_bio_from_retry()
4736 if (bi) { in remove_bio_from_retry()
4738 return bi; in remove_bio_from_retry()
4740 bi = conf->retry_read_aligned_list; in remove_bio_from_retry()
4741 if(bi) { in remove_bio_from_retry()
4742 conf->retry_read_aligned_list = bi->bi_next; in remove_bio_from_retry()
4743 bi->bi_next = NULL; in remove_bio_from_retry()
4748 raid5_set_bi_stripes(bi, 1); /* biased count of active stripes */ in remove_bio_from_retry()
4751 return bi; in remove_bio_from_retry()
4760 static void raid5_align_endio(struct bio *bi, int error) in raid5_align_endio() argument
4762 struct bio* raid_bi = bi->bi_private; in raid5_align_endio()
4765 int uptodate = test_bit(BIO_UPTODATE, &bi->bi_flags); in raid5_align_endio()
4768 bio_put(bi); in raid5_align_endio()
4791 static int bio_fits_rdev(struct bio *bi) in bio_fits_rdev() argument
4793 struct request_queue *q = bdev_get_queue(bi->bi_bdev); in bio_fits_rdev()
4795 if (bio_sectors(bi) > queue_max_sectors(q)) in bio_fits_rdev()
4797 blk_recount_segments(q, bi); in bio_fits_rdev()
4798 if (bi->bi_phys_segments > queue_max_segments(q)) in bio_fits_rdev()
5056 static void make_discard_request(struct mddev *mddev, struct bio *bi) in make_discard_request() argument
5068 logical_sector = bi->bi_iter.bi_sector & ~((sector_t)STRIPE_SECTORS-1); in make_discard_request()
5069 last_sector = bi->bi_iter.bi_sector + (bi->bi_iter.bi_size>>9); in make_discard_request()
5071 bi->bi_next = NULL; in make_discard_request()
5072 bi->bi_phys_segments = 1; /* over-loaded to count active stripes */ in make_discard_request()
5116 sh->dev[d].towrite = bi; in make_discard_request()
5118 raid5_inc_bi_active_stripes(bi); in make_discard_request()
5141 remaining = raid5_dec_bi_active_stripes(bi); in make_discard_request()
5144 bio_endio(bi, 0); in make_discard_request()
5148 static void make_request(struct mddev *mddev, struct bio * bi) in make_request() argument
5155 const int rw = bio_data_dir(bi); in make_request()
5160 if (unlikely(bi->bi_rw & REQ_FLUSH)) { in make_request()
5161 md_flush_request(mddev, bi); in make_request()
5165 md_write_start(mddev, bi); in make_request()
5174 chunk_aligned_read(mddev,bi)) in make_request()
5177 if (unlikely(bi->bi_rw & REQ_DISCARD)) { in make_request()
5178 make_discard_request(mddev, bi); in make_request()
5182 logical_sector = bi->bi_iter.bi_sector & ~((sector_t)STRIPE_SECTORS-1); in make_request()
5183 last_sector = bio_end_sector(bi); in make_request()
5184 bi->bi_next = NULL; in make_request()
5185 bi->bi_phys_segments = 1; /* over-loaded to count active stripes */ in make_request()
5234 (bi->bi_rw&RWA_MASK), 0); in make_request()
5288 !add_stripe_bio(sh, bi, dd_idx, rw, previous)) { in make_request()
5302 (bi->bi_rw & REQ_SYNC) && in make_request()
5308 clear_bit(BIO_UPTODATE, &bi->bi_flags); in make_request()
5314 remaining = raid5_dec_bi_active_stripes(bi); in make_request()
5320 trace_block_bio_complete(bdev_get_queue(bi->bi_bdev), in make_request()
5321 bi, 0); in make_request()
5322 bio_endio(bi, 0); in make_request()