Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/mps/mps_sas.c
Show First 20 Lines • Show All 1,631 Lines • ▼ Show 20 Lines | mpssas_action_scsiio(struct mpssas_softc *sassc, union ccb *ccb) | ||||
csio = &ccb->csio; | csio = &ccb->csio; | ||||
KASSERT(csio->ccb_h.target_id < sassc->maxtargets, | KASSERT(csio->ccb_h.target_id < sassc->maxtargets, | ||||
("Target %d out of bounds in XPT_SCSI_IO\n", | ("Target %d out of bounds in XPT_SCSI_IO\n", | ||||
csio->ccb_h.target_id)); | csio->ccb_h.target_id)); | ||||
targ = &sassc->targets[csio->ccb_h.target_id]; | targ = &sassc->targets[csio->ccb_h.target_id]; | ||||
mps_dprint(sc, MPS_TRACE, "ccb %p target flag %x\n", ccb, targ->flags); | mps_dprint(sc, MPS_TRACE, "ccb %p target flag %x\n", ccb, targ->flags); | ||||
if (targ->handle == 0x0) { | if (targ->handle == 0x0) { | ||||
if (targ->flags & MPSSAS_TARGET_INDIAGRESET) { | |||||
mps_dprint(sc, MPS_ERROR, | |||||
"%s NULL handle for target %u in diag reset freezing queue\n", | |||||
__func__, csio->ccb_h.target_id); | |||||
ccb->ccb_h.status = CAM_REQUEUE_REQ | CAM_DEV_QFRZN; | |||||
xpt_freeze_devq(ccb->ccb_h.path, 1); | |||||
xpt_done(ccb); | |||||
return; | |||||
} | |||||
mps_dprint(sc, MPS_ERROR, "%s NULL handle for target %u\n", | mps_dprint(sc, MPS_ERROR, "%s NULL handle for target %u\n", | ||||
__func__, csio->ccb_h.target_id); | __func__, csio->ccb_h.target_id); | ||||
mpssas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE); | mpssas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE); | ||||
xpt_done(ccb); | xpt_done(ccb); | ||||
return; | return; | ||||
} | } | ||||
if (targ->flags & MPS_TARGET_FLAGS_RAID_COMPONENT) { | if (targ->flags & MPS_TARGET_FLAGS_RAID_COMPONENT) { | ||||
mps_dprint(sc, MPS_ERROR, "%s Raid component no SCSI IO " | mps_dprint(sc, MPS_ERROR, "%s Raid component no SCSI IO " | ||||
▲ Show 20 Lines • Show All 1,757 Lines • Show Last 20 Lines |