Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c
Show First 20 Lines • Show All 977 Lines • ▼ Show 20 Lines | if (reqp->retries == 0) { | ||||
mtx_lock(&sc->hs_lock); | mtx_lock(&sc->hs_lock); | ||||
xpt_print(ccb->ccb_h.path, | xpt_print(ccb->ccb_h.path, | ||||
"%u: IO timed out (req=0x%p), wait for another %u secs.\n", | "%u: IO timed out (req=0x%p), wait for another %u secs.\n", | ||||
ticks, reqp, ccb->ccb_h.timeout / 1000); | ticks, reqp, ccb->ccb_h.timeout / 1000); | ||||
cam_error_print(ccb, CAM_ESF_ALL, CAM_EPF_ALL); | cam_error_print(ccb, CAM_ESF_ALL, CAM_EPF_ALL); | ||||
mtx_unlock(&sc->hs_lock); | mtx_unlock(&sc->hs_lock); | ||||
reqp->retries++; | reqp->retries++; | ||||
callout_reset(&reqp->callout, | callout_reset_sbt(&reqp->callout, SBT_1MS * ccb->ccb_h.timeout, | ||||
(ccb->ccb_h.timeout * hz) / 1000, | 0, storvsc_timeout, reqp, 0); | ||||
storvsc_timeout, reqp); | |||||
#if HVS_TIMEOUT_TEST | #if HVS_TIMEOUT_TEST | ||||
storvsc_timeout_test(reqp, SEND_DIAGNOSTIC, 0); | storvsc_timeout_test(reqp, SEND_DIAGNOSTIC, 0); | ||||
#endif | #endif | ||||
return; | return; | ||||
} | } | ||||
mtx_lock(&sc->hs_lock); | mtx_lock(&sc->hs_lock); | ||||
xpt_print(ccb->ccb_h.path, | xpt_print(ccb->ccb_h.path, | ||||
▲ Show 20 Lines • Show All 156 Lines • ▼ Show 20 Lines | case XPT_IMMED_NOTIFY: { | ||||
bzero(reqp, sizeof(struct hv_storvsc_request)); | bzero(reqp, sizeof(struct hv_storvsc_request)); | ||||
reqp->softc = sc; | reqp->softc = sc; | ||||
ccb->ccb_h.status |= CAM_SIM_QUEUED; | ccb->ccb_h.status |= CAM_SIM_QUEUED; | ||||
create_storvsc_request(ccb, reqp); | create_storvsc_request(ccb, reqp); | ||||
if (ccb->ccb_h.timeout != CAM_TIME_INFINITY) { | if (ccb->ccb_h.timeout != CAM_TIME_INFINITY) { | ||||
callout_init(&reqp->callout, CALLOUT_MPSAFE); | callout_init(&reqp->callout, CALLOUT_MPSAFE); | ||||
callout_reset(&reqp->callout, | callout_reset_sbt(&reqp->callout, | ||||
(ccb->ccb_h.timeout * hz) / 1000, | SBT_1MS * ccb->ccb_h.timeout, 0, | ||||
storvsc_timeout, reqp); | storvsc_timeout, reqp, 0); | ||||
#if HVS_TIMEOUT_TEST | #if HVS_TIMEOUT_TEST | ||||
cv_init(&reqp->event.cv, "storvsc timeout cv"); | cv_init(&reqp->event.cv, "storvsc timeout cv"); | ||||
mtx_init(&reqp->event.mtx, "storvsc timeout mutex", | mtx_init(&reqp->event.mtx, "storvsc timeout mutex", | ||||
NULL, MTX_DEF); | NULL, MTX_DEF); | ||||
switch (reqp->vstor_packet.vm_srb.cdb[0]) { | switch (reqp->vstor_packet.vm_srb.cdb[0]) { | ||||
case MODE_SELECT_10: | case MODE_SELECT_10: | ||||
case SEND_DIAGNOSTIC: | case SEND_DIAGNOSTIC: | ||||
/* To have timer send the request. */ | /* To have timer send the request. */ | ||||
▲ Show 20 Lines • Show All 223 Lines • Show Last 20 Lines |