On Sat, 7 Apr 2018 11:30:21 -0700 James Smart <jsmart2021@xxxxxxxxx> wrote: > During target-side port faults, the driver would not recover all > target port logins. This resulted in a loss of nvme device discovery. > > The driver is coded to wait for all GID_FT requests to complete > before restarting discovery. A fault is seen where the outstanding > GIT_FT counts are not properly decremented, thus discovery would > never start. Another fault was found in the clearing of the gidft_inp > counter that would be skipped in this condition. And a third fault > found with lpfc_nvme_register_port that would remove a reverence > on the ndlp which then allows a node swap on a port address change > to prematurely remove the reference and release the ndlp. > > The following changes are made: > Correct the decrementing of the outstanding GID_FT counters. > In RSCN handling, no longer zero the counter before calling to > issue another GID_FT. > No longer remove the reference on the dlp when the ndlp->nrport > value is not yet null. > > Signed-off-by: Dick Kennedy <dick.kennedy@xxxxxxxxxxxx> > Signed-off-by: James Smart <james.smart@xxxxxxxxxxxx> > --- > drivers/scsi/lpfc/lpfc_ct.c | 5 +++++ > drivers/scsi/lpfc/lpfc_els.c | 1 - > drivers/scsi/lpfc/lpfc_nvme.c | 12 ++++++++++-- > 3 files changed, 15 insertions(+), 3 deletions(-) > Reviewed-by: Hannes Reinecke <hare@xxxxxxxx> Cheers, Hannes