-stable review patch. If anyone has any objections, please let us know.
---------------------
From: James Bottomley <James.Bottomley@HansenPartnership.com>
This driver has been failing under heavy load with
aic94xx: escb_tasklet_complete: REQ_TASK_ABORT, reason=0x6
aic94xx: escb_tasklet_complete: Can't find task (tc=4) to abort!
The second message is because the driver fails to identify the task
it's being asked to abort. On closer inpection, there's a thinko in
the for each task loop over pending tasks in both the REQ_TASK_ABORT
and REQ_DEVICE_RESET cases where it doesn't look at the task on the
pending list but at the one on the ESCB (which is always NULL).
Fix by looking at the right task. Also add a print for the case where
the pending SCB doesn't have a task attached.
Not sure if this will fix all the problems, but it's a definite first
step.
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/scsi/aic94xx/aic94xx_scb.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
--- a/drivers/scsi/aic94xx/aic94xx_scb.c
+++ b/drivers/scsi/aic94xx/aic94xx_scb.c
@@ -458,13 +458,19 @@ static void escb_tasklet_complete(struct
tc_abort = le16_to_cpu(tc_abort);
list_for_each_entry_safe(a, b, &asd_ha->seq.pend_q, list) {
- struct sas_task *task = ascb->uldd_task;
+ struct sas_task *task = a->uldd_task;
+
+ if (a->tc_index != tc_abort)
+ continue;
- if (task && a->tc_index == tc_abort) {
+ if (task) {
failed_dev = task->dev;
sas_task_abort(task);
- break;
+ } else {
+ ASD_DPRINTK("R_T_A for non TASK scb 0x%x\n",
+ a->scb->header.opcode);
}
+ break;
}
if (!failed_dev) {
@@ -478,7 +484,7 @@ static void escb_tasklet_complete(struct
* that the EH will wake up and do something.
*/
list_for_each_entry_safe(a, b, &asd_ha->seq.pend_q, list) {
- struct sas_task *task = ascb->uldd_task;
+ struct sas_task *task = a->uldd_task;
if (task &&
task->dev == failed_dev &&
--
--
| Ryan Hope | reiser4 for 2.6.27-rc1 |
| Ingo Molnar | Re: 2.6.24-rc6-mm1 |
| Tim Tassonis | reiser4 for 2.6.27-rc1 |
| Ingo Molnar | Re: [patch] MTD: fix DOC2000/2001/2001PLUS build error |
git: | |
| Petko Manolov | git and binary files |
| Wink Saville | Resolving conflicts |
| Ken Pratt | pack operation is thrashing my server |
| Junio C Hamano | What's cooking in git.git (Aug 2008, #07; Sat, 23) |
| Richard Stallman | Real men don't attack straw men |
| Julien TOUCHE | setting up ssh tunnel/vpn |
| Jeffrey 'jf' Lim | Re: SSHJail patch for OpenBSD |
| Daniel Ouellet | identifying sparse files and get ride of them trick available? |
| Jim Winstead Jr. | Re: Root Disk/Book Disk Compatibility |
| Peter MacDonald | demand paging: proposal |
| Stephen Pierce | SLS |
| Drew Eckhardt | Re: 20MB drive & wdxt-gen2 controller on 386? |
