@@ -863,7 +863,7 @@ static void __ipr_scsi_eh_done(struct ipr_cmnd *ipr_cmd)
{
struct scsi_cmnd *scsi_cmd = ipr_cmd->scsi_cmd;
- scsi_cmd->result |= (DID_ERROR << 16);
+ scsi_cmd->status.combined |= (DID_ERROR << 16);
scsi_dma_unmap(ipr_cmd->scsi_cmd);
scsi_cmd->scsi_done(scsi_cmd);
@@ -6051,7 +6051,7 @@ static void __ipr_erp_done(struct ipr_cmnd *ipr_cmd)
u32 ioasc = be32_to_cpu(ipr_cmd->s.ioasa.hdr.ioasc);
if (IPR_IOASC_SENSE_KEY(ioasc) > 0) {
- scsi_cmd->result |= (DID_ERROR << 16);
+ scsi_cmd->status.combined |= (DID_ERROR << 16);
scmd_printk(KERN_ERR, scsi_cmd,
"Request Sense failed with IOASC: 0x%08X\n", ioasc);
} else {
@@ -6301,7 +6301,7 @@ static void ipr_gen_sense(struct ipr_cmnd *ipr_cmd)
if (ioasc >= IPR_FIRST_DRIVER_IOASC)
return;
- ipr_cmd->scsi_cmd->result = SAM_STAT_CHECK_CONDITION;
+ ipr_cmd->scsi_cmd->status.combined = SAM_STAT_CHECK_CONDITION;
if (ipr_is_vset_device(res) &&
ioasc == IPR_IOASC_MED_DO_NOT_REALLOC &&
@@ -6432,23 +6432,23 @@ static void ipr_erp_start(struct ipr_ioa_cfg *ioa_cfg,
switch (masked_ioasc) {
case IPR_IOASC_ABORTED_CMD_TERM_BY_HOST:
if (ipr_is_naca_model(res))
- scsi_cmd->result |= (DID_ABORT << 16);
+ scsi_cmd->status.combined |= (DID_ABORT << 16);
else
- scsi_cmd->result |= (DID_IMM_RETRY << 16);
+ scsi_cmd->status.combined |= (DID_IMM_RETRY << 16);
break;
case IPR_IOASC_IR_RESOURCE_HANDLE:
case IPR_IOASC_IR_NO_CMDS_TO_2ND_IOA:
- scsi_cmd->result |= (DID_NO_CONNECT << 16);
+ scsi_cmd->status.combined |= (DID_NO_CONNECT << 16);
break;
case IPR_IOASC_HW_SEL_TIMEOUT:
- scsi_cmd->result |= (DID_NO_CONNECT << 16);
+ scsi_cmd->status.combined |= (DID_NO_CONNECT << 16);
if (!ipr_is_naca_model(res))
res->needs_sync_complete = 1;
break;
case IPR_IOASC_SYNC_REQUIRED:
if (!res->in_erp)
res->needs_sync_complete = 1;
- scsi_cmd->result |= (DID_IMM_RETRY << 16);
+ scsi_cmd->status.combined |= (DID_IMM_RETRY << 16);
break;
case IPR_IOASC_MED_DO_NOT_REALLOC: /* prevent retries */
case IPR_IOASA_IR_DUAL_IOA_DISABLED:
@@ -6456,8 +6456,8 @@ static void ipr_erp_start(struct ipr_ioa_cfg *ioa_cfg,
* exception: do not set DID_PASSTHROUGH on CHECK CONDITION
* so SCSI mid-layer and upper layers handle it accordingly.
*/
- if (scsi_cmd->result != SAM_STAT_CHECK_CONDITION)
- scsi_cmd->result |= (DID_PASSTHROUGH << 16);
+ if (scsi_cmd->status.combined != SAM_STAT_CHECK_CONDITION)
+ scsi_cmd->status.combined |= (DID_PASSTHROUGH << 16);
break;
case IPR_IOASC_BUS_WAS_RESET:
case IPR_IOASC_BUS_WAS_RESET_BY_OTHER:
@@ -6467,12 +6467,12 @@ static void ipr_erp_start(struct ipr_ioa_cfg *ioa_cfg,
*/
if (!res->resetting_device)
scsi_report_bus_reset(ioa_cfg->host, scsi_cmd->device->channel);
- scsi_cmd->result |= (DID_ERROR << 16);
+ scsi_cmd->status.combined |= (DID_ERROR << 16);
if (!ipr_is_naca_model(res))
res->needs_sync_complete = 1;
break;
case IPR_IOASC_HW_DEV_BUS_STATUS:
- scsi_cmd->result |= IPR_IOASC_SENSE_STATUS(ioasc);
+ scsi_cmd->status.combined |= IPR_IOASC_SENSE_STATUS(ioasc);
if (IPR_IOASC_SENSE_STATUS(ioasc) == SAM_STAT_CHECK_CONDITION) {
if (!ipr_get_autosense(ipr_cmd)) {
if (!ipr_is_naca_model(res)) {
@@ -6489,13 +6489,13 @@ static void ipr_erp_start(struct ipr_ioa_cfg *ioa_cfg,
case IPR_IOASC_IR_NON_OPTIMIZED:
if (res->raw_mode) {
res->raw_mode = 0;
- scsi_cmd->result |= (DID_IMM_RETRY << 16);
+ scsi_cmd->status.combined |= (DID_IMM_RETRY << 16);
} else
- scsi_cmd->result |= (DID_ERROR << 16);
+ scsi_cmd->status.combined |= (DID_ERROR << 16);
break;
default:
if (IPR_IOASC_SENSE_KEY(ioasc) > RECOVERED_ERROR)
- scsi_cmd->result |= (DID_ERROR << 16);
+ scsi_cmd->status.combined |= (DID_ERROR << 16);
if (!ipr_is_vset_device(res) && !ipr_is_naca_model(res))
res->needs_sync_complete = 1;
break;
@@ -6571,7 +6571,7 @@ static int ipr_queuecommand(struct Scsi_Host *shost,
ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata;
- scsi_cmd->result = (DID_OK << 16);
+ scsi_cmd->status.combined = (DID_OK << 16);
res = scsi_cmd->device->hostdata;
if (ipr_is_gata(res) && res->sata_port) {
@@ -6684,7 +6684,7 @@ static int ipr_queuecommand(struct Scsi_Host *shost,
err_nodev:
spin_lock_irqsave(hrrq->lock, hrrq_flags);
memset(scsi_cmd->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE);
- scsi_cmd->result = (DID_NO_CONNECT << 16);
+ scsi_cmd->status.combined = (DID_NO_CONNECT << 16);
scsi_cmd->scsi_done(scsi_cmd);
spin_unlock_irqrestore(hrrq->lock, hrrq_flags);
return 0;
An explanation of the purpose of this patch is available in the patch "scsi: Introduce the scsi_status union". Cc: Brian King <brking@us.ibm.com> Signed-off-by: Bart Van Assche <bvanassche@acm.org> --- drivers/scsi/ipr.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-)