commit 3a616eaa80070a1b89b907baacc8b603b02c670e from: David du Colombier <0intro@gmail.com> date: Fri Aug 03 19:12:10 2012 UTC 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 the 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 commit - ac2662695a41207618873798914d70242b826a63 commit + 3a616eaa80070a1b89b907baacc8b603b02c670e blob - c6609397cd16873289e17da4d76b131e196d4f92 blob + 643b6c46aba142a30d4e56edb68482a4d75198e5 --- src/cmd/vac/vacfs.c +++ src/cmd/vac/vacfs.c @@ -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 @@ -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);