svn commit: r275796 - stable/10/sys/rpc

Konstantin Belousov kib at FreeBSD.org
Mon Dec 15 10:58:03 UTC 2014


Author: kib
Date: Mon Dec 15 10:58:02 2014
New Revision: 275796
URL: https://svnweb.freebsd.org/changeset/base/275796

Log:
  MFC r275618:
  Check for stop condition in nfsd threads.

Modified:
  stable/10/sys/rpc/svc.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/rpc/svc.c
==============================================================================
--- stable/10/sys/rpc/svc.c	Mon Dec 15 10:50:26 2014	(r275795)
+++ stable/10/sys/rpc/svc.c	Mon Dec 15 10:58:02 2014	(r275796)
@@ -1101,6 +1101,7 @@ svc_run_internal(SVCGROUP *grp, bool_t i
 	SVCXPRT *xprt;
 	enum xprt_stat stat;
 	struct svc_req *rqstp;
+	struct proc *p;
 	size_t sz;
 	int error;
 
@@ -1183,11 +1184,22 @@ svc_run_internal(SVCGROUP *grp, bool_t i
 					> grp->sg_minthreads)
 					&& !st->st_xprt)
 					break;
-			} else if (error) {
+			} else if (error != 0) {
+				KASSERT(error == EINTR || error == ERESTART,
+				    ("non-signal error %d", error));
 				mtx_unlock(&grp->sg_lock);
-				svc_exit(pool);
-				mtx_lock(&grp->sg_lock);
-				break;
+				p = curproc;
+				PROC_LOCK(p);
+				if (P_SHOULDSTOP(p)) {
+					thread_suspend_check(0);
+					PROC_UNLOCK(p);
+					mtx_lock(&grp->sg_lock);
+				} else {
+					PROC_UNLOCK(p);
+					svc_exit(pool);
+					mtx_lock(&grp->sg_lock);
+					break;
+				}
 			}
 			continue;
 		}


More information about the svn-src-stable mailing list