Lines Matching refs:zio

855 	zio_t *zio = vb->vb_io;  in vdev_disk_io_intr()  local
862 zio->io_error = (geterror(bp) != 0 ? EIO : 0); in vdev_disk_io_intr()
864 if (zio->io_error == 0 && bp->b_resid != 0) in vdev_disk_io_intr()
865 zio->io_error = SET_ERROR(EIO); in vdev_disk_io_intr()
867 if (zio->io_type == ZIO_TYPE_READ) { in vdev_disk_io_intr()
868 abd_return_buf_copy(zio->io_abd, bp->b_un.b_addr, zio->io_size); in vdev_disk_io_intr()
870 abd_return_buf(zio->io_abd, bp->b_un.b_addr, zio->io_size); in vdev_disk_io_intr()
875 zio_delay_interrupt(zio); in vdev_disk_io_intr()
880 vdev_disk_ioctl_free(zio_t *zio) in vdev_disk_ioctl_free() argument
882 kmem_free(zio->io_vsd, sizeof (struct dk_callback)); in vdev_disk_ioctl_free()
893 zio_t *zio = zio_arg; in vdev_disk_ioctl_done() local
895 zio->io_error = error; in vdev_disk_ioctl_done()
897 zio_interrupt(zio); in vdev_disk_ioctl_done()
901 vdev_disk_io_start(zio_t *zio) in vdev_disk_io_start() argument
903 vdev_t *vd = zio->io_vd; in vdev_disk_io_start()
916 zio->io_error = ENXIO; in vdev_disk_io_start()
917 zio_interrupt(zio); in vdev_disk_io_start()
921 switch (zio->io_type) { in vdev_disk_io_start()
925 zio->io_error = SET_ERROR(ENXIO); in vdev_disk_io_start()
926 zio_interrupt(zio); in vdev_disk_io_start()
930 switch (zio->io_cmd) { in vdev_disk_io_start()
938 zio->io_error = SET_ERROR(ENOTSUP); in vdev_disk_io_start()
942 zio->io_vsd = dkc = kmem_alloc(sizeof (*dkc), KM_SLEEP); in vdev_disk_io_start()
943 zio->io_vsd_ops = &vdev_disk_vsd_ops; in vdev_disk_io_start()
947 dkc->dkc_cookie = zio; in vdev_disk_io_start()
949 error = ldi_ioctl(dvd->vd_lh, zio->io_cmd, in vdev_disk_io_start()
961 zio->io_error = error; in vdev_disk_io_start()
966 zio->io_error = SET_ERROR(ENOTSUP); in vdev_disk_io_start()
969 zio_execute(zio); in vdev_disk_io_start()
974 zio->io_error = SET_ERROR(ENOTSUP); in vdev_disk_io_start()
975 zio_execute(zio); in vdev_disk_io_start()
979 ASSERT0(zio->io_trim_flags & ZIO_TRIM_SECURE); in vdev_disk_io_start()
986 dfl.dfl_exts[0].dfle_start = zio->io_offset; in vdev_disk_io_start()
987 dfl.dfl_exts[0].dfle_length = zio->io_size; in vdev_disk_io_start()
989 zio->io_error = ldi_ioctl(dvd->vd_lh, DKIOCFREE, in vdev_disk_io_start()
992 if (zio->io_error == ENOTSUP || zio->io_error == ENOTTY) { in vdev_disk_io_start()
1000 zio_interrupt(zio); in vdev_disk_io_start()
1004 ASSERT(zio->io_type == ZIO_TYPE_READ || zio->io_type == ZIO_TYPE_WRITE); in vdev_disk_io_start()
1005 zio->io_target_timestamp = zio_handle_io_delay(zio); in vdev_disk_io_start()
1009 vb->vb_io = zio; in vdev_disk_io_start()
1014 (zio->io_type == ZIO_TYPE_READ ? B_READ : B_WRITE); in vdev_disk_io_start()
1015 if (!(zio->io_flags & (ZIO_FLAG_IO_RETRY | ZIO_FLAG_TRYHARD))) in vdev_disk_io_start()
1017 bp->b_bcount = zio->io_size; in vdev_disk_io_start()
1019 if (zio->io_type == ZIO_TYPE_READ) { in vdev_disk_io_start()
1021 abd_borrow_buf(zio->io_abd, zio->io_size); in vdev_disk_io_start()
1024 abd_borrow_buf_copy(zio->io_abd, zio->io_size); in vdev_disk_io_start()
1027 bp->b_lblkno = lbtodb(zio->io_offset); in vdev_disk_io_start()
1028 bp->b_bufsize = zio->io_size; in vdev_disk_io_start()
1037 zio->io_error = ENXIO; in vdev_disk_io_start()
1038 zio_interrupt(zio); in vdev_disk_io_start()
1043 vdev_disk_io_done(zio_t *zio) in vdev_disk_io_done() argument
1045 vdev_t *vd = zio->io_vd; in vdev_disk_io_done()
1053 if (zio->io_error == EIO && !vd->vdev_remove_wanted) { in vdev_disk_io_done()
1065 zfs_post_remove(zio->io_spa, vd); in vdev_disk_io_done()
1067 spa_async_request(zio->io_spa, SPA_ASYNC_REMOVE); in vdev_disk_io_done()