diff options
author | mohans <mohans@FreeBSD.org> | 2006-10-31 20:25:37 +0000 |
---|---|---|
committer | mohans <mohans@FreeBSD.org> | 2006-10-31 20:25:37 +0000 |
commit | 6afec858bc3ed9bd4299008e252c8c2fc740ecdc (patch) | |
tree | f762b997c4f3347cc57d590ac6dce7c7eefa8350 /sys/nfsclient/nfs_socket.c | |
parent | 66c70dc62d6466ad578228394726a75fc2bc5d00 (diff) | |
download | FreeBSD-src-6afec858bc3ed9bd4299008e252c8c2fc740ecdc.zip FreeBSD-src-6afec858bc3ed9bd4299008e252c8c2fc740ecdc.tar.gz |
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@
Diffstat (limited to 'sys/nfsclient/nfs_socket.c')
-rw-r--r-- | sys/nfsclient/nfs_socket.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/nfsclient/nfs_socket.c b/sys/nfsclient/nfs_socket.c index 9634dd6..3b7c2b2 100644 --- a/sys/nfsclient/nfs_socket.c +++ b/sys/nfsclient/nfs_socket.c @@ -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: |