scsi: libfc: Do not drop down to FLOGI for fc_rport_login()
authorHannes Reinecke <hare@suse.de>
Fri, 30 Sep 2016 09:01:17 +0000 (11:01 +0200)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 8 Nov 2016 22:29:47 +0000 (17:29 -0500)
When fc_rport_login() is called while the rport is not
in RPORT_ST_INIT, RPORT_ST_READY, or RPORT_ST_DELETE
login is already in progress and there's no need to
drop down to FLOGI; doing so will only confuse the
other side.

Signed-off-by: Hannes Reinecke <hare@suse.com>
Acked-by: Johannes Thumshirn <jth@kernel.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/libfc/fc_rport.c

index ff33ae6bdf7c58af732361058d208d906c7de8a1..4e4087a0083673e5c9f989c961a37e18a009ed58 100644 (file)
@@ -427,10 +427,14 @@ static int fc_rport_login(struct fc_rport_priv *rdata)
        case RPORT_ST_DELETE:
                FC_RPORT_DBG(rdata, "Restart deleted port\n");
                break;
-       default:
+       case RPORT_ST_INIT:
                FC_RPORT_DBG(rdata, "Login to port\n");
                fc_rport_enter_flogi(rdata);
                break;
+       default:
+               FC_RPORT_DBG(rdata, "Login in progress, state %s\n",
+                            fc_rport_state(rdata));
+               break;
        }
        mutex_unlock(&rdata->rp_mutex);