mirror of https://gitee.com/openkylin/linux.git
scsi: ibmvfc: Byte swap status and error codes when logging
Status and error codes are returned in big endian from the VIOS. The values are translated into a human readable format when logged, but the values are also logged. This patch byte swaps those values so that they are consistent between BE and LE platforms. Signed-off-by: Tyrel Datwyler <tyreld@linux.vnet.ibm.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
95237c25d8
commit
3e6f7de43f
|
@ -1497,7 +1497,7 @@ static void ibmvfc_log_error(struct ibmvfc_event *evt)
|
|||
|
||||
scmd_printk(KERN_ERR, cmnd, "Command (%02X) : %s (%x:%x) "
|
||||
"flags: %x fcp_rsp: %x, resid=%d, scsi_status: %x\n",
|
||||
cmnd->cmnd[0], err, vfc_cmd->status, vfc_cmd->error,
|
||||
cmnd->cmnd[0], err, be16_to_cpu(vfc_cmd->status), be16_to_cpu(vfc_cmd->error),
|
||||
rsp->flags, rsp_code, scsi_get_resid(cmnd), rsp->scsi_status);
|
||||
}
|
||||
|
||||
|
@ -2023,7 +2023,7 @@ static int ibmvfc_reset_device(struct scsi_device *sdev, int type, char *desc)
|
|||
sdev_printk(KERN_ERR, sdev, "%s reset failed: %s (%x:%x) "
|
||||
"flags: %x fcp_rsp: %x, scsi_status: %x\n", desc,
|
||||
ibmvfc_get_cmd_error(be16_to_cpu(rsp_iu.cmd.status), be16_to_cpu(rsp_iu.cmd.error)),
|
||||
rsp_iu.cmd.status, rsp_iu.cmd.error, fc_rsp->flags, rsp_code,
|
||||
be16_to_cpu(rsp_iu.cmd.status), be16_to_cpu(rsp_iu.cmd.error), fc_rsp->flags, rsp_code,
|
||||
fc_rsp->scsi_status);
|
||||
rsp_rc = -EIO;
|
||||
} else
|
||||
|
@ -2382,7 +2382,7 @@ static int ibmvfc_abort_task_set(struct scsi_device *sdev)
|
|||
sdev_printk(KERN_ERR, sdev, "Abort failed: %s (%x:%x) "
|
||||
"flags: %x fcp_rsp: %x, scsi_status: %x\n",
|
||||
ibmvfc_get_cmd_error(be16_to_cpu(rsp_iu.cmd.status), be16_to_cpu(rsp_iu.cmd.error)),
|
||||
rsp_iu.cmd.status, rsp_iu.cmd.error, fc_rsp->flags, rsp_code,
|
||||
be16_to_cpu(rsp_iu.cmd.status), be16_to_cpu(rsp_iu.cmd.error), fc_rsp->flags, rsp_code,
|
||||
fc_rsp->scsi_status);
|
||||
rsp_rc = -EIO;
|
||||
} else
|
||||
|
@ -3349,7 +3349,7 @@ static void ibmvfc_tgt_prli_done(struct ibmvfc_event *evt)
|
|||
|
||||
tgt_log(tgt, level, "Process Login failed: %s (%x:%x) rc=0x%02X\n",
|
||||
ibmvfc_get_cmd_error(be16_to_cpu(rsp->status), be16_to_cpu(rsp->error)),
|
||||
rsp->status, rsp->error, status);
|
||||
be16_to_cpu(rsp->status), be16_to_cpu(rsp->error), status);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -3447,9 +3447,10 @@ static void ibmvfc_tgt_plogi_done(struct ibmvfc_event *evt)
|
|||
ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT);
|
||||
|
||||
tgt_log(tgt, level, "Port Login failed: %s (%x:%x) %s (%x) %s (%x) rc=0x%02X\n",
|
||||
ibmvfc_get_cmd_error(be16_to_cpu(rsp->status), be16_to_cpu(rsp->error)), rsp->status, rsp->error,
|
||||
ibmvfc_get_fc_type(be16_to_cpu(rsp->fc_type)), rsp->fc_type,
|
||||
ibmvfc_get_ls_explain(be16_to_cpu(rsp->fc_explain)), rsp->fc_explain, status);
|
||||
ibmvfc_get_cmd_error(be16_to_cpu(rsp->status), be16_to_cpu(rsp->error)),
|
||||
be16_to_cpu(rsp->status), be16_to_cpu(rsp->error),
|
||||
ibmvfc_get_fc_type(be16_to_cpu(rsp->fc_type)), be16_to_cpu(rsp->fc_type),
|
||||
ibmvfc_get_ls_explain(be16_to_cpu(rsp->fc_explain)), be16_to_cpu(rsp->fc_explain), status);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -3620,7 +3621,7 @@ static void ibmvfc_tgt_adisc_done(struct ibmvfc_event *evt)
|
|||
fc_explain = (be32_to_cpu(mad->fc_iu.response[1]) & 0x0000ff00) >> 8;
|
||||
tgt_info(tgt, "ADISC failed: %s (%x:%x) %s (%x) %s (%x) rc=0x%02X\n",
|
||||
ibmvfc_get_cmd_error(be16_to_cpu(mad->iu.status), be16_to_cpu(mad->iu.error)),
|
||||
mad->iu.status, mad->iu.error,
|
||||
be16_to_cpu(mad->iu.status), be16_to_cpu(mad->iu.error),
|
||||
ibmvfc_get_fc_type(fc_reason), fc_reason,
|
||||
ibmvfc_get_ls_explain(fc_explain), fc_explain, status);
|
||||
break;
|
||||
|
@ -3832,9 +3833,10 @@ static void ibmvfc_tgt_query_target_done(struct ibmvfc_event *evt)
|
|||
|
||||
tgt_log(tgt, level, "Query Target failed: %s (%x:%x) %s (%x) %s (%x) rc=0x%02X\n",
|
||||
ibmvfc_get_cmd_error(be16_to_cpu(rsp->status), be16_to_cpu(rsp->error)),
|
||||
rsp->status, rsp->error, ibmvfc_get_fc_type(be16_to_cpu(rsp->fc_type)),
|
||||
rsp->fc_type, ibmvfc_get_gs_explain(be16_to_cpu(rsp->fc_explain)),
|
||||
rsp->fc_explain, status);
|
||||
be16_to_cpu(rsp->status), be16_to_cpu(rsp->error),
|
||||
ibmvfc_get_fc_type(be16_to_cpu(rsp->fc_type)), be16_to_cpu(rsp->fc_type),
|
||||
ibmvfc_get_gs_explain(be16_to_cpu(rsp->fc_explain)), be16_to_cpu(rsp->fc_explain),
|
||||
status);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -3960,7 +3962,7 @@ static void ibmvfc_discover_targets_done(struct ibmvfc_event *evt)
|
|||
level += ibmvfc_retry_host_init(vhost);
|
||||
ibmvfc_log(vhost, level, "Discover Targets failed: %s (%x:%x)\n",
|
||||
ibmvfc_get_cmd_error(be16_to_cpu(rsp->status), be16_to_cpu(rsp->error)),
|
||||
rsp->status, rsp->error);
|
||||
be16_to_cpu(rsp->status), be16_to_cpu(rsp->error));
|
||||
break;
|
||||
case IBMVFC_MAD_DRIVER_FAILED:
|
||||
break;
|
||||
|
@ -4025,7 +4027,7 @@ static void ibmvfc_npiv_login_done(struct ibmvfc_event *evt)
|
|||
ibmvfc_link_down(vhost, IBMVFC_LINK_DEAD);
|
||||
ibmvfc_log(vhost, level, "NPIV Login failed: %s (%x:%x)\n",
|
||||
ibmvfc_get_cmd_error(be16_to_cpu(rsp->status), be16_to_cpu(rsp->error)),
|
||||
rsp->status, rsp->error);
|
||||
be16_to_cpu(rsp->status), be16_to_cpu(rsp->error));
|
||||
ibmvfc_free_event(evt);
|
||||
return;
|
||||
case IBMVFC_MAD_CRQ_ERROR:
|
||||
|
|
Loading…
Reference in New Issue