summaryrefslogtreecommitdiff
path: root/sys/src/cmd/exportfs/exportfs.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2014-02-21 05:23:21 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2014-02-21 05:23:21 +0100
commit40d71baf7f44b17fcf323ebed8b835d86f340e84 (patch)
treec7ade2871e492d464d1ddcdc3e207df7f8f2e4e8 /sys/src/cmd/exportfs/exportfs.c
parentd7378c10d846ce21ef43271ae4daa8a5e5250d46 (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.c10
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;