summaryrefslogtreecommitdiffstats
path: root/sys/rpc/clnt_rc.c
diff options
context:
space:
mode:
authorrmacklem <rmacklem@FreeBSD.org>2011-04-27 18:19:26 +0000
committerrmacklem <rmacklem@FreeBSD.org>2011-04-27 18:19:26 +0000
commitb6ed6bf65d437f20a27d864b19504b1b74794647 (patch)
treeee0c9845f07e58264646801249ae55250ef3edae /sys/rpc/clnt_rc.c
parent4695871f8d57f73b63559a7be2ef78ed105b9a2e (diff)
downloadFreeBSD-src-b6ed6bf65d437f20a27d864b19504b1b74794647.zip
FreeBSD-src-b6ed6bf65d437f20a27d864b19504b1b74794647.tar.gz
This patch is believed to fix a problem in the kernel rpc for
non-interruptible NFS mounts, where a kernel thread will seem to be stuck sleeping on "rpccon". The msleep() in clnt_vc_create() that was waiting to a TCP connect to complete would return ERESTART, since PCATCH was specified. Then the tsleep() in clnt_reconnect_call() would sleep for 1 second and then try again and again and... The patch changes the msleep() in clnt_vc_create() so it only sets the PCATCH flag for interruptible cases. Tested by: pho Reviewed by: jhb MFC after: 2 weeks
Diffstat (limited to 'sys/rpc/clnt_rc.c')
-rw-r--r--sys/rpc/clnt_rc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/rpc/clnt_rc.c b/sys/rpc/clnt_rc.c
index 24fc09a..e263278 100644
--- a/sys/rpc/clnt_rc.c
+++ b/sys/rpc/clnt_rc.c
@@ -195,7 +195,7 @@ clnt_reconnect_connect(CLIENT *cl)
else
newclient = clnt_vc_create(so,
(struct sockaddr *) &rc->rc_addr, rc->rc_prog, rc->rc_vers,
- rc->rc_sendsz, rc->rc_recvsz);
+ rc->rc_sendsz, rc->rc_recvsz, rc->rc_intr);
td->td_ucred = oldcred;
if (!newclient) {
OpenPOWER on IntegriCloud