aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libfc/fc_exch.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-11-05 18:32:53 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-11-05 18:32:53 -0400
commitcd3f07d1e6e59fade92a8edaff9315cc534199cf (patch)
treea2f30bccdfad1826a81c098c6766c2a4345fc171 /drivers/scsi/libfc/fc_exch.c
parentdc822e57ee05856291a8c9324d2309076ee5f5e2 (diff)
parentf7c9c6bb14f3104608a3a83cadea10a6943d2804 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (45 commits) [SCSI] Fix block queue and elevator memory leak in scsi_alloc_sdev [SCSI] scsi_dh_alua: Fix the time inteval for alua rtpg commands [SCSI] scsi_transport_iscsi: Fix documentation os parameter [SCSI] mv_sas: OCZ RevoDrive3 & zDrive R4 support [SCSI] libfc: improve flogi retries to avoid lport stuck [SCSI] libfc: avoid exchanges collision during lport reset [SCSI] libfc: fix checking FC_TYPE_BLS [SCSI] edd: Treat "XPRS" host bus type the same as "PCI" [SCSI] isci: overriding max_concurr_spinup oem parameter by max(oem, user) [SCSI] isci: revert bcn filtering [SCSI] isci: Fix hard reset timeout conditions. [SCSI] isci: No need to manage the pending reset bit on pending requests. [SCSI] isci: Remove redundant isci_request.ttype field. [SCSI] isci: Fix task management for SMP, SATA and on dev remove. [SCSI] isci: No task_done callbacks in error handler paths. [SCSI] isci: Handle task request timeouts correctly. [SCSI] isci: Fix tag leak in tasks and terminated requests. [SCSI] isci: Immediately fail I/O to removed devices. [SCSI] isci: Lookup device references through requests in completions. [SCSI] ipr: add definitions for additional adapter ...
Diffstat (limited to 'drivers/scsi/libfc/fc_exch.c')
-rw-r--r--drivers/scsi/libfc/fc_exch.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c
index 7c055fdca45d..1b22130035da 100644
--- a/drivers/scsi/libfc/fc_exch.c
+++ b/drivers/scsi/libfc/fc_exch.c
@@ -469,6 +469,7 @@ static int fc_seq_send(struct fc_lport *lport, struct fc_seq *sp,
469 struct fc_frame_header *fh = fc_frame_header_get(fp); 469 struct fc_frame_header *fh = fc_frame_header_get(fp);
470 int error; 470 int error;
471 u32 f_ctl; 471 u32 f_ctl;
472 u8 fh_type = fh->fh_type;
472 473
473 ep = fc_seq_exch(sp); 474 ep = fc_seq_exch(sp);
474 WARN_ON((ep->esb_stat & ESB_ST_SEQ_INIT) != ESB_ST_SEQ_INIT); 475 WARN_ON((ep->esb_stat & ESB_ST_SEQ_INIT) != ESB_ST_SEQ_INIT);
@@ -493,7 +494,7 @@ static int fc_seq_send(struct fc_lport *lport, struct fc_seq *sp,
493 */ 494 */
494 error = lport->tt.frame_send(lport, fp); 495 error = lport->tt.frame_send(lport, fp);
495 496
496 if (fh->fh_type == FC_TYPE_BLS) 497 if (fh_type == FC_TYPE_BLS)
497 return error; 498 return error;
498 499
499 /* 500 /*
@@ -1792,6 +1793,9 @@ restart:
1792 goto restart; 1793 goto restart;
1793 } 1794 }
1794 } 1795 }
1796 pool->next_index = 0;
1797 pool->left = FC_XID_UNKNOWN;
1798 pool->right = FC_XID_UNKNOWN;
1795 spin_unlock_bh(&pool->lock); 1799 spin_unlock_bh(&pool->lock);
1796} 1800}
1797 1801
@@ -2280,6 +2284,7 @@ struct fc_exch_mgr *fc_exch_mgr_alloc(struct fc_lport *lport,
2280 goto free_mempool; 2284 goto free_mempool;
2281 for_each_possible_cpu(cpu) { 2285 for_each_possible_cpu(cpu) {
2282 pool = per_cpu_ptr(mp->pool, cpu); 2286 pool = per_cpu_ptr(mp->pool, cpu);
2287 pool->next_index = 0;
2283 pool->left = FC_XID_UNKNOWN; 2288 pool->left = FC_XID_UNKNOWN;
2284 pool->right = FC_XID_UNKNOWN; 2289 pool->right = FC_XID_UNKNOWN;
2285 spin_lock_init(&pool->lock); 2290 spin_lock_init(&pool->lock);