On Wed, Dec 16, 2009 at 06:24:04AM +, David Holland wrote:
On Tue, Dec 15, 2009 at 06:35:18PM +, David Laight wrote:
Modified Files:
src/sys/kern: sys_pipe.c
Log Message:
Don't ERESTART write() calls for now.
I suspect some programs don't allow for the partial transfer.
More likely, the pipe is stuttering and repeating itself. Once data's
been transferred, you *have* to succeed and return the amount
transferred; otherwise anything that tries again (whether the
application or transparently by syscall restart) is going to send the
same data over again.
The code to handle that is in the sys_read()/sys_write() path.
In the same place that EINTR gets converted to 'success' if
any bytes have been transferred.
David
--
David Laight: da...@l8s.co.uk