diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-11 14:44:25 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-11 14:44:25 -0500 |
commit | 5f0b1437e0708772b6fecae5900c01c3b5f9b512 (patch) | |
tree | bcd923e305345178bc162ed8560d56a3af197224 /drivers/scsi/aic94xx/aic94xx_task.c | |
parent | 574009c1a895aeeb85eaab29c235d75852b09eb8 (diff) | |
parent | 81b7bbd1932a04869d4c8635a75222dfc6089f96 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (97 commits)
[SCSI] zfcp: removed wrong comment
[SCSI] zfcp: use of uninitialized variable
[SCSI] zfcp: Invalid locking order
[SCSI] aic79xx: use dma_get_required_mask()
[SCSI] aic79xx: fix bracket mismatch in unused macro
[SCSI] BusLogic: Replace 'boolean' by 'bool'
[SCSI] advansys: clean up warnings
[SCSI] 53c7xx: brackets fix in uncompiled code
[SCSI] nsp_cs: remove old scsi code
[SCSI] aic79xx: make ahd_match_scb() static
[SCSI] DAC960: kmalloc->kzalloc/Casting cleanups
[SCSI] scsi_kmap_atomic_sg(): check that local irqs are disabled
[SCSI] Buslogic: local_irq_disable() is redundant after local_irq_save()
[SCSI] aic94xx: update for v28 firmware
[SCSI] scsi_error: Fix lost EH commands
[SCSI] aic94xx: Add default bus reset handler
[SCSI] aic94xx: Remove TMF result code munging
[SCSI] libsas: Add an LU reset mechanism to the error handler
[SCSI] libsas: Don't BUG when connecting two expanders via wide port
[SCSI] st: fix Tape dies if wrong block size used, bug 7919
...
Diffstat (limited to 'drivers/scsi/aic94xx/aic94xx_task.c')
-rw-r--r-- | drivers/scsi/aic94xx/aic94xx_task.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/scsi/aic94xx/aic94xx_task.c b/drivers/scsi/aic94xx/aic94xx_task.c index d202ed5a6709..e2ad5bed9403 100644 --- a/drivers/scsi/aic94xx/aic94xx_task.c +++ b/drivers/scsi/aic94xx/aic94xx_task.c | |||
@@ -349,6 +349,7 @@ Again: | |||
349 | 349 | ||
350 | spin_lock_irqsave(&task->task_state_lock, flags); | 350 | spin_lock_irqsave(&task->task_state_lock, flags); |
351 | task->task_state_flags &= ~SAS_TASK_STATE_PENDING; | 351 | task->task_state_flags &= ~SAS_TASK_STATE_PENDING; |
352 | task->task_state_flags &= ~SAS_TASK_AT_INITIATOR; | ||
352 | task->task_state_flags |= SAS_TASK_STATE_DONE; | 353 | task->task_state_flags |= SAS_TASK_STATE_DONE; |
353 | if (unlikely((task->task_state_flags & SAS_TASK_STATE_ABORTED))) { | 354 | if (unlikely((task->task_state_flags & SAS_TASK_STATE_ABORTED))) { |
354 | spin_unlock_irqrestore(&task->task_state_lock, flags); | 355 | spin_unlock_irqrestore(&task->task_state_lock, flags); |
@@ -557,6 +558,7 @@ int asd_execute_task(struct sas_task *task, const int num, | |||
557 | struct sas_task *t = task; | 558 | struct sas_task *t = task; |
558 | struct asd_ascb *ascb = NULL, *a; | 559 | struct asd_ascb *ascb = NULL, *a; |
559 | struct asd_ha_struct *asd_ha = task->dev->port->ha->lldd_ha; | 560 | struct asd_ha_struct *asd_ha = task->dev->port->ha->lldd_ha; |
561 | unsigned long flags; | ||
560 | 562 | ||
561 | res = asd_can_queue(asd_ha, num); | 563 | res = asd_can_queue(asd_ha, num); |
562 | if (res) | 564 | if (res) |
@@ -599,6 +601,10 @@ int asd_execute_task(struct sas_task *task, const int num, | |||
599 | } | 601 | } |
600 | if (res) | 602 | if (res) |
601 | goto out_err_unmap; | 603 | goto out_err_unmap; |
604 | |||
605 | spin_lock_irqsave(&t->task_state_lock, flags); | ||
606 | t->task_state_flags |= SAS_TASK_AT_INITIATOR; | ||
607 | spin_unlock_irqrestore(&t->task_state_lock, flags); | ||
602 | } | 608 | } |
603 | list_del_init(&alist); | 609 | list_del_init(&alist); |
604 | 610 | ||
@@ -617,6 +623,9 @@ out_err_unmap: | |||
617 | if (a == b) | 623 | if (a == b) |
618 | break; | 624 | break; |
619 | t = a->uldd_task; | 625 | t = a->uldd_task; |
626 | spin_lock_irqsave(&t->task_state_lock, flags); | ||
627 | t->task_state_flags &= ~SAS_TASK_AT_INITIATOR; | ||
628 | spin_unlock_irqrestore(&t->task_state_lock, flags); | ||
620 | switch (t->task_proto) { | 629 | switch (t->task_proto) { |
621 | case SATA_PROTO: | 630 | case SATA_PROTO: |
622 | case SAS_PROTO_STP: | 631 | case SAS_PROTO_STP: |