diff options
author | Yi Zou <yi.zou@intel.com> | 2011-05-16 19:45:57 -0400 |
---|---|---|
committer | James Bottomley <jbottomley@parallels.com> | 2011-05-24 12:37:25 -0400 |
commit | 8467b96c035a45418c5db2619f396b7131b4efa8 (patch) | |
tree | 3ac398e8052932ebc1846b0d506b020a73d8ea9c /drivers/scsi/libfc | |
parent | 0a219edb263ef93e4fd7a83804bea667e72a7bfa (diff) |
[SCSI] libfc: do not immediately retry the cmd when seq_send fails in fc_fcp_send_data
Currently, when seq_send() fails in fc_fcp_send_data(),
fc_fcp_retry_cmd() would complete this failed I/O directly and let
scsi-ml retry. However, target side is not notified which may hang the
target. Instead, we should just bail out from from fc_fcp_send_data
and let scsi-ml times it out and aborts this I/O instead.
Signed-off-by: Yi Zou <yi.zou@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <jbottomley@parallels.com>
Diffstat (limited to 'drivers/scsi/libfc')
-rw-r--r-- | drivers/scsi/libfc/fc_fcp.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/scsi/libfc/fc_fcp.c b/drivers/scsi/libfc/fc_fcp.c index 57704e814681..9cd2149519ac 100644 --- a/drivers/scsi/libfc/fc_fcp.c +++ b/drivers/scsi/libfc/fc_fcp.c | |||
@@ -681,8 +681,7 @@ static int fc_fcp_send_data(struct fc_fcp_pkt *fsp, struct fc_seq *seq, | |||
681 | error = lport->tt.seq_send(lport, seq, fp); | 681 | error = lport->tt.seq_send(lport, seq, fp); |
682 | if (error) { | 682 | if (error) { |
683 | WARN_ON(1); /* send error should be rare */ | 683 | WARN_ON(1); /* send error should be rare */ |
684 | fc_fcp_retry_cmd(fsp); | 684 | return error; |
685 | return 0; | ||
686 | } | 685 | } |
687 | fp = NULL; | 686 | fp = NULL; |
688 | } | 687 | } |