diff options
author | James Bottomley <jejb@mulgrave.(none)> | 2005-10-29 11:28:33 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2005-10-29 11:28:33 -0400 |
commit | 604a3e3042eb89ffaa4f735ef9208281aae786c7 (patch) | |
tree | 54c4ad58274b0bb79386c6c57b4849bfb92d4118 /drivers/scsi/lpfc/lpfc_nportdisc.c | |
parent | 21568f5387636fe2bfb9ee42383d76de11ed99c7 (diff) |
[SCSI] lpfc: Fix for "command completion for iotax x?? not found"
From: James Smart <James.Smart@emulex.com>
There were scenarios where the error handlers could reuse an iotag
value of an active io. Remove all possibility of this by
pre-assigning iotag resources to command resources.
Signed-off-by: James Smart <James.Smart@emulex.com>
Rejections fixed up and
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_nportdisc.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_nportdisc.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/scsi/lpfc/lpfc_nportdisc.c b/drivers/scsi/lpfc/lpfc_nportdisc.c index 9a58de876d40..507a6af56f42 100644 --- a/drivers/scsi/lpfc/lpfc_nportdisc.c +++ b/drivers/scsi/lpfc/lpfc_nportdisc.c | |||
@@ -187,10 +187,8 @@ lpfc_els_abort(struct lpfc_hba * phba, struct lpfc_nodelist * ndlp, | |||
187 | spin_unlock_irq(phba->host->host_lock); | 187 | spin_unlock_irq(phba->host->host_lock); |
188 | (iocb->iocb_cmpl) (phba, iocb, iocb); | 188 | (iocb->iocb_cmpl) (phba, iocb, iocb); |
189 | spin_lock_irq(phba->host->host_lock); | 189 | spin_lock_irq(phba->host->host_lock); |
190 | } else { | 190 | } else |
191 | list_add_tail(&iocb->list, | 191 | lpfc_sli_release_iocbq(phba, iocb); |
192 | &phba->lpfc_iocb_list); | ||
193 | } | ||
194 | break; | 192 | break; |
195 | } | 193 | } |
196 | } | 194 | } |
@@ -232,10 +230,8 @@ lpfc_els_abort(struct lpfc_hba * phba, struct lpfc_nodelist * ndlp, | |||
232 | spin_unlock_irq(phba->host->host_lock); | 230 | spin_unlock_irq(phba->host->host_lock); |
233 | (iocb->iocb_cmpl) (phba, iocb, iocb); | 231 | (iocb->iocb_cmpl) (phba, iocb, iocb); |
234 | spin_lock_irq(phba->host->host_lock); | 232 | spin_lock_irq(phba->host->host_lock); |
235 | } else { | 233 | } else |
236 | list_add_tail(&iocb->list, | 234 | lpfc_sli_release_iocbq(phba, iocb); |
237 | &phba->lpfc_iocb_list); | ||
238 | } | ||
239 | break; | 235 | break; |
240 | } | 236 | } |
241 | } | 237 | } |