[SCSI] iscsi: dequeue all buffers from queue
authorMike Christie <michaelc@cs.wisc.edu>
Wed, 3 May 2006 00:46:49 +0000 (19:46 -0500)
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>
Wed, 10 May 2006 15:13:44 +0000 (10:13 -0500)
commit665b44aee34e9f2c64558df4ec01d40576e45651
tree2ac5ff4b706f45c0259bdd9ecbe18d792255f109
parent8d2860b3c3e933304f49171770658c00ed26fd79
[SCSI] iscsi: dequeue all buffers from queue

debugged by wrwhitehead@novell.com
patch and analysis by fujita.tomonori@lab.ntt.co.jp

Only tcp_read_sock and recv_actor (iscsi_tcp_data_recv for us) see
desc.count. It is is used just for permitting tcp_read_sock to read
the portion of data in the socket.

When iscsi_tcp_data_recv sees a partial header, it sets
desc.count. However, it is possible that the next skb (containing the
rest of the header) still does not come. So I'm not sure that this
scheme is completely correct.

Ideally, we should use the exact length of the data in the socket for
desc.count. However, it is not so simple (see SIOCINQ in
tcp_ioctl). So I think that iscsi_tcp_data_recv can just stop playing
with desc.count and tell tcp_read_sock to read the all skbs. As
proposed already, if iscsi_tcp_data_ready sets desc.count to
non-zero, tcp_read_sock does that.

Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/iscsi_tcp.c