diff options
author | scottl <scottl@FreeBSD.org> | 2014-07-01 10:51:20 +0000 |
---|---|---|
committer | scottl <scottl@FreeBSD.org> | 2014-07-01 10:51:20 +0000 |
commit | 6d43ec486c44c417062d66746ab4dc6a91acfdb0 (patch) | |
tree | 2e584c43bf8627757c0e053a71690d817496f00c /sys/dev | |
parent | 24f1528d0b11955279622c3f86431f4b83f6af60 (diff) | |
download | FreeBSD-src-6d43ec486c44c417062d66746ab4dc6a91acfdb0.zip FreeBSD-src-6d43ec486c44c417062d66746ab4dc6a91acfdb0.tar.gz |
Don't overload the CCB status field within the driver.
Obtained from: Netflix, Inc.
MFC after: 2 days
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/mps/mps_sas.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/dev/mps/mps_sas.c b/sys/dev/mps/mps_sas.c index e961b3b..83c5c3b 100644 --- a/sys/dev/mps/mps_sas.c +++ b/sys/dev/mps/mps_sas.c @@ -1852,7 +1852,7 @@ mpssas_action_scsiio(struct mpssas_softc *sassc, union ccb *ccb) * the I/O to the IR volume itself. */ if (sc->WD_valid_config) { - if (mpssas_get_ccbstatus(ccb) != MPS_WD_RETRY) { + if (ccb->ccb_h.sim_priv.entries[0].field == MPS_WD_RETRY) { mpssas_direct_drive_io(sassc, cm, ccb); } else { mpssas_set_ccbstatus(ccb, CAM_REQ_INPROG); @@ -2219,10 +2219,11 @@ mpssas_scsiio_complete(struct mps_softc *sc, struct mps_command *cm) */ if (cm->cm_flags & MPS_CM_FLAGS_DD_IO) { mps_free_command(sc, cm); - mpssas_set_ccbstatus(ccb, MPS_WD_RETRY); + ccb->ccb_h.sim_priv.entries[0].field = MPS_WD_RETRY; mpssas_action_scsiio(sassc, ccb); return; - } + } else + ccb->ccb_h.sim_priv.entries[0].field = 0; switch (le16toh(rep->IOCStatus) & MPI2_IOCSTATUS_MASK) { case MPI2_IOCSTATUS_SCSI_DATA_UNDERRUN: |