scsi: hpsa: correct scsi command status issue after reset
[ Upstream commit eeebce1862970653cdf5c01e98bc669edd8f529a ] Reviewed-by: Bader Ali - Saleh <bader.alisaleh@microsemi.com> Reviewed-by: Scott Teel <scott.teel@microsemi.com> Reviewed-by: Scott Benesh <scott.benesh@microsemi.com> Reviewed-by: Kevin Barnett <kevin.barnett@microsemi.com> Signed-off-by: Don Brace <don.brace@microsemi.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
1ea16aaf46
commit
ef4eab8316
@ -2153,6 +2153,8 @@ static int handle_ioaccel_mode2_error(struct ctlr_info *h,
|
||||
case IOACCEL2_SERV_RESPONSE_COMPLETE:
|
||||
switch (c2->error_data.status) {
|
||||
case IOACCEL2_STATUS_SR_TASK_COMP_GOOD:
|
||||
if (cmd)
|
||||
cmd->result = 0;
|
||||
break;
|
||||
case IOACCEL2_STATUS_SR_TASK_COMP_CHK_COND:
|
||||
cmd->result |= SAM_STAT_CHECK_CONDITION;
|
||||
@ -2320,8 +2322,10 @@ static void process_ioaccel2_completion(struct ctlr_info *h,
|
||||
|
||||
/* check for good status */
|
||||
if (likely(c2->error_data.serv_response == 0 &&
|
||||
c2->error_data.status == 0))
|
||||
c2->error_data.status == 0)) {
|
||||
cmd->result = 0;
|
||||
return hpsa_cmd_free_and_done(h, c, cmd);
|
||||
}
|
||||
|
||||
/*
|
||||
* Any RAID offload error results in retry which will use
|
||||
@ -5236,6 +5240,12 @@ static int hpsa_scsi_queue_command(struct Scsi_Host *sh, struct scsi_cmnd *cmd)
|
||||
}
|
||||
c = cmd_tagged_alloc(h, cmd);
|
||||
|
||||
/*
|
||||
* This is necessary because the SML doesn't zero out this field during
|
||||
* error recovery.
|
||||
*/
|
||||
cmd->result = 0;
|
||||
|
||||
/*
|
||||
* Call alternate submit routine for I/O accelerated commands.
|
||||
* Retries always go down the normal I/O path.
|
||||
|
Loading…
x
Reference in New Issue
Block a user