aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libfc
diff options
context:
space:
mode:
authorJoe Eykholt <jeykholt@cisco.com>2009-08-25 17:02:33 -0400
committerJames Bottomley <James.Bottomley@suse.de>2009-09-10 13:07:50 -0400
commitc762608bf75f792dcaf3658338189b9970951704 (patch)
tree16ed727f905466e550de7c2bee962c06736bda1d /drivers/scsi/libfc
parent883a337cf8969b2906ffd8aeb838d875f7338190 (diff)
[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>
Diffstat (limited to 'drivers/scsi/libfc')
-rw-r--r--drivers/scsi/libfc/fc_disc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/scsi/libfc/fc_disc.c b/drivers/scsi/libfc/fc_disc.c
index 844376c1d8dc..9b8043bdeddb 100644
--- a/drivers/scsi/libfc/fc_disc.c
+++ b/drivers/scsi/libfc/fc_disc.c
@@ -617,6 +617,9 @@ static void fc_disc_gpn_ft_resp(struct fc_seq *sp, struct fc_frame *fp,
617 "(check zoning)\n", cp->ct_reason, 617 "(check zoning)\n", cp->ct_reason,
618 cp->ct_explan); 618 cp->ct_explan);
619 event = DISC_EV_FAILED; 619 event = DISC_EV_FAILED;
620 if (cp->ct_reason == FC_FS_RJT_UNABL &&
621 cp->ct_explan == FC_FS_EXP_FTNR)
622 event = DISC_EV_SUCCESS;
620 } else { 623 } else {
621 FC_DISC_DBG(disc, "GPN_FT unexpected response code " 624 FC_DISC_DBG(disc, "GPN_FT unexpected response code "
622 "%x\n", ntohs(cp->ct_cmd)); 625 "%x\n", ntohs(cp->ct_cmd));