| 978 | } |
| 979 | |
| 980 | void |
| 981 | vdev_queue_io_done(zio_t *zio) |
| 982 | { |
| 983 | vdev_queue_t *vq = &zio->io_vd->vdev_queue; |
| 984 | zio_t *nio; |
| 985 | |
| 986 | mutex_enter(&vq->vq_lock); |
| 987 | |
| 988 | vdev_queue_pending_remove(vq, zio); |
| 989 | |
| 990 | zio->io_delta = gethrtime() - zio->io_timestamp; |
| 991 | vq->vq_io_complete_ts = gethrtime(); |
| 992 | vq->vq_io_delta_ts = vq->vq_io_complete_ts - zio->io_timestamp; |
| 993 | |
| 994 | while ((nio = vdev_queue_io_to_issue(vq)) != NULL) { |
| 995 | mutex_exit(&vq->vq_lock); |
| 996 | if (nio->io_done == vdev_queue_agg_io_done) { |
| 997 | zio_nowait(nio); |
| 998 | } else { |
| 999 | zio_vdev_io_reissue(nio); |
| 1000 | zio_execute(nio); |
| 1001 | } |
| 1002 | mutex_enter(&vq->vq_lock); |
| 1003 | } |
| 1004 | |
| 1005 | mutex_exit(&vq->vq_lock); |
| 1006 | } |
| 1007 | |
| 1008 | void |
| 1009 | vdev_queue_change_io_priority(zio_t *zio, zio_priority_t priority) |
no test coverage detected