diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-10-23 17:16:22 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-10-23 17:16:22 +0200 |
commit | b728f50a790afeec349c575b99028063a9d230c9 (patch) | |
tree | a54a358aa301b3aa33c53af7100bafabf4b998ff /sys/src/lib9p | |
parent | 98dba9a4a311dd7b7435a5a5d66619f2a2b4b6cf (diff) |
lib9p: limit the number of srv processes kept arround 8
Diffstat (limited to 'sys/src/lib9p')
-rw-r--r-- | sys/src/lib9p/srv.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/src/lib9p/srv.c b/sys/src/lib9p/srv.c index 898961cab..779af8dd0 100644 --- a/sys/src/lib9p/srv.c +++ b/sys/src/lib9p/srv.c @@ -748,6 +748,11 @@ srvwork(void *v) case Tstat: sstat(srv, r); break; case Twstat: swstat(srv, r); break; } + if(srv->sref.ref > 8 && srv->spid != getpid()){ + decref(&srv->sref); + qunlock(&srv->slock); + return; + } qunlock(&srv->slock); } @@ -803,6 +808,7 @@ srv(Srv *srv) fmtinstall('D', dirfmt); fmtinstall('F', fcallfmt); + srv->spid = getpid(); srv->sref.ref = 0; srv->rref.ref = 0; |