summaryrefslogtreecommitdiffstats
path: root/sys/rpc/clnt.h
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.h
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.h')
-rw-r--r--sys/rpc/clnt.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/rpc/clnt.h b/sys/rpc/clnt.h
index 74d5813..e4da36a 100644
--- a/sys/rpc/clnt.h
+++ b/sys/rpc/clnt.h
@@ -433,10 +433,11 @@ extern CLIENT *clnt_dg_create(struct socket *so,
* rpcvers_t vers; -- version number
* size_t sendsz; -- buffer recv size
* size_t recvsz; -- buffer send size
+ * int intrflag; -- is it interruptible
*/
extern CLIENT *clnt_vc_create(struct socket *so,
struct sockaddr *svcaddr, rpcprog_t program, rpcvers_t version,
- size_t sendsz, size_t recvsz);
+ size_t sendsz, size_t recvsz, int intrflag);
/*
* struct netconfig *nconf; -- network type
OpenPOWER on IntegriCloud