diff options
author | Mike Christie <michaelc@cs.wisc.edu> | 2005-11-30 00:12:49 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2005-12-13 20:11:55 -0500 |
commit | e6273993dbcb8d805dd868e2128c3503a3bb1964 (patch) | |
tree | bec5bdc35e9824a2898333e160786d7110f645c5 /drivers/scsi | |
parent | 0d2f16559a9015c4daa8babfc443bf2b8740fbd9 (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.c | 5 |
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 | } |