An explanation of the purpose of this patch is available in the patch "scsi: Introduce the scsi_status union". Cc: Nilesh Javali <njavali@xxxxxxxxxxx> Cc: Manish Rangankar <mrangankar@xxxxxxxxxxx> Cc: GR-QLogic-Storage-Upstream@xxxxxxxxxxx Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx> --- drivers/scsi/qla4xxx/ql4_bsg.c | 76 +++++++++++++++++----------------- drivers/scsi/qla4xxx/ql4_isr.c | 32 +++++++------- drivers/scsi/qla4xxx/ql4_os.c | 14 +++---- 3 files changed, 61 insertions(+), 61 deletions(-) diff --git a/drivers/scsi/qla4xxx/ql4_bsg.c b/drivers/scsi/qla4xxx/ql4_bsg.c index c447a9d598a1..8f1c8879a6e9 100644 --- a/drivers/scsi/qla4xxx/ql4_bsg.c +++ b/drivers/scsi/qla4xxx/ql4_bsg.c @@ -55,17 +55,17 @@ qla4xxx_read_flash(struct bsg_job *bsg_job) rval = qla4xxx_get_flash(ha, flash_dma, offset, length); if (rval) { ql4_printk(KERN_ERR, ha, "%s: get flash failed\n", __func__); - bsg_reply->result = DID_ERROR << 16; + bsg_reply->status.combined = DID_ERROR << 16; rval = -EIO; } else { bsg_reply->reply_payload_rcv_len = sg_copy_from_buffer(bsg_job->reply_payload.sg_list, bsg_job->reply_payload.sg_cnt, flash, length); - bsg_reply->result = DID_OK << 16; + bsg_reply->status.combined = DID_OK << 16; } - bsg_job_done(bsg_job, bsg_reply->result, + bsg_job_done(bsg_job, bsg_reply->status.combined, bsg_reply->reply_payload_rcv_len); dma_free_coherent(&ha->pdev->dev, length, flash, flash_dma); leave: @@ -125,12 +125,12 @@ qla4xxx_update_flash(struct bsg_job *bsg_job) rval = qla4xxx_set_flash(ha, flash_dma, offset, length, options); if (rval) { ql4_printk(KERN_ERR, ha, "%s: set flash failed\n", __func__); - bsg_reply->result = DID_ERROR << 16; + bsg_reply->status.combined = DID_ERROR << 16; rval = -EIO; } else - bsg_reply->result = DID_OK << 16; + bsg_reply->status.combined = DID_OK << 16; - bsg_job_done(bsg_job, bsg_reply->result, + bsg_job_done(bsg_job, bsg_reply->status.combined, bsg_reply->reply_payload_rcv_len); dma_free_coherent(&ha->pdev->dev, length, flash, flash_dma); leave: @@ -179,17 +179,17 @@ qla4xxx_get_acb_state(struct bsg_job *bsg_job) if (rval) { ql4_printk(KERN_ERR, ha, "%s: get ip state failed\n", __func__); - bsg_reply->result = DID_ERROR << 16; + bsg_reply->status.combined = DID_ERROR << 16; rval = -EIO; } else { bsg_reply->reply_payload_rcv_len = sg_copy_from_buffer(bsg_job->reply_payload.sg_list, bsg_job->reply_payload.sg_cnt, status, sizeof(status)); - bsg_reply->result = DID_OK << 16; + bsg_reply->status.combined = DID_OK << 16; } - bsg_job_done(bsg_job, bsg_reply->result, + bsg_job_done(bsg_job, bsg_reply->status.combined, bsg_reply->reply_payload_rcv_len); leave: return rval; @@ -250,17 +250,17 @@ qla4xxx_read_nvram(struct bsg_job *bsg_job) rval = qla4xxx_get_nvram(ha, nvram_dma, offset, len); if (rval) { ql4_printk(KERN_ERR, ha, "%s: get nvram failed\n", __func__); - bsg_reply->result = DID_ERROR << 16; + bsg_reply->status.combined = DID_ERROR << 16; rval = -EIO; } else { bsg_reply->reply_payload_rcv_len = sg_copy_from_buffer(bsg_job->reply_payload.sg_list, bsg_job->reply_payload.sg_cnt, nvram, len); - bsg_reply->result = DID_OK << 16; + bsg_reply->status.combined = DID_OK << 16; } - bsg_job_done(bsg_job, bsg_reply->result, + bsg_job_done(bsg_job, bsg_reply->status.combined, bsg_reply->reply_payload_rcv_len); dma_free_coherent(&ha->pdev->dev, len, nvram, nvram_dma); leave: @@ -324,12 +324,12 @@ qla4xxx_update_nvram(struct bsg_job *bsg_job) rval = qla4xxx_set_nvram(ha, nvram_dma, offset, len); if (rval) { ql4_printk(KERN_ERR, ha, "%s: set nvram failed\n", __func__); - bsg_reply->result = DID_ERROR << 16; + bsg_reply->status.combined = DID_ERROR << 16; rval = -EIO; } else - bsg_reply->result = DID_OK << 16; + bsg_reply->status.combined = DID_OK << 16; - bsg_job_done(bsg_job, bsg_reply->result, + bsg_job_done(bsg_job, bsg_reply->status.combined, bsg_reply->reply_payload_rcv_len); dma_free_coherent(&ha->pdev->dev, len, nvram, nvram_dma); leave: @@ -369,12 +369,12 @@ qla4xxx_restore_defaults(struct bsg_job *bsg_job) rval = qla4xxx_restore_factory_defaults(ha, region, field0, field1); if (rval) { ql4_printk(KERN_ERR, ha, "%s: set nvram failed\n", __func__); - bsg_reply->result = DID_ERROR << 16; + bsg_reply->status.combined = DID_ERROR << 16; rval = -EIO; } else - bsg_reply->result = DID_OK << 16; + bsg_reply->status.combined = DID_OK << 16; - bsg_job_done(bsg_job, bsg_reply->result, + bsg_job_done(bsg_job, bsg_reply->status.combined, bsg_reply->reply_payload_rcv_len); leave: return rval; @@ -428,17 +428,17 @@ qla4xxx_bsg_get_acb(struct bsg_job *bsg_job) rval = qla4xxx_get_acb(ha, acb_dma, acb_type, len); if (rval) { ql4_printk(KERN_ERR, ha, "%s: get acb failed\n", __func__); - bsg_reply->result = DID_ERROR << 16; + bsg_reply->status.combined = DID_ERROR << 16; rval = -EIO; } else { bsg_reply->reply_payload_rcv_len = sg_copy_from_buffer(bsg_job->reply_payload.sg_list, bsg_job->reply_payload.sg_cnt, acb, len); - bsg_reply->result = DID_OK << 16; + bsg_reply->status.combined = DID_OK << 16; } - bsg_job_done(bsg_job, bsg_reply->result, + bsg_job_done(bsg_job, bsg_reply->status.combined, bsg_reply->reply_payload_rcv_len); dma_free_coherent(&ha->pdev->dev, len, acb, acb_dma); leave: @@ -461,7 +461,7 @@ static void ql4xxx_execute_diag_cmd(struct bsg_job *bsg_job) if (test_bit(DPC_RESET_HA, &ha->dpc_flags)) { ql4_printk(KERN_INFO, ha, "%s: Adapter reset in progress. Invalid Request\n", __func__); - bsg_reply->result = DID_ERROR << 16; + bsg_reply->status.combined = DID_ERROR << 16; goto exit_diag_mem_test; } @@ -485,9 +485,9 @@ static void ql4xxx_execute_diag_cmd(struct bsg_job *bsg_job) mbox_sts[7])); if (status == QLA_SUCCESS) - bsg_reply->result = DID_OK << 16; + bsg_reply->status.combined = DID_OK << 16; else - bsg_reply->result = DID_ERROR << 16; + bsg_reply->status.combined = DID_ERROR << 16; /* Send mbox_sts to application */ bsg_job->reply_len = sizeof(struct iscsi_bsg_reply) + sizeof(mbox_sts); @@ -497,9 +497,9 @@ static void ql4xxx_execute_diag_cmd(struct bsg_job *bsg_job) exit_diag_mem_test: DEBUG2(ql4_printk(KERN_INFO, ha, "%s: bsg_reply->result = x%x, status = %s\n", - __func__, bsg_reply->result, STATUS(status))); + __func__, bsg_reply->status.combined, STATUS(status))); - bsg_job_done(bsg_job, bsg_reply->result, + bsg_job_done(bsg_job, bsg_reply->status.combined, bsg_reply->reply_payload_rcv_len); } @@ -668,14 +668,14 @@ static void qla4xxx_execute_diag_loopback_cmd(struct bsg_job *bsg_job) if (test_bit(AF_LOOPBACK, &ha->flags)) { ql4_printk(KERN_INFO, ha, "%s: Loopback Diagnostics already in progress. Invalid Request\n", __func__); - bsg_reply->result = DID_ERROR << 16; + bsg_reply->status.combined = DID_ERROR << 16; goto exit_loopback_cmd; } if (test_bit(DPC_RESET_HA, &ha->dpc_flags)) { ql4_printk(KERN_INFO, ha, "%s: Adapter reset in progress. Invalid Request\n", __func__); - bsg_reply->result = DID_ERROR << 16; + bsg_reply->status.combined = DID_ERROR << 16; goto exit_loopback_cmd; } @@ -685,14 +685,14 @@ static void qla4xxx_execute_diag_loopback_cmd(struct bsg_job *bsg_job) if (is_qla8032(ha) || is_qla8042(ha)) { status = qla4_83xx_pre_loopback_config(ha, mbox_cmd); if (status != QLA_SUCCESS) { - bsg_reply->result = DID_ERROR << 16; + bsg_reply->status.combined = DID_ERROR << 16; goto exit_loopback_cmd; } status = qla4_83xx_wait_for_loopback_config_comp(ha, wait_for_link); if (status != QLA_SUCCESS) { - bsg_reply->result = DID_TIME_OUT << 16; + bsg_reply->status.combined = DID_TIME_OUT << 16; goto restore; } } @@ -707,9 +707,9 @@ static void qla4xxx_execute_diag_loopback_cmd(struct bsg_job *bsg_job) &mbox_sts[0]); if (status == QLA_SUCCESS) - bsg_reply->result = DID_OK << 16; + bsg_reply->status.combined = DID_OK << 16; else - bsg_reply->result = DID_ERROR << 16; + bsg_reply->status.combined = DID_ERROR << 16; DEBUG2(ql4_printk(KERN_INFO, ha, "%s: mbox_sts: %08X %08X %08X %08X %08X %08X %08X %08X\n", @@ -725,7 +725,7 @@ static void qla4xxx_execute_diag_loopback_cmd(struct bsg_job *bsg_job) if (is_qla8032(ha) || is_qla8042(ha)) { status = qla4_83xx_post_loopback_config(ha, mbox_cmd); if (status != QLA_SUCCESS) { - bsg_reply->result = DID_ERROR << 16; + bsg_reply->status.combined = DID_ERROR << 16; goto exit_loopback_cmd; } @@ -737,15 +737,15 @@ static void qla4xxx_execute_diag_loopback_cmd(struct bsg_job *bsg_job) status = qla4_83xx_wait_for_loopback_config_comp(ha, wait_for_link); if (status != QLA_SUCCESS) { - bsg_reply->result = DID_TIME_OUT << 16; + bsg_reply->status.combined = DID_TIME_OUT << 16; goto exit_loopback_cmd; } } exit_loopback_cmd: DEBUG2(ql4_printk(KERN_INFO, ha, "%s: bsg_reply->result = x%x, status = %s\n", - __func__, bsg_reply->result, STATUS(status))); - bsg_job_done(bsg_job, bsg_reply->result, + __func__, bsg_reply->status.combined, STATUS(status))); + bsg_job_done(bsg_job, bsg_reply->status.combined, bsg_reply->reply_payload_rcv_len); } @@ -841,9 +841,9 @@ int qla4xxx_process_vendor_specific(struct bsg_job *bsg_job) default: ql4_printk(KERN_ERR, ha, "%s: invalid BSG vendor command: " "0x%x\n", __func__, bsg_req->msgcode); - bsg_reply->result = (DID_ERROR << 16); + bsg_reply->status.combined = (DID_ERROR << 16); bsg_reply->reply_payload_rcv_len = 0; - bsg_job_done(bsg_job, bsg_reply->result, + bsg_job_done(bsg_job, bsg_reply->status.combined, bsg_reply->reply_payload_rcv_len); return -ENOSYS; } diff --git a/drivers/scsi/qla4xxx/ql4_isr.c b/drivers/scsi/qla4xxx/ql4_isr.c index 6f0e77dc2a34..d31b7dcb6be4 100644 --- a/drivers/scsi/qla4xxx/ql4_isr.c +++ b/drivers/scsi/qla4xxx/ql4_isr.c @@ -145,7 +145,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha, ddb_entry = srb->ddb; if (ddb_entry == NULL) { - cmd->result = DID_NO_CONNECT << 16; + cmd->status.combined = DID_NO_CONNECT << 16; goto status_entry_exit; } @@ -157,7 +157,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha, case SCS_COMPLETE: if (sts_entry->iscsiFlags & ISCSI_FLAG_RESIDUAL_OVER) { - cmd->result = DID_ERROR << 16; + cmd->status.combined = DID_ERROR << 16; break; } @@ -166,7 +166,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha, if (!scsi_status && ((scsi_bufflen(cmd) - residual) < cmd->underflow)) { - cmd->result = DID_ERROR << 16; + cmd->status.combined = DID_ERROR << 16; DEBUG2(printk("scsi%ld:%d:%d:%llu: %s: " "Mid-layer Data underrun0, " @@ -180,7 +180,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha, } } - cmd->result = DID_OK << 16 | scsi_status; + cmd->status.combined = DID_OK << 16 | scsi_status; if (scsi_status != SAM_STAT_CHECK_CONDITION) break; @@ -192,7 +192,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha, case SCS_INCOMPLETE: /* Always set the status to DID_ERROR, since * all conditions result in that status anyway */ - cmd->result = DID_ERROR << 16; + cmd->status.combined = DID_ERROR << 16; break; case SCS_RESET_OCCURRED: @@ -200,7 +200,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha, ha->host_no, cmd->device->channel, cmd->device->id, cmd->device->lun, __func__)); - cmd->result = DID_RESET << 16; + cmd->status.combined = DID_RESET << 16; break; case SCS_ABORTED: @@ -208,7 +208,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha, ha->host_no, cmd->device->channel, cmd->device->id, cmd->device->lun, __func__)); - cmd->result = DID_RESET << 16; + cmd->status.combined = DID_RESET << 16; break; case SCS_TIMEOUT: @@ -216,7 +216,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha, ha->host_no, cmd->device->channel, cmd->device->id, cmd->device->lun)); - cmd->result = DID_TRANSPORT_DISRUPTED << 16; + cmd->status.combined = DID_TRANSPORT_DISRUPTED << 16; /* * Mark device missing so that we won't continue to send @@ -236,7 +236,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha, cmd->device->channel, cmd->device->id, cmd->device->lun, __func__)); - cmd->result = DID_ERROR << 16; + cmd->status.combined = DID_ERROR << 16; break; } @@ -266,7 +266,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha, scsi_bufflen(cmd), residual)); - cmd->result = DID_ERROR << 16; + cmd->status.combined = DID_ERROR << 16; break; } @@ -298,11 +298,11 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha, residual, scsi_bufflen(cmd))); - cmd->result = DID_ERROR << 16 | scsi_status; + cmd->status.combined = DID_ERROR << 16 | scsi_status; goto check_scsi_status; } - cmd->result = DID_OK << 16 | scsi_status; + cmd->status.combined = DID_OK << 16 | scsi_status; check_scsi_status: if (scsi_status == SAM_STAT_CHECK_CONDITION) @@ -324,14 +324,14 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha, if (iscsi_is_session_online(ddb_entry->sess)) qla4xxx_mark_device_missing(ddb_entry->sess); - cmd->result = DID_TRANSPORT_DISRUPTED << 16; + cmd->status.combined = DID_TRANSPORT_DISRUPTED << 16; break; case SCS_QUEUE_FULL: /* * SCSI Mid-Layer handles device queue full */ - cmd->result = DID_OK << 16 | sts_entry->scsiStatus; + cmd->status.combined = DID_OK << 16 | sts_entry->scsiStatus; DEBUG2(printk("scsi%ld:%d:%llu: %s: QUEUE FULL detected " "compl=%02x, scsi=%02x, state=%02x, iFlags=%02x," " iResp=%02x\n", ha->host_no, cmd->device->id, @@ -343,7 +343,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha, break; default: - cmd->result = DID_ERROR << 16; + cmd->status.combined = DID_ERROR << 16; break; } @@ -529,7 +529,7 @@ void qla4xxx_process_response_queue(struct scsi_qla_host *ha) /* ETRY normally by sending it back with * DID_BUS_BUSY */ - srb->cmd->result = DID_BUS_BUSY << 16; + srb->cmd->status.combined = DID_BUS_BUSY << 16; kref_put(&srb->srb_ref, qla4xxx_srb_compl); break; diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c index ad3afe30f617..5746c16dfc48 100644 --- a/drivers/scsi/qla4xxx/ql4_os.c +++ b/drivers/scsi/qla4xxx/ql4_os.c @@ -4106,20 +4106,20 @@ static int qla4xxx_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd) if (test_bit(AF_EEH_BUSY, &ha->flags)) { if (test_bit(AF_PCI_CHANNEL_IO_PERM_FAILURE, &ha->flags)) - cmd->result = DID_NO_CONNECT << 16; + cmd->status.combined = DID_NO_CONNECT << 16; else - cmd->result = DID_REQUEUE << 16; + cmd->status.combined = DID_REQUEUE << 16; goto qc_fail_command; } if (!sess) { - cmd->result = DID_IMM_RETRY << 16; + cmd->status.combined = DID_IMM_RETRY << 16; goto qc_fail_command; } rval = iscsi_session_chkready(sess); if (rval) { - cmd->result = rval; + cmd->status.combined = rval; goto qc_fail_command; } @@ -4802,7 +4802,7 @@ static void qla4xxx_abort_active_cmds(struct scsi_qla_host *ha, int res) for (i = 0; i < ha->host->can_queue; i++) { srb = qla4xxx_del_from_active_array(ha, i); if (srb != NULL) { - srb->cmd->result = res; + srb->cmd->status.combined = res; kref_put(&srb->srb_ref, qla4xxx_srb_compl); } } @@ -9283,7 +9283,7 @@ static int qla4xxx_eh_device_reset(struct scsi_cmnd *cmd) "scsi%ld: DEVICE_RESET cmd=%p jiffies = 0x%lx, to=%x," "dpc_flags=%lx, status=%x allowed=%d\n", ha->host_no, cmd, jiffies, cmd->request->timeout / HZ, - ha->dpc_flags, cmd->result, cmd->allowed)); + ha->dpc_flags, cmd->status.combined, cmd->allowed)); rval = qla4xxx_isp_check_reg(ha); if (rval != QLA_SUCCESS) { @@ -9350,7 +9350,7 @@ static int qla4xxx_eh_target_reset(struct scsi_cmnd *cmd) "scsi%ld: TARGET_DEVICE_RESET cmd=%p jiffies = 0x%lx, " "to=%x,dpc_flags=%lx, status=%x allowed=%d\n", ha->host_no, cmd, jiffies, cmd->request->timeout / HZ, - ha->dpc_flags, cmd->result, cmd->allowed)); + ha->dpc_flags, cmd->status.combined, cmd->allowed)); rval = qla4xxx_isp_check_reg(ha); if (rval != QLA_SUCCESS) {