Skip to content

Commit

Permalink
[SCSI] libfc: During fabric logoff, flush the rport Q after logging o…
Browse files Browse the repository at this point in the history
…ff dns port

We want to generate the rport queue event (from the logoff)
before flushing the queue otherwise the event may still be
in the queue when we logoff.

Signed-off-by: Abhijeet Joglekar <abjoglek@cisco.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
  • Loading branch information
Abhijeet Joglekar authored and James Bottomley committed Apr 27, 2009
1 parent b4c6f54 commit a0fd2e4
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions drivers/scsi/libfc/fc_lport.c
Original file line number Diff line number Diff line change
Expand Up @@ -618,6 +618,11 @@ int fc_fabric_logoff(struct fc_lport *lport)
{
lport->tt.disc_stop_final(lport);
mutex_lock(&lport->lp_mutex);
if (lport->dns_rp)
lport->tt.rport_logoff(lport->dns_rp);
mutex_unlock(&lport->lp_mutex);
lport->tt.rport_flush_queue();
mutex_lock(&lport->lp_mutex);
fc_lport_enter_logo(lport);
mutex_unlock(&lport->lp_mutex);
cancel_delayed_work_sync(&lport->retry_work);
Expand Down Expand Up @@ -1408,10 +1413,6 @@ static void fc_lport_enter_logo(struct fc_lport *lport)

fc_lport_state_enter(lport, LPORT_ST_LOGO);

/* DNS session should be closed so we can release it here */
if (lport->dns_rp)
lport->tt.rport_logoff(lport->dns_rp);

fp = fc_frame_alloc(lport, sizeof(*logo));
if (!fp) {
fc_lport_error(lport, fp);
Expand Down

0 comments on commit a0fd2e4

Please sign in to comment.