This SILI bit (suppress incorrect length indicator) is defined only for SSC READ(6) and READ(16) commands. For other device types bit is part of LBA field. In the current implementation, it is not checked whether the logical unit is a SSC device.
Added code for checking the LU type is SSC for SILI bit in READ_6 and READ_16 CDB Signed-off-by: Nagalakshmi Nandigama <[email protected]> CC: <[email protected]> --- diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c index 0c3ced7..266bb14 100644 --- a/drivers/message/fusion/mptscsih.c +++ b/drivers/message/fusion/mptscsih.c @@ -827,13 +827,16 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr) * DID_SOFT_ERROR is set. */ if (ioc->bus_type == SPI) { - if ((pScsiReq->CDB[0] == READ_6 && ((pScsiReq->CDB[1] & 0x02) == 0)) || - pScsiReq->CDB[0] == READ_10 || - pScsiReq->CDB[0] == READ_12 || - (pScsiReq->CDB[0] == READ_16 && - ((pScsiReq->CDB[1] & 0x02) == 0)) || - pScsiReq->CDB[0] == VERIFY || - pScsiReq->CDB[0] == VERIFY_16) { + if ((pScsiReq->CDB[0] == READ_6 && + ((pScsiReq->CDB[1] & 0x02) == 0) && + (sc->device->type == TYPE_TAPE)) || + pScsiReq->CDB[0] == READ_10 || + pScsiReq->CDB[0] == READ_12 || + (pScsiReq->CDB[0] == READ_16 && + ((pScsiReq->CDB[1] & 0x02) == 0) && + (sc->device->type == TYPE_TAPE)) || + pScsiReq->CDB[0] == VERIFY || + pScsiReq->CDB[0] == VERIFY_16) { if (scsi_bufflen(sc) != xfer_cnt) { sc->result = -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
