[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120517215759.GR14498@1wt.eu>
Date: Thu, 17 May 2012 23:57:59 +0200
From: Willy Tarreau <w@....eu>
To: Eric Dumazet <eric.dumazet@...il.com>
Cc: netdev@...r.kernel.org
Subject: Re: Stable regression with 'tcp: allow splice() to build full TSO packets'
On Thu, May 17, 2012 at 11:50:10PM +0200, Eric Dumazet wrote:
> On Thu, 2012-05-17 at 23:40 +0200, Eric Dumazet wrote:
>
> > I dont understand why we should tcp_push() if we sent 0 bytes in this
> > splice() call.
> >
> > The push() should have be done already by prior splice() call, dont you
> > think ?
> >
> > out:
> > if (copied && !(flags & MSG_SENDPAGE_NOTLAST))
> > tcp_push(sk, flags, mss_now, tp->nonagle);
> >
>
> I think I now understand
>
> One splice() syscall actually calls do_tcp_sendpages() several times
> (N).
>
> Problem is N-1 calls are done with MSG_SENDPAGE_NOTLAST set
>
> And last one with MSG_SENDPAGE_NOTLAST unset
>
> So maybe we should replace this test by :
>
> if (!(flags & MSG_SENDPAGE_NOTLAST))
> tcp_push(...);
Just tested, and it unfortunately does not fix the issue :-(
I'll see if I can log errors from lower layers.
Willy
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists