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@xxxxxxxxxxxxxxxxxx> --- James, Looks like this one got dropped. This is a resend. Thanks, Brian --- linux-2.6-bjking1/drivers/scsi/ipr.c | 7 +++++++ 1 file changed, 7 insertions(+) diff -puN drivers/scsi/ipr.c~ipr_sata_dev_reset_fixup drivers/scsi/ipr.c --- linux-2.6/drivers/scsi/ipr.c~ipr_sata_dev_reset_fixup 2007-05-09 09:39:19.000000000 -0500 +++ linux-2.6-bjking1/drivers/scsi/ipr.c 2007-05-09 09:39:19.000000000 -0500 @@ -3954,6 +3954,13 @@ static int __ipr_eh_dev_reset(struct scs 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; _ - To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html