diff options
| -rw-r--r-- | drivers/ata/libata-scsi.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c index 79550908adcc..553488015e49 100644 --- a/drivers/ata/libata-scsi.c +++ b/drivers/ata/libata-scsi.c | |||
| @@ -2920,14 +2920,9 @@ void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd, | |||
| 2920 | args.done = done; | 2920 | args.done = done; |
| 2921 | 2921 | ||
| 2922 | switch(scsicmd[0]) { | 2922 | switch(scsicmd[0]) { |
| 2923 | /* no-op's, complete with success */ | 2923 | /* TODO: worth improving? */ |
| 2924 | case SYNCHRONIZE_CACHE: | 2924 | case FORMAT_UNIT: |
| 2925 | case REZERO_UNIT: | 2925 | ata_scsi_invalid_field(cmd, done); |
| 2926 | case SEEK_6: | ||
| 2927 | case SEEK_10: | ||
| 2928 | case TEST_UNIT_READY: | ||
| 2929 | case FORMAT_UNIT: /* FIXME: correct? */ | ||
| 2930 | ata_scsi_rbuf_fill(&args, ata_scsiop_noop); | ||
| 2931 | break; | 2926 | break; |
| 2932 | 2927 | ||
| 2933 | case INQUIRY: | 2928 | case INQUIRY: |
| @@ -2985,6 +2980,20 @@ void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd, | |||
| 2985 | done(cmd); | 2980 | done(cmd); |
| 2986 | break; | 2981 | break; |
| 2987 | 2982 | ||
| 2983 | /* if we reach this, then writeback caching is disabled, | ||
| 2984 | * turning this into a no-op. | ||
| 2985 | */ | ||
| 2986 | case SYNCHRONIZE_CACHE: | ||
| 2987 | /* fall through */ | ||
| 2988 | |||
| 2989 | /* no-op's, complete with success */ | ||
| 2990 | case REZERO_UNIT: | ||
| 2991 | case SEEK_6: | ||
| 2992 | case SEEK_10: | ||
| 2993 | case TEST_UNIT_READY: | ||
| 2994 | ata_scsi_rbuf_fill(&args, ata_scsiop_noop); | ||
| 2995 | break; | ||
| 2996 | |||
| 2988 | case SEND_DIAGNOSTIC: | 2997 | case SEND_DIAGNOSTIC: |
| 2989 | tmp8 = scsicmd[1] & ~(1 << 3); | 2998 | tmp8 = scsicmd[1] & ~(1 << 3); |
| 2990 | if ((tmp8 == 0x4) && (!scsicmd[3]) && (!scsicmd[4])) | 2999 | if ((tmp8 == 0x4) && (!scsicmd[3]) && (!scsicmd[4])) |
