summaryrefslogtreecommitdiffstats
path: root/sys/nfsclient/nfs_socket.c
diff options
context:
space:
mode:
authormohans <mohans@FreeBSD.org>2006-10-31 20:25:37 +0000
committermohans <mohans@FreeBSD.org>2006-10-31 20:25:37 +0000
commit6afec858bc3ed9bd4299008e252c8c2fc740ecdc (patch)
treef762b997c4f3347cc57d590ac6dce7c7eefa8350 /sys/nfsclient/nfs_socket.c
parent66c70dc62d6466ad578228394726a75fc2bc5d00 (diff)
downloadFreeBSD-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.c4
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:
OpenPOWER on IntegriCloud