linux/drivers/scsi/lpfc
James Smart b15bd3e621 scsi: lpfc: Fix nvme remoteport registration race conditions
On tests adding and removing a remote port, calls to nvme_info would
eventually show fewer target ports discovered than were present in the
san. Additionally, the following error messages were seen:

  6031 RemotePort Registration failed err: -116, DID x471301

There is a race condition that exists between the driver and the nvme
transport on remote port unregister vs the confirmed deletion. It's
possible that the driver may rediscover the remote port and reregister
the remote port before a prior unregister delete callback was made (as
it rebinded to the prior remoteport structure). However, the driver was
coded to expect the callback before seeing the remote port again thus a
new registration. The logic results in the driver having an invalid
remoteport pointer set.

Correct by tracking when waiting for the delete callback. In cases where
the ndlp remoteport pointer is updated, it is only cleared when the wait
has not been superceded by a prior registration.

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <james.smart@broadcom.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2018-04-18 19:34:05 -04:00
..
lpfc_attr.c scsi: lpfc: Fix NULL pointer access in lpfc_nvme_info_show 2018-04-18 19:34:04 -04:00
lpfc_attr.h scsi: lpfc: Add Buffer to Buffer credit recovery support 2017-08-24 22:29:43 -04:00
lpfc_bsg.c scsi: lpfc: Change Copyright of 12.0.0.0 modified files to 2018 2018-02-22 20:39:30 -05:00
lpfc_bsg.h scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00
lpfc_compat.h scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00
lpfc_crtn.h scsi: lpfc: Streamline NVME Targe6t WQE setup 2018-03-12 21:55:23 -04:00
lpfc_ct.c scsi: lpfc: Fix driver not recovering NVME rports during target link faults 2018-04-18 19:34:05 -04:00
lpfc_debugfs.c scsi: lpfc: Fix NULL pointer access in lpfc_nvme_info_show 2018-04-18 19:34:04 -04:00
lpfc_debugfs.h scsi: lpfc: Change Copyright of 12.0.0.0 modified files to 2018 2018-02-22 20:39:30 -05:00
lpfc_disc.h scsi: lpfc: Correct driver deregistrations with host nvme transport 2017-12-04 20:32:54 -05:00
lpfc_els.c scsi: lpfc: Fix driver not recovering NVME rports during target link faults 2018-04-18 19:34:05 -04:00
lpfc_hbadisc.c scsi: lpfc: Fix SCSI lun discovery when port configured for both SCSI and NVME 2018-03-12 21:55:23 -04:00
lpfc_hw4.h scsi: lpfc: Fix WQ/CQ creation for older asic's. 2018-04-18 19:34:04 -04:00
lpfc_hw.h scsi: lpfc: Change Copyright of 12.0.0.0 modified files to 2018 2018-02-22 20:39:30 -05:00
lpfc_ids.h scsi: lpfc: Change Copyright of 12.0.0.0 modified files to 2018 2018-02-22 20:39:30 -05:00
lpfc_init.c scsi: lpfc: Fix WQ/CQ creation for older asic's. 2018-04-18 19:34:04 -04:00
lpfc_logmsg.h scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00
lpfc_mbox.c scsi: lpfc: Add 64G link speed support 2018-02-22 20:39:29 -05:00
lpfc_mem.c scsi: lpfc: Update 11.4.0.7 modified files for 2018 Copyright 2018-02-12 11:43:24 -05:00
lpfc_nl.h scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00
lpfc_nportdisc.c scsi: lpfc: Fix multiple PRLI completion error path 2018-04-18 19:34:00 -04:00
lpfc_nvme.c scsi: lpfc: Fix nvme remoteport registration race conditions 2018-04-18 19:34:05 -04:00
lpfc_nvme.h scsi: lpfc: Fix NULL pointer access in lpfc_nvme_info_show 2018-04-18 19:34:04 -04:00
lpfc_nvmet.c scsi: lpfc: make several unions static, fix non-ANSI prototype 2018-03-14 23:36:37 -04:00
lpfc_nvmet.h scsi: lpfc: Enlarge nvmet asynchronous receive buffer counts 2018-04-18 19:34:02 -04:00
lpfc_scsi.c scsi: lpfc: Fix Abort request WQ selection 2018-04-18 19:34:02 -04:00
lpfc_scsi.h scsi: lpfc: Change Copyright of 12.0.0.1 modified files to 2018 2018-03-12 21:55:24 -04:00
lpfc_sli4.h scsi: lpfc: Fix WQ/CQ creation for older asic's. 2018-04-18 19:34:04 -04:00
lpfc_sli.c scsi: lpfc: Fix Abort request WQ selection 2018-04-18 19:34:02 -04:00
lpfc_sli.h scsi: lpfc: Fix mailbox wait for POST_SGL mbox command 2018-03-12 21:55:24 -04:00
lpfc_version.h scsi: lpfc: update driver version to 12.0.0.1 2018-03-12 21:55:24 -04:00
lpfc_vport.c scsi: lpfc: Disable NPIV support if NVME is enabled 2017-10-02 22:46:39 -04:00
lpfc_vport.h scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00
lpfc.h scsi: lpfc: Enlarge nvmet asynchronous receive buffer counts 2018-04-18 19:34:02 -04:00
Makefile scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00