scsi: lpfc: Remove re-binding of nvme rport during registration
authorDick Kennedy <dick.kennedy@broadcom.com>
Fri, 1 May 2020 21:43:04 +0000 (14:43 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 8 May 2020 02:47:21 +0000 (22:47 -0400)
The lldd rebinds the ndlp with rport during a nvme rport registration (via
nvme_fc_register_remoteport). If rport & ndlp pointers are same as the
previous one, the lldd will re-use the ndlp and rport association without
re-initialization. This assumption is incorrect. The lldd should be
ignorant of whether the returned rport pointer is new or not, and should
always assume it is new.

Remove the re-binding code, always assumes that rport pointer received from
transport is a new pointer.

Link: https://lore.kernel.org/r/20200501214310.91713-4-jsmart2021@gmail.com
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_nvme.c

index 12d2b27..c708abc 100644 (file)
@@ -2321,38 +2321,6 @@ lpfc_nvme_register_port(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp)
                spin_unlock_irq(&vport->phba->hbalock);
                rport = remote_port->private;
                if (oldrport) {
-                       /* New remoteport record does not guarantee valid
-                        * host private memory area.
-                        */
-                       if (oldrport == remote_port->private) {
-                               /* Same remoteport - ndlp should match.
-                                * Just reuse.
-                                */
-                               lpfc_printf_vlog(ndlp->vport, KERN_INFO,
-                                                LOG_NVME_DISC,
-                                                "6014 Rebind lport to current "
-                                                "remoteport x%px wwpn 0x%llx, "
-                                                "Data: x%x x%x x%px x%px x%x "
-                                                " x%06x\n",
-                                                remote_port,
-                                                remote_port->port_name,
-                                                remote_port->port_id,
-                                                remote_port->port_role,
-                                                oldrport->ndlp,
-                                                ndlp,
-                                                ndlp->nlp_type,
-                                                ndlp->nlp_DID);
-
-                               /* It's a complete rebind only if the driver
-                                * is registering with the same ndlp. Otherwise
-                                * the driver likely executed a node swap
-                                * prior to this registration and the ndlp to
-                                * remoteport binding needs to be redone.
-                                */
-                               if (prev_ndlp == ndlp)
-                                       return 0;
-
-                       }
 
                        /* Sever the ndlp<->rport association
                         * before dropping the ndlp ref from