summaryrefslogtreecommitdiff
path: root/include/scsi
diff options
context:
space:
mode:
authorDouglas Gilbert <dgilbert@interlog.com>2018-03-07 06:19:49 +0300
committerMartin K. Petersen <martin.petersen@oracle.com>2018-03-13 04:55:24 +0300
commit1875ede02ed5e176a18dccbca84abc28d5b3e141 (patch)
treec7a0a73e81d05167239453a135f6b85859552297 /include/scsi
parent217c55cd0cea8f03a5ef2faf68681bb10ae22573 (diff)
downloadlinux-1875ede02ed5e176a18dccbca84abc28d5b3e141.tar.xz
scsi: core: Make SCSI Status CONDITION MET equivalent to GOOD
The SCSI PRE-FETCH (10 or 16) command is present both on hard disks and some SSDs. It is useful when the address of the next block(s) to be read is known but it is not following the LBA of the current READ (so read-ahead won't help). It returns two "good" SCSI Status values. If the requested blocks have fitted (or will most likely fit (when the IMMED bit is set)) into the disk's cache, it returns CONDITION MET. If it didn't (or will not) fit then it returns GOOD status. The goal of this patch is to stop the SCSI subsystem treating the CONDITION MET SCSI status as an error. The current state makes the PRE-FETCH command effectively unusable via pass-throughs. Signed-off-by: Douglas Gilbert <dgilbert@interlog.com> Reviewed-by: Bart Van Assche <bart.vanassche@wdc.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'include/scsi')
-rw-r--r--include/scsi/scsi.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/scsi/scsi.h b/include/scsi/scsi.h
index cb85eddb47ea..eb7853c1a23b 100644
--- a/include/scsi/scsi.h
+++ b/include/scsi/scsi.h
@@ -47,6 +47,8 @@ static inline int scsi_status_is_good(int status)
*/
status &= 0xfe;
return ((status == SAM_STAT_GOOD) ||
+ (status == SAM_STAT_CONDITION_MET) ||
+ /* Next two "intermediate" statuses are obsolete in SAM-4 */
(status == SAM_STAT_INTERMEDIATE) ||
(status == SAM_STAT_INTERMEDIATE_CONDITION_MET) ||
/* FIXME: this is obsolete in SAM-3 */