diff options
author | Brian King <brking@linux.vnet.ibm.com> | 2007-03-29 13:43:09 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2007-04-01 12:16:58 -0400 |
commit | b0692dd4d7e90ce5cf1241731c6e80118402e3b4 (patch) | |
tree | fd98c7f905908ea3e348fcba395a6e15d9734df9 /drivers/scsi/ipr.c | |
parent | cc9bd5d4256ecc1b6e0448febb4be29db1a91256 (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.c | 8 |
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 */ |