summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_init.c
diff options
context:
space:
mode:
authorJames Smart2012-01-18 22:25:25 +0100
committerJames Bottomley2012-02-19 15:08:53 +0100
commiteff4a01b6e9f8cee3c541ab7f2ad18b5bbffd124 (patch)
treef77ae41ac94f3bdc6cfde5fb5847f807c1f257ae /drivers/scsi/lpfc/lpfc_init.c
parent[SCSI] lpfc 8.3.29: T10 Diff fixes and enhancements (diff)
downloadkernel-qcow2-linux-eff4a01b6e9f8cee3c541ab7f2ad18b5bbffd124.tar.gz
kernel-qcow2-linux-eff4a01b6e9f8cee3c541ab7f2ad18b5bbffd124.tar.xz
kernel-qcow2-linux-eff4a01b6e9f8cee3c541ab7f2ad18b5bbffd124.zip
[SCSI] lpfc 8.3.29: FC Discovery state machine fixes
FC Discovery state machine fixes. - Fix bug with driver returning the inactive ndlp (125743) - Fix discovery problem when in pt2pt by copying old ndlp state before state change (126887) - Fix ndlp nodelist not empty wait timeout during driver unloading (127052) Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com> Signed-off-by: James Smart <james.smart@emulex.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_init.c')
-rw-r--r--drivers/scsi/lpfc/lpfc_init.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index d9628770f11e..a91914968cbb 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -2341,13 +2341,20 @@ lpfc_cleanup(struct lpfc_vport *vport)
continue;
}
+ /* take care of nodes in unused state before the state
+ * machine taking action.
+ */
+ if (ndlp->nlp_state == NLP_STE_UNUSED_NODE) {
+ lpfc_nlp_put(ndlp);
+ continue;
+ }
+
if (ndlp->nlp_type & NLP_FABRIC)
lpfc_disc_state_machine(vport, ndlp, NULL,
NLP_EVT_DEVICE_RECOVERY);
lpfc_disc_state_machine(vport, ndlp, NULL,
NLP_EVT_DEVICE_RM);
-
}
/* At this point, ALL ndlp's should be gone