Commit 71d5d7e9 authored by James Bottomley's avatar James Bottomley Committed by James Bottomley

[PATCH] Correct typo in linux/scsi/scsi.h and introduce new

I notice we seem to have a typo in the SAM_ status codes (they say
IMMEDIATE where they mean INTERMEDIATE).

I've also introduced a new macro who's job is to return true if any of
the possible good return codes is found.  This means

SAM_STAT_GOOD
SAM_STAT_INTERMEDIATE
SAM_STAT_INTERMEDIATE_CONDITION_MET

and for now

SAM_STAT_COMMAND_TERMINATED

By and large, this is currently irrelevant to us, since we don't use
linked commands and I've never met a device using COMMAND TERMINATED,
but it may help us in the future.
parent e87166db
...@@ -111,14 +111,39 @@ extern const unsigned char scsi_command_size[8]; ...@@ -111,14 +111,39 @@ extern const unsigned char scsi_command_size[8];
#define SAM_STAT_CHECK_CONDITION 0x02 #define SAM_STAT_CHECK_CONDITION 0x02
#define SAM_STAT_CONDITION_MET 0x04 #define SAM_STAT_CONDITION_MET 0x04
#define SAM_STAT_BUSY 0x08 #define SAM_STAT_BUSY 0x08
#define SAM_STAT_IMMEDIATE 0x10 #define SAM_STAT_INTERMEDIATE 0x10
#define SAM_STAT_IMMEDIATE_CONDITION_MET 0x14 #define SAM_STAT_INTERMEDIATE_CONDITION_MET 0x14
#define SAM_STAT_RESERVATION_CONFLICT 0x18 #define SAM_STAT_RESERVATION_CONFLICT 0x18
#define SAM_STAT_COMMAND_TERMINATED 0x22 /* obsolete in SAM-3 */ #define SAM_STAT_COMMAND_TERMINATED 0x22 /* obsolete in SAM-3 */
#define SAM_STAT_TASK_SET_FULL 0x28 #define SAM_STAT_TASK_SET_FULL 0x28
#define SAM_STAT_ACA_ACTIVE 0x30 #define SAM_STAT_ACA_ACTIVE 0x30
#define SAM_STAT_TASK_ABORTED 0x40 #define SAM_STAT_TASK_ABORTED 0x40
/** scsi_status_is_good - check the status return.
*
* @status: the status passed up from the driver (including host and
* driver components)
*
* This returns true for known good conditions that may be treated as
* command completed normally
*/
static inline int scsi_status_is_good(int status)
{
/* mask out the relevant bits
*
* FIXME: bit0 is listed as reserved in SCSI-2, but is
* significant in SCSI-3. For now, we follow the SCSI-2
* behaviour and ignore reserved bits. */
status &= 0xfe;
return ((status & SAM_STAT_GOOD)
|| (status & SAM_STAT_INTERMEDIATE)
|| (status & SAM_STAT_INTERMEDIATE_CONDITION_MET)
/* FIXME: this is obsolete in SAM-3 */
|| (status & SAM_STAT_COMMAND_TERMINATED));
}
/* /*
* Status codes. These are deprecated as they are shifted 1 bit right * Status codes. These are deprecated as they are shifted 1 bit right
* from those found in the SCSI standards. This causes confusion for * from those found in the SCSI standards. This causes confusion for
......
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