|
@@ -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);
|
|
@@ -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);
|