Re: [PATCH 3/9] lpfc: Remove re-binding of nvme rport during registration

Hannes Reinecke
2020-05-07T09:13:39Z

On 5/1/20 11:43 PM, James Smart wrote:
> The lldd rebinds the ndlp with rport during a nvme rport registration
> (va 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-iniitalization. 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.
>
> Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
> Signed-off-by: James Smart <jsmart2021@gmail.com>
> ---
> drivers/scsi/lpfc/lpfc_nvme.c | 32 --------------------------------
> 1 file changed, 32 deletions(-)
>
> diff --git a/drivers/scsi/lpfc/lpfc_nvme.c b/drivers/scsi/lpfc/lpfc_nvme.c
> index 43df08aeecf1..3121cf37a572 100644
> --- a/drivers/scsi/lpfc/lpfc_nvme.c
> +++ b/drivers/scsi/lpfc/lpfc_nvme.c
> @@ -2322,38 +2322,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
>
Reviewed-by: Hannes Reinecke <hare@suse.de>

Cheers,

Hannes
--
Dr. Hannes Reinecke Teamlead Storage & Networking
hare@suse.de +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Felix Imendörffer