[SCSI] libiscsi, iscsi_tcp: check suspend bit before each call to xmit_task
authorMike Christie <michaelc@cs.wisc.edu>
Thu, 20 Aug 2009 20:11:03 +0000 (15:11 -0500)
committerJames Bottomley <James.Bottomley@suse.de>
Sat, 5 Sep 2009 14:42:48 +0000 (09:42 -0500)
commit70b31c152dc49ef70bd2b34ad53ccbd9bb4116d4
tree9d3c857ed4604b7843a0bec05e85afb095228082
parentd1af8a328755f51c9b76157a8692e56520d3fd94
[SCSI] libiscsi, iscsi_tcp: check suspend bit before each call to xmit_task

If we had multiple tasks on the cmd or requeue  lists, and iscsi_tcp
returns a error, the write_space function can still run and queue
iscsi_data_xmit. If it was a legetimate problem and iscsi_conn_failure
was run but we raced and iscsi_data_xmit was run first it could miss
the suspend bit checks, and start trying to send data again and hit
another timeout. A similar problem is present when using cxgb3i.

This has libiscsi check the suspend bit before calling the xmit
task callout, so we at least do not try sending multiple tasks
(one could be sent).

Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/libiscsi.c