aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ipr.c
diff options
context:
space:
mode:
authorBrian King <brking@linux.vnet.ibm.com>2007-03-29 13:43:09 -0400
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2007-04-01 12:16:58 -0400
commitb0692dd4d7e90ce5cf1241731c6e80118402e3b4 (patch)
treefd98c7f905908ea3e348fcba395a6e15d9734df9 /drivers/scsi/ipr.c
parentcc9bd5d4256ecc1b6e0448febb4be29db1a91256 (diff)
[SCSI] ipr: Log error for SAS dual path switch
For ipr SAS adapters that support dual pathing, this patch modifies ipr to log an error when a path fails. Signed-off-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/ipr.c')
-rw-r--r--drivers/scsi/ipr.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index 5b6ffe18bc7d..44ce9f5218a8 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -4453,12 +4453,13 @@ static void ipr_dump_ioasa(struct ipr_ioa_cfg *ioa_cfg,
4453{ 4453{
4454 int i; 4454 int i;
4455 u16 data_len; 4455 u16 data_len;
4456 u32 ioasc; 4456 u32 ioasc, fd_ioasc;
4457 struct ipr_ioasa *ioasa = &ipr_cmd->ioasa; 4457 struct ipr_ioasa *ioasa = &ipr_cmd->ioasa;
4458 __be32 *ioasa_data = (__be32 *)ioasa; 4458 __be32 *ioasa_data = (__be32 *)ioasa;
4459 int error_index; 4459 int error_index;
4460 4460
4461 ioasc = be32_to_cpu(ioasa->ioasc) & IPR_IOASC_IOASC_MASK; 4461 ioasc = be32_to_cpu(ioasa->ioasc) & IPR_IOASC_IOASC_MASK;
4462 fd_ioasc = be32_to_cpu(ioasa->fd_ioasc) & IPR_IOASC_IOASC_MASK;
4462 4463
4463 if (0 == ioasc) 4464 if (0 == ioasc)
4464 return; 4465 return;
@@ -4466,7 +4467,10 @@ static void ipr_dump_ioasa(struct ipr_ioa_cfg *ioa_cfg,
4466 if (ioa_cfg->log_level < IPR_DEFAULT_LOG_LEVEL) 4467 if (ioa_cfg->log_level < IPR_DEFAULT_LOG_LEVEL)
4467 return; 4468 return;
4468 4469
4469 error_index = ipr_get_error(ioasc); 4470 if (ioasc == IPR_IOASC_BUS_WAS_RESET && fd_ioasc)
4471 error_index = ipr_get_error(fd_ioasc);
4472 else
4473 error_index = ipr_get_error(ioasc);
4470 4474
4471 if (ioa_cfg->log_level < IPR_MAX_LOG_LEVEL) { 4475 if (ioa_cfg->log_level < IPR_MAX_LOG_LEVEL) {
4472 /* Don't log an error if the IOA already logged one */ 4476 /* Don't log an error if the IOA already logged one */