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.h | |
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.h')
-rw-r--r-- | sys/src/cmd/exportfs/exportfs.h | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/sys/src/cmd/exportfs/exportfs.h b/sys/src/cmd/exportfs/exportfs.h index 77709d0d9..b3587fab2 100644 --- a/sys/src/cmd/exportfs/exportfs.h +++ b/sys/src/cmd/exportfs/exportfs.h @@ -15,8 +15,6 @@ typedef struct Qidtab Qidtab; struct Fsrpc { Fsrpc *next; /* freelist */ - uintptr pid; /* Pid of slave process executing the rpc */ - int canint; /* Interrupt gate */ int flushtag; /* Tag on which to reply to flush */ Fcall work; /* Plan 9 incoming Fcall */ uchar buf[]; /* Data buffer */ @@ -53,9 +51,10 @@ struct File struct Proc { - uintptr pid; + Lock; Fsrpc *busy; Proc *next; + int pid; }; struct Qidtab @@ -70,7 +69,6 @@ struct Qidtab enum { - MAXPROC = 50, FHASHSIZE = 64, Fidchunk = 1000, Npsmpt = 32, @@ -128,7 +126,7 @@ void freefile(File*); void slaveopen(Fsrpc*); void slaveread(Fsrpc*); void slavewrite(Fsrpc*); -void blockingslave(void); +void blockingslave(Proc*); void reopen(Fid *f); void noteproc(int, char*); void flushaction(void*, char*); |