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:
parent
d4d2a400e4
commit
88b94fba38
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=163830
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user