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 <[email protected]>
Tested-by: Ross Brattain <[email protected]>
---

 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 f880d40..fd1060a 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,
                error = lport->tt.seq_send(lport, seq, fp);
                if (error) {
                        WARN_ON(1);             /* send error should be rare */
-                       fc_fcp_retry_cmd(fsp);
-                       return 0;
+                       return error;
                }
                fp = NULL;
        }

_______________________________________________
devel mailing list
[email protected]
https://lists.open-fcoe.org/mailman/listinfo/devel

Reply via email to