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

Reply via email to