> From: HighWind Software Information <email@example.com>
> Date: Sat, 22 May 1999 08:17:24 -0400 (EDT)
> Subject: writev() BUGS!
> 1. The following program hangs with VECTOR_COUNT set to high values
> (greater than 16). It seems that Linux advertises a UIO_MAXIOV that is
> large (1024) but it doesn't work for values that high.
> Just compile the program and see for yourself. Then reset VECTOR_COUNT
> to 16 and it works just fine.
> % uname -a
> Linux magic.highwind.com 2.2.5-15 #1 Mon Apr 19 23:00:46 EDT 1999 i686 unknown
> I'm fairly sure this is in the latest kernel as well.
> 2. Although I do not have a test program for it, I am 100% sure that
> even in the latest kernel, I sometimes see PARTIAL ::writev()'s of
> data on blocking network connections.
> Given that ::writev() on a blocking socket should never do
> that, I suspect something isn't right in the networking code.
> I wish this test program would show that problem,
> unfortunately, it doesn't. However, I KNOW for a fact that I have seen
> it. Perhaps some kind of signal logic interrupts writev(). I'm unsure.
> In any case, ::writev() does sometimes perform a partial write
> on a blocking socket, that is a BUG.
You're wrong here. man writev.
It says that writev operates just like write except that data is
take from vector instead of a contiguous buffer.
Both write and writev do sometimes perform a partial write on
a blocking(and non-blocking) socket.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to firstname.lastname@example.org
Please read the FAQ at http://www.tux.org/lkml/