tvacfs: fix create srv with ORCLOSE on plan 9 - plan9port - [fork] Plan 9 from user space
(HTM) git clone git://src.adamsgaard.dk/plan9port
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 3a616eaa80070a1b89b907baacc8b603b02c670e
(DIR) parent ac2662695a41207618873798914d70242b826a63
(HTM) Author: David du Colombier <0intro@gmail.com>
Date: Fri, 3 Aug 2012 21:12:10 +0200
vacfs: fix create srv with ORCLOSE on plan 9
In the current code, the srv file is removed
just after the main thread exits, while the
srv thread is still running, which is not
tthe expected behavior.
We moved the srv creation just before the
procrfork, in order that the srv file will
not be removed until the srv thread exits.
R=rsc
http://codereview.appspot.com/6397047
Diffstat:
M src/cmd/vac/vacfs.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
---
(DIR) diff --git a/src/cmd/vac/vacfs.c b/src/cmd/vac/vacfs.c
t@@ -233,6 +233,17 @@ threadmain(int argc, char *argv[])
mfd[0] = p[0];
mfd[1] = p[0];
srvfd = p[1];
+#ifndef PLAN9PORT
+ if(defsrv){
+ srvname = smprint("/srv/%s", defsrv);
+ fd = create(srvname, OWRITE|ORCLOSE, 0666);
+ if(fd < 0)
+ sysfatal("create %s: %r", srvname);
+ if(fprint(fd, "%d", srvfd) < 0)
+ sysfatal("write %s: %r", srvname);
+ free(srvname);
+ }
+#endif
}
#ifdef PLAN9PORT
t@@ -245,15 +256,6 @@ threadmain(int argc, char *argv[])
if(!stdio){
close(p[0]);
- if(defsrv){
- srvname = smprint("/srv/%s", defsrv);
- fd = create(srvname, OWRITE|ORCLOSE, 0666);
- if(fd < 0)
- sysfatal("create %s: %r", srvname);
- if(fprint(fd, "%d", srvfd) < 0)
- sysfatal("write %s: %r", srvname);
- free(srvname);
- }
if(defmnt){
if(mount(srvfd, -1, defmnt, MREPL|MCREATE, "") < 0)
sysfatal("mount %s: %r", defmnt);