diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-02-21 05:23:21 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-02-21 05:23:21 +0100 |
commit | 40d71baf7f44b17fcf323ebed8b835d86f340e84 (patch) | |
tree | c7ade2871e492d464d1ddcdc3e207df7f8f2e4e8 /sys/src/cmd/exportfs/exportfs.c | |
parent | d7378c10d846ce21ef43271ae4daa8a5e5250d46 (diff) |
exportfs: bring back the changes, bug was due to rendezvous group being shared by listen
exportfs used pid of slave proc as rendezvous tag. when we
changed it to use Proc* memory address, there where tag
collisions because listen didnt fork the rendezvous group (bug!).
for now, just do rfork(RFREND) in main just in case.
will fix aux/listen in a follow up changeset.
--
cinap
Diffstat (limited to 'sys/src/cmd/exportfs/exportfs.c')
-rw-r--r-- | sys/src/cmd/exportfs/exportfs.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/sys/src/cmd/exportfs/exportfs.c b/sys/src/cmd/exportfs/exportfs.c index c16220dee..522e06025 100644 --- a/sys/src/cmd/exportfs/exportfs.c +++ b/sys/src/cmd/exportfs/exportfs.c @@ -230,7 +230,7 @@ main(int argc, char **argv) DEBUG(DFD, "exportfs: started\n"); - rfork(RFNOTEG); + rfork(RFNOTEG|RFREND); if(messagesize == 0){ messagesize = iounit(netfd); @@ -460,8 +460,8 @@ reply(Fcall *r, Fcall *t, char *err) fatal(Enomem); n = convS2M(t, data, messagesize); if(write(netfd, data, n)!=n){ - syslog(0, "exportfs", "short write: %r"); - fatal("mount write"); + /* not fatal, might have got a note due to flush */ + fprint(2, "exportfs: short write in reply: %r\n"); } free(data); } @@ -570,8 +570,6 @@ getsbuf(void) unlock(&sbufalloc); w = emallocz(sizeof(*w) + messagesize); } - w->pid = 0; - w->canint = 0; w->flushtag = NOTAG; return w; } @@ -579,8 +577,6 @@ getsbuf(void) void putsbuf(Fsrpc *w) { - w->pid = 0; - w->canint = 0; w->flushtag = NOTAG; lock(&sbufalloc); w->next = sbufalloc.free; |