Lines Matching refs:bio
226 struct bio *head, struct bio *tail) in requeue_list()
229 struct bio *old_head; in requeue_list()
252 struct bio *pending; in run_scheduled_bios()
256 struct bio *tail; in run_scheduled_bios()
257 struct bio *cur; in run_scheduled_bios()
5588 static inline void btrfs_end_bbio(struct btrfs_bio *bbio, struct bio *bio, int err) in btrfs_end_bbio() argument
5591 bio_endio_nodec(bio, err); in btrfs_end_bbio()
5593 bio_endio(bio, err); in btrfs_end_bbio()
5597 static void btrfs_end_bio(struct bio *bio, int err) in btrfs_end_bio() argument
5599 struct btrfs_bio *bbio = bio->bi_private; in btrfs_end_bio()
5607 btrfs_io_bio(bio)->stripe_index; in btrfs_end_bio()
5612 if (bio->bi_rw & WRITE) in btrfs_end_bio()
5618 if ((bio->bi_rw & WRITE_FLUSH) == WRITE_FLUSH) in btrfs_end_bio()
5626 if (bio == bbio->orig_bio) in btrfs_end_bio()
5633 bio_put(bio); in btrfs_end_bio()
5634 bio = bbio->orig_bio; in btrfs_end_bio()
5637 bio->bi_private = bbio->private; in btrfs_end_bio()
5638 bio->bi_end_io = bbio->end_io; in btrfs_end_bio()
5639 btrfs_io_bio(bio)->mirror_num = bbio->mirror_num; in btrfs_end_bio()
5650 set_bit(BIO_UPTODATE, &bio->bi_flags); in btrfs_end_bio()
5654 btrfs_end_bbio(bbio, bio, err); in btrfs_end_bio()
5656 bio_put(bio); in btrfs_end_bio()
5669 int rw, struct bio *bio) in btrfs_schedule_bio() argument
5675 bio_endio(bio, -EIO); in btrfs_schedule_bio()
5681 bio_get(bio); in btrfs_schedule_bio()
5682 btrfsic_submit_bio(rw, bio); in btrfs_schedule_bio()
5683 bio_put(bio); in btrfs_schedule_bio()
5694 WARN_ON(bio->bi_next); in btrfs_schedule_bio()
5695 bio->bi_next = NULL; in btrfs_schedule_bio()
5696 bio->bi_rw |= rw; in btrfs_schedule_bio()
5699 if (bio->bi_rw & REQ_SYNC) in btrfs_schedule_bio()
5705 pending_bios->tail->bi_next = bio; in btrfs_schedule_bio()
5707 pending_bios->tail = bio; in btrfs_schedule_bio()
5709 pending_bios->head = bio; in btrfs_schedule_bio()
5720 static int bio_size_ok(struct block_device *bdev, struct bio *bio, in bio_size_ok() argument
5729 .bi_rw = bio->bi_rw, in bio_size_ok()
5732 if (WARN_ON(bio->bi_vcnt == 0)) in bio_size_ok()
5735 prev = &bio->bi_io_vec[bio->bi_vcnt - 1]; in bio_size_ok()
5736 if (bio_sectors(bio) > max_sectors) in bio_size_ok()
5742 bvm.bi_size = bio->bi_iter.bi_size - prev->bv_len; in bio_size_ok()
5749 struct bio *bio, u64 physical, int dev_nr, in submit_stripe_bio() argument
5754 bio->bi_private = bbio; in submit_stripe_bio()
5755 btrfs_io_bio(bio)->stripe_index = dev_nr; in submit_stripe_bio()
5756 bio->bi_end_io = btrfs_end_bio; in submit_stripe_bio()
5757 bio->bi_iter.bi_sector = physical >> 9; in submit_stripe_bio()
5766 (u64)bio->bi_iter.bi_sector, (u_long)dev->bdev->bd_dev, in submit_stripe_bio()
5767 name->str, dev->devid, bio->bi_iter.bi_size); in submit_stripe_bio()
5771 bio->bi_bdev = dev->bdev; in submit_stripe_bio()
5776 btrfs_schedule_bio(root, dev, rw, bio); in submit_stripe_bio()
5778 btrfsic_submit_bio(rw, bio); in submit_stripe_bio()
5782 struct bio *first_bio, struct btrfs_device *dev, in breakup_stripe_bio()
5786 struct bio *bio; in breakup_stripe_bio() local
5791 bio = btrfs_bio_alloc(dev->bdev, physical >> 9, nr_vecs, GFP_NOFS); in breakup_stripe_bio()
5792 if (!bio) in breakup_stripe_bio()
5796 if (bio_add_page(bio, bvec->bv_page, bvec->bv_len, in breakup_stripe_bio()
5798 u64 len = bio->bi_iter.bi_size; in breakup_stripe_bio()
5801 submit_stripe_bio(root, bbio, bio, physical, dev_nr, in breakup_stripe_bio()
5809 submit_stripe_bio(root, bbio, bio, physical, dev_nr, rw, async); in breakup_stripe_bio()
5813 static void bbio_error(struct btrfs_bio *bbio, struct bio *bio, u64 logical) in bbio_error() argument
5818 WARN_ON(bio != bbio->orig_bio); in bbio_error()
5820 bio->bi_private = bbio->private; in bbio_error()
5821 bio->bi_end_io = bbio->end_io; in bbio_error()
5822 btrfs_io_bio(bio)->mirror_num = bbio->mirror_num; in bbio_error()
5823 bio->bi_iter.bi_sector = logical >> 9; in bbio_error()
5825 btrfs_end_bbio(bbio, bio, -EIO); in bbio_error()
5829 int btrfs_map_bio(struct btrfs_root *root, int rw, struct bio *bio, in btrfs_map_bio() argument
5833 struct bio *first_bio = bio; in btrfs_map_bio()
5834 u64 logical = (u64)bio->bi_iter.bi_sector << 9; in btrfs_map_bio()
5842 length = bio->bi_iter.bi_size; in btrfs_map_bio()
5864 ret = raid56_parity_write(root, bio, bbio, map_length); in btrfs_map_bio()
5866 ret = raid56_parity_recover(root, bio, bbio, map_length, in btrfs_map_bio()
5900 bio = btrfs_bio_clone(first_bio, GFP_NOFS); in btrfs_map_bio()
5901 BUG_ON(!bio); /* -ENOMEM */ in btrfs_map_bio()
5903 bio = first_bio; in btrfs_map_bio()
5907 submit_stripe_bio(root, bbio, bio, in btrfs_map_bio()