Make EWOULDBLOCK a recoverable error so that the request is retransmitted.

This bug results in data corruption with NFS/TCP. Writes are silently dropped
on EWOULDBLOCK (because socket send buffer is full and sockbuf timer fires).

Reviewed by: ups@
This commit is contained in:
Mohan Srinivasan 2006-10-31 20:25:37 +00:00
parent d4d2a400e4
commit 88b94fba38
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=163830

View File

@ -639,9 +639,9 @@ nfs_send(struct socket *so, struct sockaddr *nam, struct mbuf *top,
/*
* Handle any recoverable (soft) socket errors here. (?)
* Make EWOULDBLOCK a recoverable error, we'll rexmit from nfs_timer().
*/
if (error != EINTR && error != ERESTART && error != EIO &&
error != EWOULDBLOCK && error != EPIPE)
if (error != EINTR && error != ERESTART && error != EIO && error != EPIPE)
error = 0;
}
out: