diff options
-rw-r--r-- | drivers/scsi/libfc/fc_lport.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/scsi/libfc/fc_lport.c b/drivers/scsi/libfc/fc_lport.c index 52c4f2dfcfd3..4cd953378c57 100644 --- a/drivers/scsi/libfc/fc_lport.c +++ b/drivers/scsi/libfc/fc_lport.c | |||
@@ -618,6 +618,11 @@ int fc_fabric_logoff(struct fc_lport *lport) | |||
618 | { | 618 | { |
619 | lport->tt.disc_stop_final(lport); | 619 | lport->tt.disc_stop_final(lport); |
620 | mutex_lock(&lport->lp_mutex); | 620 | mutex_lock(&lport->lp_mutex); |
621 | if (lport->dns_rp) | ||
622 | lport->tt.rport_logoff(lport->dns_rp); | ||
623 | mutex_unlock(&lport->lp_mutex); | ||
624 | lport->tt.rport_flush_queue(); | ||
625 | mutex_lock(&lport->lp_mutex); | ||
621 | fc_lport_enter_logo(lport); | 626 | fc_lport_enter_logo(lport); |
622 | mutex_unlock(&lport->lp_mutex); | 627 | mutex_unlock(&lport->lp_mutex); |
623 | cancel_delayed_work_sync(&lport->retry_work); | 628 | cancel_delayed_work_sync(&lport->retry_work); |
@@ -1408,10 +1413,6 @@ static void fc_lport_enter_logo(struct fc_lport *lport) | |||
1408 | 1413 | ||
1409 | fc_lport_state_enter(lport, LPORT_ST_LOGO); | 1414 | fc_lport_state_enter(lport, LPORT_ST_LOGO); |
1410 | 1415 | ||
1411 | /* DNS session should be closed so we can release it here */ | ||
1412 | if (lport->dns_rp) | ||
1413 | lport->tt.rport_logoff(lport->dns_rp); | ||
1414 | |||
1415 | fp = fc_frame_alloc(lport, sizeof(*logo)); | 1416 | fp = fc_frame_alloc(lport, sizeof(*logo)); |
1416 | if (!fp) { | 1417 | if (!fp) { |
1417 | fc_lport_error(lport, fp); | 1418 | fc_lport_error(lport, fp); |