Page MenuHomeFreeBSD

D34017.diff
No OneTemporary

D34017.diff

diff --git a/sys/dev/mpr/mpr_sas.c b/sys/dev/mpr/mpr_sas.c
--- a/sys/dev/mpr/mpr_sas.c
+++ b/sys/dev/mpr/mpr_sas.c
@@ -1864,6 +1864,15 @@
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);
diff --git a/sys/dev/mps/mps_sas.c b/sys/dev/mps/mps_sas.c
--- a/sys/dev/mps/mps_sas.c
+++ b/sys/dev/mps/mps_sas.c
@@ -1637,6 +1637,15 @@
targ = &sassc->targets[csio->ccb_h.target_id];
mps_dprint(sc, MPS_TRACE, "ccb %p target flag %x\n", ccb, targ->flags);
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",
__func__, csio->ccb_h.target_id);
mpssas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE);

File Metadata

Mime Type
text/plain
Expires
Tue, Jan 28, 3:18 AM (10 h, 39 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16243470
Default Alt Text
D34017.diff (1 KB)

Event Timeline