Messages in this thread | | | Date | Wed, 14 Jan 2009 08:40:08 +0100 | From | Volker Lendecke <> | Subject | Re: maximum buffer size for splice(2) tcp->pipe? |
| |
On Wed, Jan 14, 2009 at 12:15:04AM +0100, Eric Dumazet wrote: > Volker, your splice() is a blocking one, from tcp socket to a pipe ?
Yes, it is.
> If no other thread is reading the pipe, then you might block forever > in splice_to_pipe() as soon pipe is full (16 pages).
Why does it block when the pipe is full? Why doesn't it return a short read, just like the read(2) call does? We need to cope with that behaviour anyway.
> As pages are not necessarly full (each skb will use at least one page, even if > its length is small), it is not really possible to use splice() like this. > > In your case, only safe way with current kernel would be to call splice() > asking for no more than 16 bytes, that would be really insane for your needs. > > You may prefer a non blocking mode, at least when calling splice_to_pipe()
Which fd do I have to set the nonblocking flag on? The TCP socket I read from, or the pipe I write to?
Thanks for the hint anyway :-)
Volker [unhandled content-type:application/pgp-signature] | |