Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8a048994f4be7d0b670a358cea7812c6d5232105 Commit: 8a048994f4be7d0b670a358cea7812c6d5232105 Parent: 6bb0417074e914e8d002df20c419e67732ae103e Author: Brian King <[EMAIL PROTECTED]> AuthorDate: Thu Apr 26 16:00:10 2007 -0500 Committer: James Bottomley <[EMAIL PROTECTED]> CommitDate: Sun May 6 09:33:19 2007 -0500
[SCSI] ipr: Handle check condition status from disk array device On newer levels of microcode for ipr RAID adapters supporting multi-initiator configurations, the disk array, or VSET, resources are capable of generating a check condition. This patch prevents ipr from generating sense data in this scenario and retrieving it from the logical device instead. Signed-off-by: Brian King <[EMAIL PROTECTED]> Signed-off-by: James Bottomley <[EMAIL PROTECTED]> --- drivers/scsi/ipr.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c index 0724b58..d871dd3 100644 --- a/drivers/scsi/ipr.c +++ b/drivers/scsi/ipr.c @@ -4666,18 +4666,19 @@ static void ipr_erp_start(struct ipr_ioa_cfg *ioa_cfg, struct scsi_cmnd *scsi_cmd = ipr_cmd->scsi_cmd; struct ipr_resource_entry *res = scsi_cmd->device->hostdata; u32 ioasc = be32_to_cpu(ipr_cmd->ioasa.ioasc); + u32 masked_ioasc = ioasc & IPR_IOASC_IOASC_MASK; if (!res) { ipr_scsi_eh_done(ipr_cmd); return; } - if (!ipr_is_gscsi(res)) + if (!ipr_is_gscsi(res) && masked_ioasc != IPR_IOASC_HW_DEV_BUS_STATUS) ipr_gen_sense(ipr_cmd); ipr_dump_ioasa(ioa_cfg, ipr_cmd, res); - switch (ioasc & IPR_IOASC_IOASC_MASK) { + switch (masked_ioasc) { case IPR_IOASC_ABORTED_CMD_TERM_BY_HOST: if (ipr_is_naca_model(res)) scsi_cmd->result |= (DID_ABORT << 16); - To unsubscribe from this list: send the line "unsubscribe git-commits-head" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html