@@ -254,7 +254,7 @@ static int blk_complete_sghdr_rq(struct request *rq, struct sg_io_hdr *hdr,
*/
hdr->status = req->result & 0xff;
hdr->masked_status = status_byte(req->result);
- hdr->msg_status = msg_byte(req->result);
+ hdr->msg_status = COMMAND_COMPLETE;
hdr->host_status = host_byte(req->result);
hdr->driver_status = 0;
if (hdr->status == SAM_STAT_CHECK_CONDITION)
@@ -741,12 +741,6 @@ static enum scsi_disposition scsi_eh_completed_normally(struct scsi_cmnd *scmd)
if (host_byte(scmd->result) != DID_OK)
return FAILED;
- /*
- * next, check the message byte.
- */
- if (msg_byte(scmd->result) != COMMAND_COMPLETE)
- return FAILED;
-
/*
* now, check the status byte to see if this indicates
* anything special.
@@ -1766,8 +1760,7 @@ int scsi_noretry_cmd(struct scsi_cmnd *scmd)
case DID_PARITY:
return (scmd->request->cmd_flags & REQ_FAILFAST_DEV);
case DID_ERROR:
- if (msg_byte(scmd->result) == COMMAND_COMPLETE &&
- status_byte(scmd->result) == RESERVATION_CONFLICT)
+ if (status_byte(scmd->result) == RESERVATION_CONFLICT)
return 0;
fallthrough;
case DID_SOFT_ERROR:
@@ -1883,8 +1876,7 @@ enum scsi_disposition scsi_decide_disposition(struct scsi_cmnd *scmd)
*/
return SUCCESS;
case DID_ERROR:
- if (msg_byte(scmd->result) == COMMAND_COMPLETE &&
- status_byte(scmd->result) == RESERVATION_CONFLICT)
+ if (status_byte(scmd->result) == RESERVATION_CONFLICT)
/*
* execute reservation conflict processing code
* lower down
@@ -1912,12 +1904,6 @@ enum scsi_disposition scsi_decide_disposition(struct scsi_cmnd *scmd)
return FAILED;
}
- /*
- * next, check the message byte.
- */
- if (msg_byte(scmd->result) != COMMAND_COMPLETE)
- return FAILED;
-
/*
* check the status byte to see if this indicates anything special.
*/
@@ -1376,7 +1376,7 @@ sg_rq_end_io(struct request *rq, blk_status_t status)
srp->header.status = 0xff & result;
srp->header.masked_status = status_byte(result);
- srp->header.msg_status = msg_byte(result);
+ srp->header.msg_status = COMMAND_COMPLETE;
srp->header.host_status = host_byte(result);
srp->header.driver_status = driver_byte(result);
if ((sdp->sgdebug > 0) &&
@@ -224,7 +224,7 @@ static void scsiback_print_status(char *sense_buffer, int errors,
pr_err("[%s:%d] cmnd[0]=%02x -> st=%02x msg=%02x host=%02x\n",
tpg->tport->tport_name, pending_req->v2p->lun,
- pending_req->cmnd[0], status_byte(errors), msg_byte(errors),
+ pending_req->cmnd[0], status_byte(errors), COMMAND_COMPLETE,
host_byte(errors));
}
@@ -209,11 +209,10 @@ enum scsi_disposition {
* These are set by:
*
* status byte = set from target device
- * msg_byte = return status from host adapter itself.
+ * msg_byte (unused)
* host_byte = set by low-level driver to indicate status.
*/
#define status_byte(result) (((result) >> 1) & 0x7f)
-#define msg_byte(result) (((result) >> 8) & 0xff)
#define host_byte(result) (((result) >> 16) & 0xff)
#define sense_class(sense) (((sense) >> 4) & 0x7)
@@ -321,11 +321,6 @@ static inline unsigned char get_status_byte(struct scsi_cmnd *cmd)
return cmd->result & 0xff;
}
-static inline void set_msg_byte(struct scsi_cmnd *cmd, char status)
-{
- cmd->result = (cmd->result & 0xffff00ff) | (status << 8);
-}
-
static inline void set_host_byte(struct scsi_cmnd *cmd, char status)
{
cmd->result = (cmd->result & 0xff00ffff) | (status << 16);
The message byte is now unused, so we can drop the helper to set the message byte and the check for message bytes during error recovery. Signed-off-by: Hannes Reinecke <hare@suse.de> --- block/scsi_ioctl.c | 2 +- drivers/scsi/scsi_error.c | 18 ++---------------- drivers/scsi/sg.c | 2 +- drivers/xen/xen-scsiback.c | 2 +- include/scsi/scsi.h | 3 +-- include/scsi/scsi_cmnd.h | 5 ----- 6 files changed, 6 insertions(+), 26 deletions(-)