linux/drivers/scsi/lpfc
James Smart 3fd78355cd scsi: lpfc: Fix infinite wait when driver unregisters a remote NVME port.
When unregistering a remote port the lpfc driver would eventually wait
for the remoteport_unreg done callback. But the driver never completed
the io aborts that would allow the connections to terminate thus the
unreg done callback was never issued.  Turns out the coding style of the
driver allowed for the wait to occur on the same cpu that the deferred
isr is called on. The blocking for the wait, blocked the isr, and as the
isr didn't run, the io aborts wouldn't finish.

Turns out there was never a good reason to block waiting for the unreg
done in the first place. The driver can continue execution and the ref
counting within the driver will do the right thing.

Resolve by removing the wait and patching up a few cases where the ref
counting didn't look right - mainly cases where the remote port comes
back before the aborts had completed and the unreg done had been
called. Additionally, a few places which used pointer values to guide
driver actions weren't protected by lock, so correct those.

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>
2017-12-20 21:11:47 -05:00
..
lpfc_attr.c scsi: lpfc: small sg cnt cleanup 2017-12-04 20:32:55 -05: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: Fix crash receiving ELS while detaching driver 2017-10-02 22:46:33 -04: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: Fix driver handling of nvme resources during unload 2017-12-04 20:32:55 -05:00
lpfc_ct.c scsi: lpfc: Fix SCSI LUN discovery when SCSI and NVME enabled 2017-12-20 21:11:46 -05:00
lpfc_debugfs.c scsi: lpfc: Adjust default value of lpfc_nvmet_mrq 2017-12-04 20:32:54 -05:00
lpfc_debugfs.h scsi: lpfc: avoid false-positive gcc-8 warning 2017-08-25 18:26:52 -04: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 SCSI LUN discovery when SCSI and NVME enabled 2017-12-20 21:11:46 -05:00
lpfc_hbadisc.c scsi: lpfc: correct port registrations with nvme_fc 2017-12-04 20:32:54 -05:00
lpfc_hw4.h scsi: lpfc: Expand WQE capability of every NVME hardware queue 2017-12-04 20:32:53 -05:00
lpfc_hw.h scsi: lpfc: Add Buffer to Buffer credit recovery support 2017-08-24 22:29:43 -04:00
lpfc_ids.h scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00
lpfc_init.c scsi: lpfc: Increase SCSI CQ and WQ sizes. 2017-12-20 21:11:46 -05:00
lpfc_logmsg.h scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00
lpfc_mbox.c scsi: lpfc: Add Buffer to Buffer credit recovery support 2017-08-24 22:29:43 -04:00
lpfc_mem.c scsi: lpfc: Replace PCI pool old API 2017-08-07 14:04:01 -04:00
lpfc_nl.h scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00
lpfc_nportdisc.c scsi: lpfc: Fix issues connecting with nvme initiator 2017-12-20 21:11:47 -05:00
lpfc_nvme.c scsi: lpfc: Fix infinite wait when driver unregisters a remote NVME port. 2017-12-20 21:11:47 -05:00
lpfc_nvme.h scsi: lpfc: Increase SCSI CQ and WQ sizes. 2017-12-20 21:11:46 -05:00
lpfc_nvmet.c scsi: lpfc: Fix -EOVERFLOW behavior for NVMET and defer_rcv 2017-12-20 21:11:45 -05:00
lpfc_nvmet.h scsi: lpfc: Fix -EOVERFLOW behavior for NVMET and defer_rcv 2017-12-20 21:11:45 -05:00
lpfc_scsi.c scsi: lpfc: Convert timers to use timer_setup() 2017-11-01 11:27:07 -07:00
lpfc_scsi.h scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00
lpfc_sli4.h scsi: lpfc: Increase SCSI CQ and WQ sizes. 2017-12-20 21:11:46 -05:00
lpfc_sli.c scsi: lpfc: Fix -EOVERFLOW behavior for NVMET and defer_rcv 2017-12-20 21:11:45 -05:00
lpfc_sli.h scsi: lpfc: Add auto EQ delay logic 2017-06-12 21:37:31 -04:00
lpfc_version.h scsi: lpfc: update driver version to 11.4.0.5 2017-12-04 20:32:55 -05: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: Fix random heartbeat timeouts during heavy IO 2017-12-20 21:11:44 -05:00
Makefile scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00