From 88b94fba382a3110ae4d4711e0e7f6c3ca900e43 Mon Sep 17 00:00:00 2001 From: Mohan Srinivasan Date: Tue, 31 Oct 2006 20:25:37 +0000 Subject: [PATCH] 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@ --- sys/nfsclient/nfs_socket.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/nfsclient/nfs_socket.c b/sys/nfsclient/nfs_socket.c index 9634dd61593..3b7c2b26b87 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: -- 2.45.2