Skip to content

Commit

Permalink
[SCSI] libfc: have rport_create do a lookup for pre-existing rports f…
Browse files Browse the repository at this point in the history
…irst

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>
  • Loading branch information
Joe Eykholt authored and James Bottomley committed Sep 10, 2009
1 parent 48f0090 commit 19f97e3
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 6 deletions.
9 changes: 3 additions & 6 deletions drivers/scsi/libfc/fc_disc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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_name != lport->wwpn) {
if (!rdata) {
rdata = lport->tt.rport_lookup(lport, ids->port_id);
if (!rdata) {
rdata = lport->tt.rport_create(lport, ids);
if (!rdata)
error = -ENOMEM;
}
rdata = lport->tt.rport_create(lport, ids);
if (!rdata)
error = -ENOMEM;
}
if (rdata) {
rdata->ops = &fc_disc_rport_ops;
Expand Down
4 changes: 4 additions & 0 deletions drivers/scsi/libfc/fc_rport.c
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,10 @@ static struct fc_rport_priv *fc_rport_create(struct fc_lport *lport,
{
struct fc_rport_priv *rdata;

rdata = lport->tt.rport_lookup(lport, ids->port_id);
if (rdata)
return rdata;

rdata = kzalloc(sizeof(*rdata), GFP_KERNEL);
if (!rdata)
return NULL;
Expand Down

0 comments on commit 19f97e3

Please sign in to comment.