summaryrefslogtreecommitdiff
path: root/sys/src/cmd/exportfs/exportfs.h
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.h
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.h')
-rw-r--r--sys/src/cmd/exportfs/exportfs.h8
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*);