lkml.org 
[lkml]   [2009]   [Jan]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: Data corruption issue with splice() on 2.6.27.10
    On Thu, Jan 08, 2009 at 07:16:51AM +0000, Jarek Poplawski wrote:
    > On 06-01-2009 19:15, Willy Tarreau wrote:
    > ...
    > > Ah, so you might also have discovered a few annoyances with the API, eg
    > > the fact that splice() returns after the first read in non-blocking mode,
    > > as well as the fact that it never returns zero on close, but -EAGAIN,
    > > which requires an additional recv(MSG_PEEK) to distinguish between a
    > > close and a lack of data. But I leave that for a later discussion, let's
    > > address the corruption issue first.
    >
    > FYI, this should be just fixed:
    > http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=4f7d54f59bc470f0aaa932f747a95232d7ebf8b1
    >

    Ah cool, thanks Jarek for notifying us. Indeed, it's the exact same patch
    I had pending here ;-)

    I'll ping Greg for a backport into -stable, as applications relying on this
    will clearly not work without that fix.

    The other one I had consists in removing "|| !timeo" at the end of the loop,
    because otherwise splice() returns very small chunks (typically 1448 or
    1460 bytes), leading to disastrous performance on high bandwidth links.
    At 10 Gbps, this means about 800000 calls to splice() per second!

    Regards,
    Willy



    \
     
     \ /
      Last update: 2009-01-08 09:07    [W:3.765 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site