diff options
author | Joe Eykholt <jeykholt@cisco.com> | 2009-08-25 14:02:11 -0700 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-09-10 12:07:48 -0500 |
commit | 0f6c6149870e03c722af6eae406758b28cb71320 (patch) | |
tree | 7dca629255539d73bd44fea4fb50a9c0a9ddd079 /include/scsi | |
parent | 8025b5db7e10cd90cadec940cc766be3bbda65e8 (diff) | |
download | linux-0f6c6149870e03c722af6eae406758b28cb71320.tar.gz linux-0f6c6149870e03c722af6eae406758b28cb71320.tar.bz2 linux-0f6c6149870e03c722af6eae406758b28cb71320.zip |
[SCSI] libfc: do not log off rports before or after discovery
When receiving an RSCN, do not log off all rports. This is
extremely disruptive. If, after the GPN_FT response, some
rports haven't been listed, delete them.
Add field disc_id to structs fc_rport_priv and fc_disc.
disc_id is an arbitrary serial number used to identify the
rports found by the latest discovery. This eliminates the need
to go through the rport list when restarting discovery.
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>
Diffstat (limited to 'include/scsi')
-rw-r--r-- | include/scsi/libfc.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h index 093b0439a2cf..517dce5c8d0d 100644 --- a/include/scsi/libfc.h +++ b/include/scsi/libfc.h @@ -202,6 +202,7 @@ struct fc_rport_libfc_priv { * @ids: remote port identifiers and roles * @flags: REC and RETRY supported flags * @max_seq: maximum number of concurrent sequences + * @disc_id: discovery identifier * @maxframe_size: maximum frame size * @retries: retry count in current state * @e_d_tov: error detect timeout value (in msec) @@ -218,6 +219,7 @@ struct fc_rport_priv { struct fc_rport_identifiers ids; u16 flags; u16 max_seq; + u16 disc_id; u16 maxframe_size; unsigned int retries; unsigned int e_d_tov; @@ -678,6 +680,7 @@ struct fc_disc { unsigned char requested; unsigned short seq_count; unsigned char buf_len; + u16 disc_id; void (*disc_callback)(struct fc_lport *, enum fc_disc_event); |