diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2020-03-08 05:52:23 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2020-03-08 05:52:23 +0100 |
commit | 5826140ce394025d21ab8d2b2c21c12720e88a59 (patch) | |
tree | 02c6cdfe61761eab8d98c67873c573f8b08d6e49 /sys/src/lib9p | |
parent | 59fdb3a12cd1e6ec9f65ca014c23fd27bea45245 (diff) |
lib9p: restore previous behaviour of fd group sharing
it appears that too many fileservers rely on the fileserver
process sharing the filedescriptors with children of the
caller to postmntsrv() or threadpostmntsrv().
restoring previous behaviour for now.
Diffstat (limited to 'sys/src/lib9p')
-rw-r--r-- | sys/src/lib9p/post.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/src/lib9p/post.c b/sys/src/lib9p/post.c index 0241c3157..65a98e1f6 100644 --- a/sys/src/lib9p/post.c +++ b/sys/src/lib9p/post.c @@ -23,7 +23,10 @@ _postmountsrv(Srv *s, char *name, char *mtpt, int flag) if(_forker == nil) sysfatal("no forker"); - _forker(postproc, s, RFNAMEG|RFFDG|RFNOTEG); + _forker(postproc, s, RFNAMEG|RFNOTEG); + + rfork(RFFDG); + rendezvous(0, 0); close(s->infd); if(s->infd != s->outfd) @@ -52,7 +55,10 @@ _postsharesrv(Srv *s, char *name, char *mtpt, char *desc) if(_forker == nil) sysfatal("no forker"); - _forker(postproc, s, RFNAMEG|RFFDG|RFNOTEG); + _forker(postproc, s, RFNAMEG|RFNOTEG); + + rfork(RFFDG); + rendezvous(0, 0); close(s->infd); if(s->infd != s->outfd) @@ -72,6 +78,7 @@ postproc(void *v) Srv *s; s = v; + rendezvous(0, 0); close(s->srvfd); srv(s); } |