summaryrefslogtreecommitdiff
path: root/sys/src/lib9p
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2020-03-08 05:52:23 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2020-03-08 05:52:23 +0100
commit5826140ce394025d21ab8d2b2c21c12720e88a59 (patch)
tree02c6cdfe61761eab8d98c67873c573f8b08d6e49 /sys/src/lib9p
parent59fdb3a12cd1e6ec9f65ca014c23fd27bea45245 (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.c11
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);
}