ref: bd86dd4dc2a14084b7503f406e1ea8be6f478411
parent: 1d1882c0dd59d466ec8f705cfded4b7385c0598c
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Mon Aug 5 18:31:37 EDT 2013
fix this megashit
--- a/sys/src/cmd/cwfs/all.h
+++ b/sys/src/cmd/cwfs/all.h
@@ -56,6 +56,7 @@
Queue* serveq;
Queue* raheadq;
Rabuf* rabuffree;
+QLock reflock;
Lock rabuflock;
Tlock tlocks[NTLOCK];
Lock tlocklock;
--- a/sys/src/cmd/cwfs/main.c
+++ b/sys/src/cmd/cwfs/main.c
@@ -314,6 +314,8 @@
printsizes();
}
+ qlock(&reflock);
+ qunlock(&reflock);
serveq = newqueue(1000, "9P service"); /* tunable */
raheadq = newqueue(1000, "readahead"); /* tunable */
@@ -449,6 +451,7 @@
Msgbuf *mb;
for (;;) {+ qlock(&reflock);
/* read 9P request from a network input process */
mb = fs_recv(serveq, 0);
assert(mb->magic == Mbmagic);
@@ -457,6 +460,7 @@
if (cp == nil)
panic("serve: nil mb->chan");rlock(&cp->reflock);
+ qunlock(&reflock);
rlock(&mainlock);
--
⑨