]> err.no Git - linux-2.6/commitdiff
[SCSI] iscsi: nodelay fix
authorMike Christie <michaelc@cs.wisc.edu>
Tue, 13 Sep 2005 02:01:28 +0000 (21:01 -0500)
committerJames Bottomley <jejb@mulgrave.(none)>
Tue, 20 Sep 2005 17:30:39 +0000 (12:30 -0500)
From: tomof@acm.org

I'm not sure about this. I don't think that NODELAY option hurts
performance. However, open-iscsi does not use MSG_MORE properly with
sendpage, so NODELAY option hurts the open-iscsi performance.

I've attached a patch to fix NODELAY and MSG_MORE problems and the
write performance results with disktest.

I use Opteron boxes connected directly, Chelsio NICs, 1500-byte MTU,
64 KB I/O size, and the iSCSI parameters on open-iscsi web site.

With only NODELAY fix, the performance drops, as you said. On the
other hand, NODELAY and MSG_MORE fixes improve the performance
overall.

Signed-off-by: Alex Aizman <itn780@yahoo.com>
Signed-off-by: Dmitry Yusupov <dmitry_yus@yahoo.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/iscsi_tcp.c

index 810e5e59658fae840b0ad7c889be47f1bb26d068..584e51024fd61bb1f792ca59efe74a0ab9afadb2 100644 (file)
@@ -1385,7 +1385,7 @@ iscsi_sendpage(struct iscsi_conn *conn, struct iscsi_buf *buf,
        BUG_ON(buf->sent + size > buf->sg.length);
        if (size > *count)
                size = *count;
-       if (buf->sent + size != buf->sg.length)
+       if (buf->sent + size != buf->sg.length || *count != size)
                flags |= MSG_MORE;
 
        res = iscsi_send(sk, buf, size, flags);