mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 10:57:46 +00:00
[SCSI] libfc: fix: empty zone causes endless discovery retries.
On some switches, an empty zone causes GPN_FT to be rejected with reason 9 (unable) explanation 7 (FC-4 types not registered), which causes discovery to be retried endlessly. Treat this as just an empty response and consider discovery complete. 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
883a337cf8
commit
c762608bf7
2 changed files with 4 additions and 0 deletions
|
@ -617,6 +617,9 @@ static void fc_disc_gpn_ft_resp(struct fc_seq *sp, struct fc_frame *fp,
|
||||||
"(check zoning)\n", cp->ct_reason,
|
"(check zoning)\n", cp->ct_reason,
|
||||||
cp->ct_explan);
|
cp->ct_explan);
|
||||||
event = DISC_EV_FAILED;
|
event = DISC_EV_FAILED;
|
||||||
|
if (cp->ct_reason == FC_FS_RJT_UNABL &&
|
||||||
|
cp->ct_explan == FC_FS_EXP_FTNR)
|
||||||
|
event = DISC_EV_SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
FC_DISC_DBG(disc, "GPN_FT unexpected response code "
|
FC_DISC_DBG(disc, "GPN_FT unexpected response code "
|
||||||
"%x\n", ntohs(cp->ct_cmd));
|
"%x\n", ntohs(cp->ct_cmd));
|
||||||
|
|
|
@ -87,6 +87,7 @@ enum fc_ct_explan {
|
||||||
FC_FS_EXP_PNAM = 0x02, /* port name not registered */
|
FC_FS_EXP_PNAM = 0x02, /* port name not registered */
|
||||||
FC_FS_EXP_NNAM = 0x03, /* node name not registered */
|
FC_FS_EXP_NNAM = 0x03, /* node name not registered */
|
||||||
FC_FS_EXP_COS = 0x04, /* class of service not registered */
|
FC_FS_EXP_COS = 0x04, /* class of service not registered */
|
||||||
|
FC_FS_EXP_FTNR = 0x07, /* FC-4 types not registered */
|
||||||
/* definitions not complete */
|
/* definitions not complete */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue