[SCSI] ipr: Proper return codes for eh_dev_reset for SATA devices
Currently ipr always returns success from eh_dev_reset when called for a SATA device. If ata_do_eh is unable to recover for some reason, this can result in commands that are still outstanding when ata_do_eh returns. Change ipr to verify no commands are outstanding before returning success. Signed-off-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
9f28745a6b
commit
5af23d263c
|
@ -3954,6 +3954,13 @@ static int __ipr_eh_dev_reset(struct scsi_cmnd * scsi_cmd)
|
|||
spin_unlock_irq(scsi_cmd->device->host->host_lock);
|
||||
ata_do_eh(ap, NULL, NULL, ipr_sata_reset, NULL);
|
||||
spin_lock_irq(scsi_cmd->device->host->host_lock);
|
||||
|
||||
list_for_each_entry(ipr_cmd, &ioa_cfg->pending_q, queue) {
|
||||
if (ipr_cmd->ioarcb.res_handle == res->cfgte.res_handle) {
|
||||
rc = -EIO;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else
|
||||
rc = ipr_device_reset(ioa_cfg, res);
|
||||
res->resetting_device = 0;
|
||||
|
|
Loading…
Reference in a new issue