git: 9front

Download patch

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);
 
--