Skip to content

Commit

Permalink
[SCSI] ipr: Handle check condition status from disk array device
Browse files Browse the repository at this point in the history
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 <brking@linux.vnet.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
  • Loading branch information
Brian King authored and James Bottomley committed May 6, 2007
1 parent 6bb0417 commit 8a04899
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions drivers/scsi/ipr.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 8a04899

Please sign in to comment.