Lines Matching refs:vd

179 vioscsi_dev_abort(vioscsi_dev_t *vd)  in vioscsi_dev_abort()  argument
182 list_t *l = &vd->vd_reqs; in vioscsi_dev_abort()
184 mutex_enter(&vd->vd_lock); in vioscsi_dev_abort()
186 (void) vioscsi_tmf(vd->vd_sc, VIRTIO_SCSI_T_TMF_ABORT_TASK, in vioscsi_dev_abort()
189 mutex_exit(&vd->vd_lock); in vioscsi_dev_abort()
195 vioscsi_dev_t *vd = arg; in vioscsi_dev_timeout() local
196 vioscsi_softc_t *sc = vd->vd_sc; in vioscsi_dev_timeout()
202 mutex_enter(&vd->vd_lock); in vioscsi_dev_timeout()
203 if ((tid = vd->vd_timeout) == 0) { in vioscsi_dev_timeout()
207 mutex_exit(&vd->vd_lock); in vioscsi_dev_timeout()
210 vd->vd_timeout = 0; in vioscsi_dev_timeout()
213 l = &vd->vd_reqs; in vioscsi_dev_timeout()
241 vd->vd_timeout = timeout(vioscsi_dev_timeout, vd, vioscsi_hz); in vioscsi_dev_timeout()
243 mutex_exit(&vd->vd_lock); in vioscsi_dev_timeout()
338 vioscsi_dev_t *vd = scsi_device_hba_private_get(sd); in vioscsi_tran_start() local
357 req->vr_dev = vd; in vioscsi_tran_start()
359 req->vr_target = vd->vd_target; in vioscsi_tran_start()
360 req->vr_lun = vd->vd_lun; in vioscsi_tran_start()
438 mutex_enter(&vd->vd_lock); in vioscsi_tran_start()
439 if (vd->vd_num_cmd >= vd->vd_max_cmd) { in vioscsi_tran_start()
440 mutex_exit(&vd->vd_lock); in vioscsi_tran_start()
443 vd->vd_num_cmd++; in vioscsi_tran_start()
454 list_t *l = &vd->vd_reqs; in vioscsi_tran_start()
472 if (vd->vd_timeout == 0) { in vioscsi_tran_start()
473 vd->vd_timeout = timeout(vioscsi_dev_timeout, vd, in vioscsi_tran_start()
478 mutex_exit(&vd->vd_lock); in vioscsi_tran_start()
480 vioscsi_start(vd->vd_sc, req); in vioscsi_tran_start()
488 vioscsi_dev_t *vd; in vioscsi_tran_abort() local
493 ((vd = scsi_device_hba_private_get(sd)) == NULL)) { in vioscsi_tran_abort()
500 vioscsi_dev_abort(vd); in vioscsi_tran_abort()
504 return (vioscsi_req_abort(vd->vd_sc, req) ? 1 : 0); in vioscsi_tran_abort()
640 vioscsi_dev_t *vd; in vioscsi_tran_reset() local
644 ((vd = scsi_device_hba_private_get(sd)) == NULL)) { in vioscsi_tran_reset()
650 if (vioscsi_lun_reset(vd->vd_sc, vd->vd_target, vd->vd_lun)) { in vioscsi_tran_reset()
655 if (vioscsi_target_reset(vd->vd_sc, vd->vd_target)) { in vioscsi_tran_reset()
797 vioscsi_dev_t *vd; in vioscsi_cmd_handler() local
827 if ((vd = req->vr_dev) != NULL) { in vioscsi_cmd_handler()
828 mutex_enter(&vd->vd_lock); in vioscsi_cmd_handler()
829 vd->vd_num_cmd--; in vioscsi_cmd_handler()
830 list_remove(&vd->vd_reqs, req); in vioscsi_cmd_handler()
831 mutex_exit(&vd->vd_lock); in vioscsi_cmd_handler()
930 vioscsi_dev_t *vd; in vioscsi_tran_tgt_init() local
944 vd = kmem_zalloc(sizeof (*vd), KM_SLEEP); in vioscsi_tran_tgt_init()
945 list_create(&vd->vd_reqs, sizeof (vioscsi_request_t), in vioscsi_tran_tgt_init()
947 mutex_init(&vd->vd_lock, NULL, MUTEX_DRIVER, in vioscsi_tran_tgt_init()
950 vd->vd_target = (uint8_t)target; in vioscsi_tran_tgt_init()
951 vd->vd_lun = (uint16_t)lun; in vioscsi_tran_tgt_init()
952 vd->vd_sc = sc; in vioscsi_tran_tgt_init()
953 vd->vd_sd = sd; in vioscsi_tran_tgt_init()
954 vd->vd_max_cmd = sc->vs_cmd_per_lun; in vioscsi_tran_tgt_init()
955 vd->vd_num_cmd = 0; in vioscsi_tran_tgt_init()
957 scsi_device_hba_private_set(sd, vd); in vioscsi_tran_tgt_init()
960 list_insert_tail(&sc->vs_devs, vd); in vioscsi_tran_tgt_init()
970 vioscsi_dev_t *vd = scsi_device_hba_private_get(sd); in vioscsi_tran_tgt_free() local
971 vioscsi_softc_t *sc = vd->vd_sc; in vioscsi_tran_tgt_free()
976 mutex_enter(&vd->vd_lock); in vioscsi_tran_tgt_free()
977 tid = vd->vd_timeout; in vioscsi_tran_tgt_free()
978 vd->vd_timeout = 0; in vioscsi_tran_tgt_free()
979 mutex_exit(&vd->vd_lock); in vioscsi_tran_tgt_free()
986 list_remove(&sc->vs_devs, vd); in vioscsi_tran_tgt_free()
989 list_destroy(&vd->vd_reqs); in vioscsi_tran_tgt_free()
990 mutex_destroy(&vd->vd_lock); in vioscsi_tran_tgt_free()
991 kmem_free(vd, sizeof (*vd)); in vioscsi_tran_tgt_free()
1043 vioscsi_dev_t *vd; in vioscsi_rescan_luns() local
1050 for (vd = list_head(l); vd != NULL; vd = list_next(l, vd)) { in vioscsi_rescan_luns()
1051 if (!vd->vd_rescan) { in vioscsi_rescan_luns()
1055 vd->vd_rescan = B_FALSE; in vioscsi_rescan_luns()
1056 (void) snprintf(addr, sizeof (addr), "%x", vd->vd_target); in vioscsi_rescan_luns()
1065 vioscsi_dev_t *vd; in vioscsi_lun_changed() local
1070 for (vd = list_head(l); vd != NULL; vd = list_next(l, vd)) { in vioscsi_lun_changed()
1071 if ((vd->vd_target == target) && (vd->vd_lun == 0)) { in vioscsi_lun_changed()
1072 vd->vd_rescan = B_TRUE; in vioscsi_lun_changed()