diff options
author | Joe Eykholt <jeykholt@cisco.com> | 2009-08-25 17:02:11 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-09-10 13:07:48 -0400 |
commit | 0f6c6149870e03c722af6eae406758b28cb71320 (patch) | |
tree | 7dca629255539d73bd44fea4fb50a9c0a9ddd079 /include/scsi | |
parent | 8025b5db7e10cd90cadec940cc766be3bbda65e8 (diff) |
[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 { | |||
202 | * @ids: remote port identifiers and roles | 202 | * @ids: remote port identifiers and roles |
203 | * @flags: REC and RETRY supported flags | 203 | * @flags: REC and RETRY supported flags |
204 | * @max_seq: maximum number of concurrent sequences | 204 | * @max_seq: maximum number of concurrent sequences |
205 | * @disc_id: discovery identifier | ||
205 | * @maxframe_size: maximum frame size | 206 | * @maxframe_size: maximum frame size |
206 | * @retries: retry count in current state | 207 | * @retries: retry count in current state |
207 | * @e_d_tov: error detect timeout value (in msec) | 208 | * @e_d_tov: error detect timeout value (in msec) |
@@ -218,6 +219,7 @@ struct fc_rport_priv { | |||
218 | struct fc_rport_identifiers ids; | 219 | struct fc_rport_identifiers ids; |
219 | u16 flags; | 220 | u16 flags; |
220 | u16 max_seq; | 221 | u16 max_seq; |
222 | u16 disc_id; | ||
221 | u16 maxframe_size; | 223 | u16 maxframe_size; |
222 | unsigned int retries; | 224 | unsigned int retries; |
223 | unsigned int e_d_tov; | 225 | unsigned int e_d_tov; |
@@ -678,6 +680,7 @@ struct fc_disc { | |||
678 | unsigned char requested; | 680 | unsigned char requested; |
679 | unsigned short seq_count; | 681 | unsigned short seq_count; |
680 | unsigned char buf_len; | 682 | unsigned char buf_len; |
683 | u16 disc_id; | ||
681 | 684 | ||
682 | void (*disc_callback)(struct fc_lport *, | 685 | void (*disc_callback)(struct fc_lport *, |
683 | enum fc_disc_event); | 686 | enum fc_disc_event); |