aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorMike Christie <michaelc@cs.wisc.edu>2005-11-30 00:12:49 -0500
committerJames Bottomley <jejb@mulgrave.(none)>2005-12-13 20:11:55 -0500
commite6273993dbcb8d805dd868e2128c3503a3bb1964 (patch)
treebec5bdc35e9824a2898333e160786d7110f645c5 /drivers/scsi
parent0d2f16559a9015c4daa8babfc443bf2b8740fbd9 (diff)
[SCSI] iscsi: redirect fix
From tomof@acm.org: There is one more issue about Equallogic systems. They send re-direction info with FIN. I think that the kernel module needs to let iscsid to read data from the socket before killing it. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: Alex Aizman <itn780@yahoo.com> Signed-off-by: Dmitry Yusupov <dmitry_yus@yahoo.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/iscsi_tcp.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c
index 0769e9482194..f12d605c7729 100644
--- a/drivers/scsi/iscsi_tcp.c
+++ b/drivers/scsi/iscsi_tcp.c
@@ -1237,8 +1237,9 @@ iscsi_tcp_state_change(struct sock *sk)
1237 conn = (struct iscsi_conn*)sk->sk_user_data; 1237 conn = (struct iscsi_conn*)sk->sk_user_data;
1238 session = conn->session; 1238 session = conn->session;
1239 1239
1240 if (sk->sk_state == TCP_CLOSE_WAIT || 1240 if ((sk->sk_state == TCP_CLOSE_WAIT ||
1241 sk->sk_state == TCP_CLOSE) { 1241 sk->sk_state == TCP_CLOSE) &&
1242 !atomic_read(&sk->sk_rmem_alloc)) {
1242 debug_tcp("iscsi_tcp_state_change: TCP_CLOSE|TCP_CLOSE_WAIT\n"); 1243 debug_tcp("iscsi_tcp_state_change: TCP_CLOSE|TCP_CLOSE_WAIT\n");
1243 iscsi_conn_failure(conn, ISCSI_ERR_CONN_FAILED); 1244 iscsi_conn_failure(conn, ISCSI_ERR_CONN_FAILED);
1244 } 1245 }