[SCSI] lpfc 8.2.3 : Miscellaneous Small Fixes - part 1
Miscellaneous Small Fixes - part 1 - Fix typo kmzlloc -> kzalloc - Fix discovery ndlp use after free panic - Fix link event causing flood of 0108 messages - Relieve some mbox congestion on link up with 100 vports - Fix broken vport parameters - Prevent lock recursion in logo_reglogin_issue - Split uses of error variable in lpfc_pci_probe_one into retval and error - Remove completion code related to dev_loss_tmo - Remove unused LPFC_MAX_HBQ #define - Don't compare pointers to 0 for sparse - Make 2 functions static for sparse - Fix default rpi cleanup code causing rogue ndlps to remain on the NPR list - Remove annoying ELS messages when driver is unloaded - Fix Cannot issue Register Fabric login problems on link up - Remove LPFC_EVT_DEV_LOSS_DELAY - Fix FC port swap test leads to device going offline - Fix vport CT flags to only be set when accepted - Add code to handle signals during vport_create - Fix too many retries in FC-AL mode - Pull lpfc_port_link_failure out of lpfc_linkdown_port Signed-off-by: James Smart <James.Smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Cette révision appartient à :

révisé par
James Bottomley

Parent
0b727fea7a
révision
98c9ea5c02
@@ -125,15 +125,26 @@ lpfc_vport_sparm(struct lpfc_hba *phba, struct lpfc_vport *vport)
|
||||
pmb->vport = vport;
|
||||
rc = lpfc_sli_issue_mbox_wait(phba, pmb, phba->fc_ratov * 2);
|
||||
if (rc != MBX_SUCCESS) {
|
||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_INIT | LOG_VPORT,
|
||||
"1818 VPort failed init, mbxCmd x%x "
|
||||
"READ_SPARM mbxStatus x%x, rc = x%x\n",
|
||||
mb->mbxCommand, mb->mbxStatus, rc);
|
||||
lpfc_mbuf_free(phba, mp->virt, mp->phys);
|
||||
kfree(mp);
|
||||
if (rc != MBX_TIMEOUT)
|
||||
mempool_free(pmb, phba->mbox_mem_pool);
|
||||
return -EIO;
|
||||
if (signal_pending(current)) {
|
||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_INIT | LOG_VPORT,
|
||||
"1830 Signal aborted mbxCmd x%x\n",
|
||||
mb->mbxCommand);
|
||||
lpfc_mbuf_free(phba, mp->virt, mp->phys);
|
||||
kfree(mp);
|
||||
if (rc != MBX_TIMEOUT)
|
||||
mempool_free(pmb, phba->mbox_mem_pool);
|
||||
return -EINTR;
|
||||
} else {
|
||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_INIT | LOG_VPORT,
|
||||
"1818 VPort failed init, mbxCmd x%x "
|
||||
"READ_SPARM mbxStatus x%x, rc = x%x\n",
|
||||
mb->mbxCommand, mb->mbxStatus, rc);
|
||||
lpfc_mbuf_free(phba, mp->virt, mp->phys);
|
||||
kfree(mp);
|
||||
if (rc != MBX_TIMEOUT)
|
||||
mempool_free(pmb, phba->mbox_mem_pool);
|
||||
return -EIO;
|
||||
}
|
||||
}
|
||||
|
||||
memcpy(&vport->fc_sparam, mp->virt, sizeof (struct serv_parm));
|
||||
@@ -204,6 +215,7 @@ lpfc_vport_create(struct fc_vport *fc_vport, bool disable)
|
||||
int instance;
|
||||
int vpi;
|
||||
int rc = VPORT_ERROR;
|
||||
int status;
|
||||
|
||||
if ((phba->sli_rev < 3) ||
|
||||
!(phba->sli3_options & LPFC_SLI3_NPIV_ENABLED)) {
|
||||
@@ -248,13 +260,19 @@ lpfc_vport_create(struct fc_vport *fc_vport, bool disable)
|
||||
vport->vpi = vpi;
|
||||
lpfc_debugfs_initialize(vport);
|
||||
|
||||
if (lpfc_vport_sparm(phba, vport)) {
|
||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_VPORT,
|
||||
"1813 Create VPORT failed. "
|
||||
"Cannot get sparam\n");
|
||||
if ((status = lpfc_vport_sparm(phba, vport))) {
|
||||
if (status == -EINTR) {
|
||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_VPORT,
|
||||
"1831 Create VPORT Interrupted.\n");
|
||||
rc = VPORT_ERROR;
|
||||
} else {
|
||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_VPORT,
|
||||
"1813 Create VPORT failed. "
|
||||
"Cannot get sparam\n");
|
||||
rc = VPORT_NORESOURCES;
|
||||
}
|
||||
lpfc_free_vpi(phba, vpi);
|
||||
destroy_port(vport);
|
||||
rc = VPORT_NORESOURCES;
|
||||
goto error_out;
|
||||
}
|
||||
|
||||
|
Référencer dans un nouveau ticket
Bloquer un utilisateur