diff options
| author | Warner Losh <imp@FreeBSD.org> | 2022-01-25 23:23:03 +0000 |
|---|---|---|
| committer | Warner Losh <imp@FreeBSD.org> | 2022-01-26 02:15:46 +0000 |
| commit | e35816c1c9094804f5a4b5f7b34f920f78cff5bd (patch) | |
| tree | 2ae3c3dfc9dafda32d06c3edb0c1cbb65fc15eb4 /sys/dev/mpr | |
| parent | 5fcb5ae8dcb296fd65430800a813bf1d7143d31f (diff) | |
Diffstat (limited to 'sys/dev/mpr')
| -rw-r--r-- | sys/dev/mpr/mpr_sas.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/dev/mpr/mpr_sas.c b/sys/dev/mpr/mpr_sas.c index 4a8dccb18538..d40900e03108 100644 --- a/sys/dev/mpr/mpr_sas.c +++ b/sys/dev/mpr/mpr_sas.c @@ -1864,6 +1864,15 @@ mprsas_action_scsiio(struct mprsas_softc *sassc, union ccb *ccb) targ = &sassc->targets[csio->ccb_h.target_id]; mpr_dprint(sc, MPR_TRACE, "ccb %p target flag %x\n", ccb, targ->flags); if (targ->handle == 0x0) { + if (targ->flags & MPRSAS_TARGET_INDIAGRESET) { + mpr_dprint(sc, MPR_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; + } mpr_dprint(sc, MPR_ERROR, "%s NULL handle for target %u\n", __func__, csio->ccb_h.target_id); mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE); |
