Subject: Re: Data corruption issue with splice() on 2.6.27.10

From: Willy Tarreau <[email-masked]>
Date: Wed, 7 Jan 2009 13:55:35 +0100

On Wed, Jan 07, 2009 at 03:46:29PM +0300, Evgeniy Polyakov wrote:
> On Wed, Jan 07, 2009 at 11:42:46PM +1100, Herbert Xu ([email-masked]) wrote:
> > > Doesn't your tcp fallbacks to kernel_sendmsg() without sg in
> > > tcp_sendpage()? And then just feeds data into the stack the same way it
> > > happens with send() i.e. by copying it.
> > 
> > Good point.  Did he check GSO though? GSO will always enable SG
> > on the socket regardless of the netdev's setting.  And if the device
> > started out with SG enabled then recent kernels will enable GSO
> > by default.
> 
> Willy, what was the kernel you are tested no-accel behaviour and what
> were the gso settings?

kernel is 2.6.27.10 + a few patches (squashfs, etc..., nothing related to
this area). My ethtool is a bit old and does not report GSO. I'll download
and rebuild a more recent one and retest.

> Can you add a simple single print into tcp_sendpage() to determine if
> content was copied or fed into do_tcp_sendpages() otherwise?

Yes, will do that too.

Willy