forked from Minki/linux
[SCSI] lpfc 8.1.1 : Adjust use of scsi_block_requests and interaction w/ FC transport
- Remove unnecessary scsi_block_requests calls on rport deletes. This was deadlocking the sdev removals as they wanted to flush commands. - No longer block requests when adding the remote port (to block discovery). Instead, register, then change port role. Maps to Qlogic behavior, and closer to the register-node-upon-first-ELS behavior. Signed-off-by: James Smart <James.Smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
6281bfe000
commit
23dc04f1ec
@ -1017,12 +1017,7 @@ lpfc_register_remote_port(struct lpfc_hba * phba,
|
||||
rport_ids.port_name = wwn_to_u64(ndlp->nlp_portname.u.wwn);
|
||||
rport_ids.port_id = ndlp->nlp_DID;
|
||||
rport_ids.roles = FC_RPORT_ROLE_UNKNOWN;
|
||||
if (ndlp->nlp_type & NLP_FCP_TARGET)
|
||||
rport_ids.roles |= FC_RPORT_ROLE_FCP_TARGET;
|
||||
if (ndlp->nlp_type & NLP_FCP_INITIATOR)
|
||||
rport_ids.roles |= FC_RPORT_ROLE_FCP_INITIATOR;
|
||||
|
||||
scsi_block_requests(phba->host);
|
||||
ndlp->rport = rport = fc_remote_port_add(phba->host, 0, &rport_ids);
|
||||
if (!rport) {
|
||||
dev_printk(KERN_WARNING, &phba->pcidev->dev,
|
||||
@ -1039,7 +1034,16 @@ lpfc_register_remote_port(struct lpfc_hba * phba,
|
||||
}
|
||||
rdata = rport->dd_data;
|
||||
rdata->pnode = ndlp;
|
||||
scsi_unblock_requests(phba->host);
|
||||
|
||||
if (ndlp->nlp_type & NLP_FCP_TARGET)
|
||||
rport_ids.roles |= FC_RPORT_ROLE_FCP_TARGET;
|
||||
if (ndlp->nlp_type & NLP_FCP_INITIATOR)
|
||||
rport_ids.roles |= FC_RPORT_ROLE_FCP_INITIATOR;
|
||||
|
||||
|
||||
if (rport_ids.roles != FC_RPORT_ROLE_UNKNOWN)
|
||||
fc_remote_port_rolechg(rport, rport_ids.roles);
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
@ -1053,9 +1057,7 @@ lpfc_unregister_remote_port(struct lpfc_hba * phba,
|
||||
|
||||
ndlp->rport = NULL;
|
||||
rdata->pnode = NULL;
|
||||
scsi_block_requests(phba->host);
|
||||
fc_remote_port_delete(rport);
|
||||
scsi_unblock_requests(phba->host);
|
||||
|
||||
return;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user