@@ -1560,6 +1560,7 @@ static void scsi_complete(struct request *rq)
static int scsi_dispatch_cmd(struct scsi_cmnd *cmd)
{
struct Scsi_Host *host = cmd->device->host;
+ struct scsi_device *sdev = cmd->device;
int rtn = 0;
atomic_inc(&cmd->device->iorequest_cnt);
@@ -1608,6 +1609,13 @@ static int scsi_dispatch_cmd(struct scsi_cmnd *cmd)
goto done;
}
+ /* Bofore we queue this comman, check attribute use_192_bytes_for_3f */
+ if (cmd->cmnd[0] == MODE_SENSE && sdev->use_192_bytes_for_3f == 1 &&
+ cmd->cmnd[2] == 0x3f && cmd->cmnd[4] != 192) {
+ cmd->result = (DID_ABORT << 16);
+ goto done;
+ }
+
if (unlikely(host->shost_state == SHOST_DEL)) {
cmd->result = (DID_NO_CONNECT << 16);
goto done;