Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 287915
b: refs/heads/master
c: a92fa25
h: refs/heads/master
i:
  287913: adecd13
  287911: 994e5bf
v: v3
  • Loading branch information
Kleber Sacilotto de Souza authored and James Bottomley committed Feb 18, 2012
1 parent 941b151 commit 0a13407
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 7 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 7fbd764881a5f9dc81a378293b7a74227fcc04ed
refs/heads/master: a92fa25c63a788758bd52e9123504d133210c8b7
24 changes: 18 additions & 6 deletions trunk/drivers/scsi/ipr.c
Original file line number Diff line number Diff line change
Expand Up @@ -4613,11 +4613,13 @@ static int __ipr_eh_host_reset(struct scsi_cmnd * scsi_cmd)
ENTER;
ioa_cfg = (struct ipr_ioa_cfg *) scsi_cmd->device->host->hostdata;

dev_err(&ioa_cfg->pdev->dev,
"Adapter being reset as a result of error recovery.\n");
if (!ioa_cfg->in_reset_reload) {
dev_err(&ioa_cfg->pdev->dev,
"Adapter being reset as a result of error recovery.\n");

if (WAIT_FOR_DUMP == ioa_cfg->sdt_state)
ioa_cfg->sdt_state = GET_DUMP;
if (WAIT_FOR_DUMP == ioa_cfg->sdt_state)
ioa_cfg->sdt_state = GET_DUMP;
}

rc = ipr_reset_reload(ioa_cfg, IPR_SHUTDOWN_ABBREV);

Expand Down Expand Up @@ -4907,7 +4909,7 @@ static int ipr_cancel_op(struct scsi_cmnd * scsi_cmd)
struct ipr_ioa_cfg *ioa_cfg;
struct ipr_resource_entry *res;
struct ipr_cmd_pkt *cmd_pkt;
u32 ioasc;
u32 ioasc, int_reg;
int op_found = 0;

ENTER;
Expand All @@ -4920,7 +4922,17 @@ static int ipr_cancel_op(struct scsi_cmnd * scsi_cmd)
*/
if (ioa_cfg->in_reset_reload || ioa_cfg->ioa_is_dead)
return FAILED;
if (!res || !ipr_is_gscsi(res))
if (!res)
return FAILED;

/*
* If we are aborting a timed out op, chances are that the timeout was caused
* by a still not detected EEH error. In such cases, reading a register will
* trigger the EEH recovery infrastructure.
*/
int_reg = readl(ioa_cfg->regs.sense_interrupt_reg);

if (!ipr_is_gscsi(res))
return FAILED;

list_for_each_entry(ipr_cmd, &ioa_cfg->pending_q, queue) {
Expand Down

0 comments on commit 0a13407

Please sign in to comment.