[SCSI] libfc: have rport_create do a lookup for pre-existing rports first
For future discovery patches, change rport_create to return a previously created rport_priv that has the FC_ID as long as it isn't in deleted state. Signed-off-by: Joe Eykholt <jeykholt@cisco.com> Signed-off-by: Robert Love <robert.w.love@intel.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
48f00902ba
commit
19f97e3c0a
|
@ -377,12 +377,9 @@ static int fc_disc_new_target(struct fc_disc *disc,
|
||||||
ids->port_id != fc_host_port_id(lport->host) &&
|
ids->port_id != fc_host_port_id(lport->host) &&
|
||||||
ids->port_name != lport->wwpn) {
|
ids->port_name != lport->wwpn) {
|
||||||
if (!rdata) {
|
if (!rdata) {
|
||||||
rdata = lport->tt.rport_lookup(lport, ids->port_id);
|
rdata = lport->tt.rport_create(lport, ids);
|
||||||
if (!rdata) {
|
if (!rdata)
|
||||||
rdata = lport->tt.rport_create(lport, ids);
|
error = -ENOMEM;
|
||||||
if (!rdata)
|
|
||||||
error = -ENOMEM;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (rdata) {
|
if (rdata) {
|
||||||
rdata->ops = &fc_disc_rport_ops;
|
rdata->ops = &fc_disc_rport_ops;
|
||||||
|
|
|
@ -98,6 +98,10 @@ static struct fc_rport_priv *fc_rport_create(struct fc_lport *lport,
|
||||||
{
|
{
|
||||||
struct fc_rport_priv *rdata;
|
struct fc_rport_priv *rdata;
|
||||||
|
|
||||||
|
rdata = lport->tt.rport_lookup(lport, ids->port_id);
|
||||||
|
if (rdata)
|
||||||
|
return rdata;
|
||||||
|
|
||||||
rdata = kzalloc(sizeof(*rdata), GFP_KERNEL);
|
rdata = kzalloc(sizeof(*rdata), GFP_KERNEL);
|
||||||
if (!rdata)
|
if (!rdata)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
Loading…
Reference in New Issue