Commit Diff


commit - ba3110263311be872f4d1d1e11735d7afee1f61a
commit + d4ccb0a943fb312d949726827d4e4e71e6a7a0bb
blob - 4f9ea2c7baac2cc51335496e9fbda427b6d539c8
blob + 67d90a5ea8970a51b59da904c9d4cbcf128f3664
--- CONTRIBUTORS
+++ CONTRIBUTORS
@@ -35,6 +35,7 @@ Rob Kroeger <robkroeger@gmail.com>
 Rob Pike <robpike@gmail.com>
 Russ Cox <rsc@swtch.com>
 Sean McKean <smckean83@gmail.com>
+Ties Bos <gitbisector@gmail.com>
 Tim Newsham <tim.newsham@gmail.com>
 Tony Lainson <t.lainson@gmail.com>
 Venkatesh Srinivas <extrudedaluminiu@gmail.com>
blob - 97783fb5c6dcf107fe258c86bca09ba224d337f5
blob + 8fa56ff45d44a3f67589c70e4278bf2da00f6f6f
--- src/cmd/9pfuse/main.c
+++ src/cmd/9pfuse/main.c
@@ -257,6 +257,7 @@ allocfh(CFid *fid)
 {
 	return _alloc(fid, 0);
 }
+
 uvlong
 allocnodeid(CFid *fid)
 {
@@ -412,6 +413,7 @@ fuseforget(FuseMsg *m)
 		fprint(2, "bad count in forget\n");
 	ff->ref = 1;
 	freefusefid(ff);
+	freefusemsg(m);
 }
 
 /*
@@ -1255,8 +1257,15 @@ fusedispatch(void *v)
 		fusehandlers[fuselist[i].op] = fuselist[i].fn;
 	}
 
-	while((m = recvp(fusechan)) != nil)
-		threadcreate(fusethread, m, STACK);
+	while((m = recvp(fusechan)) != nil) {
+		switch(m->hdr->opcode) {
+		case FUSE_FORGET:
+		 	fusehandlers[m->hdr->opcode](m);
+			break;
+		default: 
+			threadcreate(fusethread, m, STACK);
+		}
+	}
 }
 
 void*