From 40d71baf7f44b17fcf323ebed8b835d86f340e84 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Fri, 21 Feb 2014 05:23:21 +0100 Subject: 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 --- sys/src/cmd/exportfs/exportfs.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'sys/src/cmd/exportfs/exportfs.c') 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; -- cgit v1.2.3