Lines Matching defs:vbio

674 	vbio_t *vbio = kmem_zalloc(sizeof (vbio_t), KM_SLEEP);
676 vbio->vbio_zio = zio;
677 vbio->vbio_bdev = bdev;
678 vbio->vbio_abd = NULL;
679 vbio->vbio_max_segs = vdev_bio_max_segs(bdev);
680 vbio->vbio_max_bytes = vdev_bio_max_bytes(bdev);
681 vbio->vbio_lbs_mask = ~(bdev_logical_block_size(bdev)-1);
682 vbio->vbio_offset = zio->io_offset;
683 vbio->vbio_bio = NULL;
684 vbio->vbio_flags = flags;
686 return (vbio);
692 vbio_add_page(vbio_t *vbio, struct page *page, uint_t size, uint_t offset)
694 struct bio *bio = vbio->vbio_bio;
700 bio = vdev_bio_alloc(vbio->vbio_bdev, GFP_NOIO,
701 vbio->vbio_max_segs);
704 BIO_BI_SECTOR(bio) = vbio->vbio_offset >> 9;
706 vbio->vbio_zio->io_type == ZIO_TYPE_WRITE ?
707 WRITE : READ, vbio->vbio_flags);
709 if (vbio->vbio_bio) {
710 bio_chain(vbio->vbio_bio, bio);
711 vdev_submit_bio(vbio->vbio_bio);
713 vbio->vbio_bio = bio;
724 ssize = MIN(size, (vbio->vbio_max_bytes - BIO_BI_SIZE(bio)) &
725 vbio->vbio_lbs_mask);
735 vbio->vbio_offset += BIO_BI_SIZE(bio);
744 /* Iterator callback to submit ABD pages to the vbio. */
748 vbio_t *vbio = priv;
749 return (vbio_add_page(vbio, page, len, off));
754 vbio_submit(vbio_t *vbio, abd_t *abd, uint64_t size)
767 (void) abd_iterate_page_func(abd, 0, size, vbio_fill_cb, vbio);
768 ASSERT(vbio->vbio_bio);
770 vbio->vbio_bio->bi_end_io = vbio_completion;
771 vbio->vbio_bio->bi_private = vbio;
774 * Once submitted, vbio_bio now owns vbio (through bi_private) and we
776 * called and free the vbio before this task is run again, so we must
779 vdev_submit_bio(vbio->vbio_bio);
788 vbio_t *vbio = bio->bi_private;
789 zio_t *zio = vbio->vbio_zio;
805 * here; instead we stash vbio on the zio and take care of it in the
809 zio->io_bio = vbio;
958 /* Allocate vbio, with a pointer to the borrowed ABD if necessary */
959 vbio_t *vbio = vbio_alloc(zio, bdev, flags);
961 vbio->vbio_abd = abd;
964 vbio_submit(vbio, abd, zio->io_size);
1445 /* If this was a read or write, we need to clean up the vbio */
1447 vbio_t *vbio = zio->io_bio;
1454 if (vbio->vbio_abd != NULL) {
1456 abd_copy(zio->io_abd, vbio->vbio_abd,
1459 abd_free(vbio->vbio_abd);
1460 vbio->vbio_abd = NULL;
1464 kmem_free(vbio, sizeof (vbio_t));