Lines Matching refs:zio
228 vdev_disk_error(zio_t *zio) in vdev_disk_error() argument
236 "offset=%llu size=%llu flags=%llu\n", spa_name(zio->io_spa), in vdev_disk_error()
237 zio->io_vd->vdev_path, zio->io_error, zio->io_type, in vdev_disk_error()
238 (u_longlong_t)zio->io_offset, (u_longlong_t)zio->io_size, in vdev_disk_error()
239 zio->io_flags); in vdev_disk_error()
692 vbio_alloc(zio_t *zio, struct block_device *bdev, int flags) in vbio_alloc() argument
696 vbio->vbio_zio = zio; in vbio_alloc()
702 vbio->vbio_offset = zio->io_offset; in vbio_alloc()
808 zio_t *zio = vbio->vbio_zio; in BIO_END_IO_PROTO() local
810 ASSERT(zio); in BIO_END_IO_PROTO()
814 zio->io_error = BIO_END_IO_ERROR(bio); in BIO_END_IO_PROTO()
816 zio->io_error = 0; in BIO_END_IO_PROTO()
818 zio->io_error = -(error); in BIO_END_IO_PROTO()
820 zio->io_error = EIO; in BIO_END_IO_PROTO()
822 ASSERT3U(zio->io_error, >=, 0); in BIO_END_IO_PROTO()
824 if (zio->io_error) in BIO_END_IO_PROTO()
825 vdev_disk_error(zio); in BIO_END_IO_PROTO()
839 if (zio->io_type == ZIO_TYPE_READ) in BIO_END_IO_PROTO()
840 abd_return_buf_copy(zio->io_abd, buf, zio->io_size); in BIO_END_IO_PROTO()
842 abd_return_buf(zio->io_abd, buf, zio->io_size); in BIO_END_IO_PROTO()
849 zio_delay_interrupt(zio); in BIO_END_IO_PROTO()
913 vdev_disk_io_rw(zio_t *zio) in vdev_disk_io_rw() argument
915 vdev_t *v = zio->io_vd; in vdev_disk_io_rw()
923 if (zio->io_offset + zio->io_size > bdev_capacity(bdev)) { in vdev_disk_io_rw()
924 vdev_dbgmsg(zio->io_vd, in vdev_disk_io_rw()
926 (u_longlong_t)zio->io_offset, in vdev_disk_io_rw()
927 (u_longlong_t)zio->io_size, in vdev_disk_io_rw()
932 if (!(zio->io_flags & (ZIO_FLAG_IO_RETRY | ZIO_FLAG_TRYHARD)) && in vdev_disk_io_rw()
946 abd_t *abd = zio->io_abd; in vdev_disk_io_rw()
947 if (!vdev_disk_check_pages(abd, zio->io_size, bdev)) { in vdev_disk_io_rw()
949 if (zio->io_type == ZIO_TYPE_READ) in vdev_disk_io_rw()
950 buf = abd_borrow_buf(zio->io_abd, zio->io_size); in vdev_disk_io_rw()
952 buf = abd_borrow_buf_copy(zio->io_abd, zio->io_size); in vdev_disk_io_rw()
958 abd = abd_get_from_buf(buf, zio->io_size); in vdev_disk_io_rw()
970 VERIFY(vdev_disk_check_pages(abd, zio->io_size, bdev)); in vdev_disk_io_rw()
974 vbio_t *vbio = vbio_alloc(zio, bdev, flags); in vdev_disk_io_rw()
975 if (abd != zio->io_abd) in vdev_disk_io_rw()
979 vbio_submit(vbio, abd, zio->io_size); in vdev_disk_io_rw()
1052 zio_t *zio = dr->dr_zio; in vdev_classic_dio_put() local
1057 if (zio) { in vdev_classic_dio_put()
1058 zio->io_error = error; in vdev_classic_dio_put()
1059 ASSERT3S(zio->io_error, >=, 0); in vdev_classic_dio_put()
1060 if (zio->io_error) in vdev_classic_dio_put()
1061 vdev_disk_error(zio); in vdev_classic_dio_put()
1063 zio_delay_interrupt(zio); in vdev_classic_dio_put()
1088 vdev_classic_bio_max_segs(zio_t *zio, int bio_size, uint64_t abd_offset) in vdev_classic_bio_max_segs() argument
1090 unsigned long nr_segs = abd_nr_pages_off(zio->io_abd, in vdev_classic_bio_max_segs()
1101 vdev_classic_physio(zio_t *zio) in vdev_classic_physio() argument
1103 vdev_t *v = zio->io_vd; in vdev_classic_physio()
1106 size_t io_size = zio->io_size; in vdev_classic_physio()
1107 uint64_t io_offset = zio->io_offset; in vdev_classic_physio()
1108 int rw = zio->io_type == ZIO_TYPE_READ ? READ : WRITE; in vdev_classic_physio()
1124 vdev_dbgmsg(zio->io_vd, in vdev_classic_physio()
1135 if (!(zio->io_flags & (ZIO_FLAG_IO_RETRY | ZIO_FLAG_TRYHARD)) && in vdev_classic_physio()
1136 zio->io_vd->vdev_failfast == B_TRUE) { in vdev_classic_physio()
1141 dr->dr_zio = zio; in vdev_classic_physio()
1173 nr_vecs = vdev_classic_bio_max_segs(zio, bio_size, abd_offset); in vdev_classic_physio()
1189 bio_size = abd_bio_map_off(dr->dr_bio[i], zio->io_abd, in vdev_classic_physio()
1221 zio_t *zio = bio->bi_private; in BIO_END_IO_PROTO() local
1223 zio->io_error = BIO_END_IO_ERROR(bio); in BIO_END_IO_PROTO()
1225 zio->io_error = -error; in BIO_END_IO_PROTO()
1228 if (zio->io_error && (zio->io_error == EOPNOTSUPP)) in BIO_END_IO_PROTO()
1229 zio->io_vd->vdev_nowritecache = B_TRUE; in BIO_END_IO_PROTO()
1232 ASSERT3S(zio->io_error, >=, 0); in BIO_END_IO_PROTO()
1233 if (zio->io_error) in BIO_END_IO_PROTO()
1234 vdev_disk_error(zio); in BIO_END_IO_PROTO()
1235 zio_interrupt(zio); in BIO_END_IO_PROTO()
1239 vdev_disk_io_flush(struct block_device *bdev, zio_t *zio) in vdev_disk_io_flush() argument
1253 bio->bi_private = zio; in vdev_disk_io_flush()
1263 zio_t *zio = bio->bi_private; in BIO_END_IO_PROTO() local
1265 zio->io_error = BIO_END_IO_ERROR(bio); in BIO_END_IO_PROTO()
1267 zio->io_error = -error; in BIO_END_IO_PROTO()
1270 if (zio->io_error) in BIO_END_IO_PROTO()
1271 vdev_disk_error(zio); in BIO_END_IO_PROTO()
1272 zio_interrupt(zio); in BIO_END_IO_PROTO()
1334 vdev_disk_io_trim(zio_t *zio) in vdev_disk_io_trim() argument
1339 zfs_bdev_handle_t *bdh = ((vdev_disk_t *)zio->io_vd->vdev_tsd)->vd_bdh; in vdev_disk_io_trim()
1340 sector_t sector = zio->io_offset >> 9; in vdev_disk_io_trim()
1341 sector_t nsects = zio->io_size >> 9; in vdev_disk_io_trim()
1343 if (zio->io_trim_flags & ZIO_TRIM_SECURE) in vdev_disk_io_trim()
1356 zio_interrupt(zio); in vdev_disk_io_trim()
1362 bio->bi_private = zio; in vdev_disk_io_trim()
1370 int (*vdev_disk_io_rw_fn)(zio_t *zio) = NULL;
1373 vdev_disk_io_start(zio_t *zio) in vdev_disk_io_start() argument
1375 vdev_t *v = zio->io_vd; in vdev_disk_io_start()
1384 zio->io_error = ENXIO; in vdev_disk_io_start()
1385 zio_interrupt(zio); in vdev_disk_io_start()
1397 zio->io_error = ENXIO; in vdev_disk_io_start()
1398 zio_interrupt(zio); in vdev_disk_io_start()
1402 switch (zio->io_type) { in vdev_disk_io_start()
1407 zio->io_error = SET_ERROR(ENXIO); in vdev_disk_io_start()
1408 zio_interrupt(zio); in vdev_disk_io_start()
1412 switch (zio->io_cmd) { in vdev_disk_io_start()
1419 zio->io_error = SET_ERROR(ENOTSUP); in vdev_disk_io_start()
1423 error = vdev_disk_io_flush(BDH_BDEV(vd->vd_bdh), zio); in vdev_disk_io_start()
1429 zio->io_error = error; in vdev_disk_io_start()
1434 zio->io_error = SET_ERROR(ENOTSUP); in vdev_disk_io_start()
1438 zio_execute(zio); in vdev_disk_io_start()
1442 error = vdev_disk_io_trim(zio); in vdev_disk_io_start()
1445 zio->io_error = error; in vdev_disk_io_start()
1446 zio_execute(zio); in vdev_disk_io_start()
1452 zio->io_target_timestamp = zio_handle_io_delay(zio); in vdev_disk_io_start()
1453 error = vdev_disk_io_rw_fn(zio); in vdev_disk_io_start()
1456 zio->io_error = error; in vdev_disk_io_start()
1457 zio_interrupt(zio); in vdev_disk_io_start()
1469 ASSERT3S(zio->io_type, ==, -1); in vdev_disk_io_start()
1472 zio->io_error = SET_ERROR(ENOTSUP); in vdev_disk_io_start()
1473 zio_interrupt(zio); in vdev_disk_io_start()
1481 vdev_disk_io_done(zio_t *zio) in vdev_disk_io_done() argument
1488 if (zio->io_error == EIO) { in vdev_disk_io_done()
1489 vdev_t *v = zio->io_vd; in vdev_disk_io_done()
1495 spa_async_request(zio->io_spa, SPA_ASYNC_REMOVE); in vdev_disk_io_done()