Commit 45394145 authored by Jeff Garzik's avatar Jeff Garzik

[libata] Slightly improved no-op REQUEST SENSE, SEND DIAGNOSTIC

A few pedantic apps care about missing or lame "mandatory" SCSI
commands, so

REQUEST SENSE -- as we autosense, R.S. just returns zeroes

SEND DIAGNOSTIC -- our default (no-op) self-test succeeds, all
		   other requests for testing fail.
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent ad355b46
...@@ -2912,6 +2912,7 @@ void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd, ...@@ -2912,6 +2912,7 @@ void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd,
{ {
struct ata_scsi_args args; struct ata_scsi_args args;
const u8 *scsicmd = cmd->cmnd; const u8 *scsicmd = cmd->cmnd;
u8 tmp8;
args.dev = dev; args.dev = dev;
args.id = dev->id; args.id = dev->id;
...@@ -2926,7 +2927,6 @@ void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd, ...@@ -2926,7 +2927,6 @@ void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd,
case SEEK_10: case SEEK_10:
case TEST_UNIT_READY: case TEST_UNIT_READY:
case FORMAT_UNIT: /* FIXME: correct? */ case FORMAT_UNIT: /* FIXME: correct? */
case SEND_DIAGNOSTIC: /* FIXME: correct? */
ata_scsi_rbuf_fill(&args, ata_scsiop_noop); ata_scsi_rbuf_fill(&args, ata_scsiop_noop);
break; break;
...@@ -2979,8 +2979,19 @@ void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd, ...@@ -2979,8 +2979,19 @@ void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd,
ata_scsi_rbuf_fill(&args, ata_scsiop_report_luns); ata_scsi_rbuf_fill(&args, ata_scsiop_report_luns);
break; break;
/* mandatory commands we haven't implemented yet */
case REQUEST_SENSE: case REQUEST_SENSE:
ata_scsi_set_sense(cmd, 0, 0, 0);
cmd->result = (DRIVER_SENSE << 24);
done(cmd);
break;
case SEND_DIAGNOSTIC:
tmp8 = scsicmd[1] & ~(1 << 3);
if ((tmp8 == 0x4) && (!scsicmd[3]) && (!scsicmd[4]))
ata_scsi_rbuf_fill(&args, ata_scsiop_noop);
else
ata_scsi_invalid_field(cmd, done);
break;
/* all other commands */ /* all other commands */
default: default:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment