Browse Source

Plan 9 from Bell Labs 2007-09-14

David du Colombier 16 years ago
parent
commit
47314ca789

+ 5 - 5
dist/replica/_plan9.db

@@ -9959,7 +9959,7 @@ sys/src/cmd/cc/com.c - 664 sys sys 1168702346 22212
 sys/src/cmd/cc/com64.c - 664 sys sys 1143240308 10001
 sys/src/cmd/cc/compat - 664 sys sys 1014925177 684
 sys/src/cmd/cc/compat.c - 664 sys sys 1132451523 454
-sys/src/cmd/cc/dcl.c - 664 sys sys 1189631756 27067
+sys/src/cmd/cc/dcl.c - 664 sys sys 1143695250 27003
 sys/src/cmd/cc/dpchk.c - 664 sys sys 1175892134 7760
 sys/src/cmd/cc/funct.c - 664 sys sys 984718510 6167
 sys/src/cmd/cc/lex.c - 664 sys sys 1188413849 24667
@@ -10300,7 +10300,7 @@ sys/src/cmd/execnet/main.c - 664 sys sys 1019861330 657
 sys/src/cmd/execnet/mkfile - 664 sys sys 1032059543 208
 sys/src/cmd/execnet/note.c - 664 sys sys 1019855740 2315
 sys/src/cmd/exportfs - 20000000775 sys sys 1066825703 0
-sys/src/cmd/exportfs/exportfs.c - 664 sys sys 1164133573 16377
+sys/src/cmd/exportfs/exportfs.c - 664 sys sys 1189701138 16416
 sys/src/cmd/exportfs/exportfs.h - 664 sys sys 1135487971 2809
 sys/src/cmd/exportfs/exportsrv.c - 664 sys sys 1135488028 11946
 sys/src/cmd/exportfs/mkfile - 664 sys sys 1066825703 194
@@ -14323,11 +14323,11 @@ sys/src/cmd/venti/srv/conf.rc - 775 sys sys 1189304120 1416
 sys/src/cmd/venti/srv/config.c - 664 sys sys 1178160303 5566
 sys/src/cmd/venti/srv/conv.c - 664 sys sys 1178160303 14052
 sys/src/cmd/venti/srv/dat.h - 664 sys sys 1178160303 19018
-sys/src/cmd/venti/srv/dcache.c - 664 sys sys 1178160304 18409
+sys/src/cmd/venti/srv/dcache.c - 664 sys sys 1189738448 18608
 sys/src/cmd/venti/srv/disksched.c - 664 sys sys 1142736352 2125
 sys/src/cmd/venti/srv/dump.c - 664 sys sys 1142736352 1642
 sys/src/cmd/venti/srv/findscore.c - 664 sys sys 1179863768 2195
-sys/src/cmd/venti/srv/fixarenas.c - 664 sys sys 1178160904 40515
+sys/src/cmd/venti/srv/fixarenas.c - 664 sys sys 1189738460 40533
 sys/src/cmd/venti/srv/fixarenas0.c - 664 sys sys 1142736352 36271
 sys/src/cmd/venti/srv/fmtarenas.c - 664 sys sys 1177189436 2702
 sys/src/cmd/venti/srv/fmtbloom.c - 664 sys sys 1142736352 2293
@@ -14338,7 +14338,7 @@ sys/src/cmd/venti/srv/graph.c - 664 sys sys 1177189436 4190
 sys/src/cmd/venti/srv/hdisk.c - 664 sys sys 1177189437 16510
 sys/src/cmd/venti/srv/httpd.c - 664 sys sys 1177189437 22784
 sys/src/cmd/venti/srv/icache.c - 664 sys sys 1186114652 8778
-sys/src/cmd/venti/srv/icachewrite.c - 664 sys sys 1178160304 7655
+sys/src/cmd/venti/srv/icachewrite.c - 664 sys sys 1189738523 7785
 sys/src/cmd/venti/srv/ifile.c - 664 sys sys 1189307036 2592
 sys/src/cmd/venti/srv/index.c - 664 sys sys 1178160304 17239
 sys/src/cmd/venti/srv/index2.c - 664 sys sys 1142736354 21620

+ 5 - 5
dist/replica/plan9.db

@@ -9959,7 +9959,7 @@ sys/src/cmd/cc/com.c - 664 sys sys 1168702346 22212
 sys/src/cmd/cc/com64.c - 664 sys sys 1143240308 10001
 sys/src/cmd/cc/compat - 664 sys sys 1014925177 684
 sys/src/cmd/cc/compat.c - 664 sys sys 1132451523 454
-sys/src/cmd/cc/dcl.c - 664 sys sys 1189631756 27067
+sys/src/cmd/cc/dcl.c - 664 sys sys 1143695250 27003
 sys/src/cmd/cc/dpchk.c - 664 sys sys 1175892134 7760
 sys/src/cmd/cc/funct.c - 664 sys sys 984718510 6167
 sys/src/cmd/cc/lex.c - 664 sys sys 1188413849 24667
@@ -10300,7 +10300,7 @@ sys/src/cmd/execnet/main.c - 664 sys sys 1019861330 657
 sys/src/cmd/execnet/mkfile - 664 sys sys 1032059543 208
 sys/src/cmd/execnet/note.c - 664 sys sys 1019855740 2315
 sys/src/cmd/exportfs - 20000000775 sys sys 1066825703 0
-sys/src/cmd/exportfs/exportfs.c - 664 sys sys 1164133573 16377
+sys/src/cmd/exportfs/exportfs.c - 664 sys sys 1189701138 16416
 sys/src/cmd/exportfs/exportfs.h - 664 sys sys 1135487971 2809
 sys/src/cmd/exportfs/exportsrv.c - 664 sys sys 1135488028 11946
 sys/src/cmd/exportfs/mkfile - 664 sys sys 1066825703 194
@@ -14323,11 +14323,11 @@ sys/src/cmd/venti/srv/conf.rc - 775 sys sys 1189304120 1416
 sys/src/cmd/venti/srv/config.c - 664 sys sys 1178160303 5566
 sys/src/cmd/venti/srv/conv.c - 664 sys sys 1178160303 14052
 sys/src/cmd/venti/srv/dat.h - 664 sys sys 1178160303 19018
-sys/src/cmd/venti/srv/dcache.c - 664 sys sys 1178160304 18409
+sys/src/cmd/venti/srv/dcache.c - 664 sys sys 1189738448 18608
 sys/src/cmd/venti/srv/disksched.c - 664 sys sys 1142736352 2125
 sys/src/cmd/venti/srv/dump.c - 664 sys sys 1142736352 1642
 sys/src/cmd/venti/srv/findscore.c - 664 sys sys 1179863768 2195
-sys/src/cmd/venti/srv/fixarenas.c - 664 sys sys 1178160904 40515
+sys/src/cmd/venti/srv/fixarenas.c - 664 sys sys 1189738460 40533
 sys/src/cmd/venti/srv/fixarenas0.c - 664 sys sys 1142736352 36271
 sys/src/cmd/venti/srv/fmtarenas.c - 664 sys sys 1177189436 2702
 sys/src/cmd/venti/srv/fmtbloom.c - 664 sys sys 1142736352 2293
@@ -14338,7 +14338,7 @@ sys/src/cmd/venti/srv/graph.c - 664 sys sys 1177189436 4190
 sys/src/cmd/venti/srv/hdisk.c - 664 sys sys 1177189437 16510
 sys/src/cmd/venti/srv/httpd.c - 664 sys sys 1177189437 22784
 sys/src/cmd/venti/srv/icache.c - 664 sys sys 1186114652 8778
-sys/src/cmd/venti/srv/icachewrite.c - 664 sys sys 1178160304 7655
+sys/src/cmd/venti/srv/icachewrite.c - 664 sys sys 1189738523 7785
 sys/src/cmd/venti/srv/ifile.c - 664 sys sys 1189307036 2592
 sys/src/cmd/venti/srv/index.c - 664 sys sys 1178160304 17239
 sys/src/cmd/venti/srv/index2.c - 664 sys sys 1142736354 21620

+ 5 - 0
dist/replica/plan9.log

@@ -52770,3 +52770,8 @@
 1189652404 1 c 386/bin/fossil/flchk - 775 sys sys 1189651283 238380
 1189652404 2 c 386/bin/fossil/flfmt - 775 sys sys 1189651287 246385
 1189652404 3 c 386/bin/fossil/fossil - 775 sys sys 1189651294 365129
+1189657804 0 c sys/src/cmd/cc/dcl.c - 664 sys sys 1143695250 27003
+1189701004 0 c sys/src/cmd/exportfs/exportfs.c - 664 sys sys 1189701138 16416
+1189738804 0 c sys/src/cmd/venti/srv/dcache.c - 664 sys sys 1189738448 18608
+1189738804 1 c sys/src/cmd/venti/srv/fixarenas.c - 664 sys sys 1189738460 40533
+1189738804 2 c sys/src/cmd/venti/srv/icachewrite.c - 664 sys sys 1189738523 7785

+ 0 - 2
sys/src/cmd/cc/dcl.c

@@ -975,8 +975,6 @@ rsametype(Type *t1, Type *t2, int n, int f)
 				snap(t1);
 			if(t2->link == T)
 				snap(t2);
-			if(t1 != t2 && t1->link == T && t2->link == T)
-				return 0;
 			t1 = t1->link;
 			t2 = t2->link;
 			for(;;) {

+ 13 - 11
sys/src/cmd/exportfs/exportfs.c

@@ -266,10 +266,10 @@ main(int argc, char **argv)
 	if (readn(netfd, &initial, sizeof(ulong)) < sizeof(ulong))
 		fatal("can't read initial string: %r\n");
 
-	if (!strncmp((char *)&initial, "impo", sizeof(ulong))) {
+	if (strncmp((char *)&initial, "impo", sizeof(ulong)) == 0) {
 		char buf[128], *p, *args[3];
 
-		// New import.  Read import's parameters...
+		/* New import.  Read import's parameters... */
 		initial = 0;
 
 		p = buf;
@@ -289,16 +289,16 @@ main(int argc, char **argv)
 		if (tokenize(buf, args, nelem(args)) != 2)
 			fatal("impo arguments invalid: impo%s...\n", buf);
 
-		if (!strcmp(args[0], "aan"))
+		if (strcmp(args[0], "aan") == 0)
 			filterp = aanfilter;
-		else if (strcmp(args[0], "nofilter"))
+		else if (strcmp(args[0], "nofilter") != 0)
 			fatal("import filter argument unsupported: %s\n", args[0]);
 
-		if (!strcmp(args[1], "ssl"))
+		if (strcmp(args[1], "ssl") == 0)
 			encproto = Encssl;
-		else if (!strcmp(args[1], "tls"))
+		else if (strcmp(args[1], "tls") == 0)
 			encproto = Enctls;
-		else if (strcmp(args[1], "clear"))
+		else if (strcmp(args[1], "clear") != 0)
 			fatal("import encryption proto unsupported: %s\n", args[1]);
 
 		if (encproto == Enctls)
@@ -374,9 +374,11 @@ main(int argc, char **argv)
 	}
 }
 
-// WARNING: Replace this with the original version as soon as all 
-// _old_ imports have been replaced with negotiating imports.  Also
-// cpu relies on this (which needs to be fixed!) -- pb.
+/*
+ * WARNING: Replace this with the original version as soon as all 
+ * _old_ imports have been replaced with negotiating imports.  Also
+ * cpu relies on this (which needs to be fixed!) -- pb.
+ */
 static int
 localread9pmsg(int fd, void *abuf, uint n, ulong *initial)
 {
@@ -854,7 +856,7 @@ filter(int fd, char *cmd)
 	int p[2], lfd, len, nb, argc;
 	char newport[128], buf[128], devdir[40], *s, *file, *argv[16];
 
-	// Get a free port and post it to the client.
+	/* Get a free port and post it to the client. */
 	if (announce(anstring, devdir) < 0)
 		sysfatal("filter: Cannot announce %s: %r\n", anstring);
 

+ 16 - 9
sys/src/cmd/venti/srv/dcache.c

@@ -451,9 +451,10 @@ dirtydblock(DBlock *b, int dirty)
 {
 	int odirty;
 	Part *p;
+	static int bitched;
 
-
-	trace(TraceBlock, "dirtydblock enter %s 0x%llux %d from 0x%lux", b->part->name, b->addr, dirty, getcallerpc(&b));
+	trace(TraceBlock, "dirtydblock enter %s 0x%llux %d from 0x%lux",
+		b->part->name, b->addr, dirty, getcallerpc(&b));
 	assert(b->ref != 0);
 	assert(b->mode==ORDWR || b->mode==OWRITE);
 
@@ -468,6 +469,9 @@ dirtydblock(DBlock *b, int dirty)
 		trace(TraceBlock, "dirtydblock allocwriteproc %s", p->name);
 		/* XXX hope this doesn't fail! */
 		p->writechan = chancreate(sizeof(DBlock*), dcache.nblocks);
+		if (p->writechan == nil && bitched++ == 0)
+			fprint(2, "%s: dirtydblock: couldn't create writechan\n",
+				argv0);
 		vtproc(writeproc, p);
 	}
 	qlock(&dcache.lock);
@@ -800,20 +804,22 @@ flushproc(void *v)
 		trace(TraceProc, "writeblocks t=%lud", (ulong)(nsec()/1000)-t0);
 		i = 0;
 		for(j=1; j<DirtyMax; j++){
-			trace(TraceProc, "writeblocks.%d t=%lud", j, (ulong)(nsec()/1000)-t0);
+			trace(TraceProc, "writeblocks.%d t=%lud",
+				j, (ulong)(nsec()/1000)-t0);
 			i += parallelwrites(write+i, write+n, j);
 		}
 		if(i != n){
 			fprint(2, "in flushproc i=%d n=%d\n", i, n);
 			for(i=0; i<n; i++)
-				fprint(2, "\tblock %d: dirty=%d\n", i, write[i]->dirty);
+				fprint(2, "\tblock %d: dirty=%d\n",
+					i, write[i]->dirty);
 			abort();
 		}
 
-/* XXX
-* the locking here is suspect.  what if a block is redirtied
-* after the write happens?  we'll still decrement dcache.ndirty here.
-*/
+/*
+ * XXX the locking here is suspect.  what if a block is redirtied
+ * after the write happens?  we'll still decrement dcache.ndirty here.
+ */
 		trace(TraceProc, "undirty.%d t=%lud", j, (ulong)(nsec()/1000)-t0);
 		qlock(&dcache.lock);
 		dcache.diskstate = as;
@@ -850,7 +856,8 @@ writeproc(void *v)
 		trace(TraceProc, "writepart %s 0x%llux", p->name, b->addr);
 		diskaccess(0);
 		if(writepart(p, b->addr, b->data, b->size) < 0)
-			fprint(2, "write error: %r\n"); /* XXX details! */
+			fprint(2, "%s: writeproc: part %s addr 0x%llux: write error: %r\n",
+				argv0, p->name, b->addr);
 		addstat(StatApartWrite, 1);
 		addstat(StatApartWriteBytes, b->size);
 		b->dirty = 0;

+ 4 - 3
sys/src/cmd/venti/srv/fixarenas.c

@@ -793,8 +793,8 @@ guessgeometry(void)
 		}
 		ap.arenabase = bestdiff;
 	}
-	
-	ap.tabbase = (PartBlank+HeadSize+ap.blocksize-1)&~(ap.blocksize-1);
+
+	ap.tabbase = (PartBlank+HeadSize+ap.blocksize-1) & ~(ap.blocksize-1);
 	/*
 	 * XXX pick up table, check arenabase.
 	 * XXX pick up table, record base name.
@@ -806,7 +806,8 @@ guessgeometry(void)
 	 */
 	if(ap.arenabase == 0){
 		for(i=0; i<nelem(tabsizes); i++){
-			ap.arenabase = (PartBlank+HeadSize+tabsizes[i]+ap.blocksize-1)&~(ap.blocksize-1);
+			ap.arenabase = (PartBlank + HeadSize + tabsizes[i] + 
+				ap.blocksize - 1) & ~(ap.blocksize - 1);
 			p = pagein(ap.arenabase, Block);
 			if(u32(p) == ArenaHeadMagic)
 				break;

+ 33 - 25
sys/src/cmd/venti/srv/icachewrite.c

@@ -55,13 +55,15 @@ nextchunk(Index *ix, ISect *is, IEntry **pie, u64int *paddr, uint *pnbuf)
 
 	bsize = 1<<is->blocklog;
 	iefirst = *pie;
-	addr = is->blockbase + ((u64int)(hashbits(iefirst->score, 32) / ix->div - is->start) << is->blocklog);
+	addr = is->blockbase + ((u64int)(hashbits(iefirst->score, 32) /
+		ix->div - is->start) << is->blocklog);
 	nbuf = 0;
-	for(l=&iefirst->nextdirty; (ie=*l)!=nil; l=&(*l)->nextdirty){
-		naddr = is->blockbase + ((u64int)(hashbits(ie->score, 32) / ix->div - is->start) << is->blocklog);
+	for(l = &iefirst->nextdirty; (ie = *l) != nil; l = &(*l)->nextdirty){
+		naddr = is->blockbase + ((u64int)(hashbits(ie->score, 32) /
+			ix->div - is->start) << is->blocklog);
 		if(naddr - addr >= Bufsize)
 			break;
-		nbuf = naddr-addr;
+		nbuf = naddr - addr;
 	}
 	nbuf += bsize;
 
@@ -89,16 +91,17 @@ icachewritesect(Index *ix, ISect *is, u8int *buf)
 	else
 		hi = is->stop * ix->div - 1;
 
-	trace(TraceProc, "icachewritesect enter %ud %ud %llud", lo, hi, iwrite.as.aa);
+	trace(TraceProc, "icachewritesect enter %ud %ud %llud",
+		lo, hi, iwrite.as.aa);
 
 	iedirty = icachedirty(lo, hi, iwrite.as.aa);
 	iedirty = iesort(iedirty);
-	bsize = 1<<is->blocklog;
+	bsize = 1 << is->blocklog;
 	err = 0;
 
 	while(iedirty){
 		disksched();
-		while((t=icachesleeptime) == SleepForever){
+		while((t = icachesleeptime) == SleepForever){
 			sleep(1000);
 			disksched();
 		}
@@ -108,10 +111,11 @@ icachewritesect(Index *ix, ISect *is, u8int *buf)
 		trace(TraceProc, "icachewritesect nextchunk");
 		chunk = nextchunk(ix, is, &iedirty, &addr, &nbuf);
 
-		trace(TraceProc, "icachewritesect readpart 0x%llux+0x%ux", addr, nbuf);
+		trace(TraceProc, "icachewritesect readpart 0x%llux+0x%ux",
+			addr, nbuf);
 		if(readpart(is->part, addr, buf, nbuf) < 0){
-			/* XXX more details here */
-			fprint(2, "icachewriteproc readpart: %r\n");
+			fprint(2, "%s: part %s addr 0x%llux: icachewritesect "
+				"readpart: %r\n", argv0, is->part->name, addr);
 			err  = -1;
 			continue;
 		}
@@ -120,31 +124,35 @@ icachewritesect(Index *ix, ISect *is, u8int *buf)
 		addstat(StatIsectRead, 1);
 
 		for(l=&chunk; (ie=*l)!=nil; l=&ie->nextdirty){
-		again:
-			naddr = is->blockbase + ((u64int)(hashbits(ie->score, 32) / ix->div - is->start) << is->blocklog);
+again:
+			naddr = is->blockbase + ((u64int)(hashbits(ie->score,
+				32) / ix->div - is->start) << is->blocklog);
 			off = naddr - addr;
 			if(off+bsize > nbuf){
-				fprint(2, "whoops! addr=0x%llux nbuf=%ud addr+nbuf=0x%llux naddr=0x%llux\n",
-					addr, nbuf, addr+nbuf, naddr);
+				fprint(2, "%s: whoops! addr=0x%llux nbuf=%ud "
+					"addr+nbuf=0x%llux naddr=0x%llux\n",
+					argv0, addr, nbuf, addr+nbuf, naddr);
 				assert(off+bsize <= nbuf);
 			}
 			unpackibucket(&ib, buf+off, is->bucketmagic);
 			if(okibucket(&ib, is) < 0){
-				fprint(2, "bad bucket XXX\n");
+				fprint(2, "%s: bad bucket XXX\n", argv0);
 				goto skipit;
 			}
-			trace(TraceProc, "icachewritesect add %V at 0x%llux", ie->score, naddr);
+			trace(TraceProc, "icachewritesect add %V at 0x%llux",
+				ie->score, naddr);
 			h = bucklook(ie->score, ie->ia.type, ib.data, ib.n);
 			if(h & 1){
 				h ^= 1;
 				packientry(ie, &ib.data[h]);
 			}else if(ib.n < is->buckmax){
-				memmove(&ib.data[h+IEntrySize], &ib.data[h], ib.n*IEntrySize - h);
+				memmove(&ib.data[h + IEntrySize], &ib.data[h],
+					ib.n*IEntrySize - h);
 				ib.n++;
 				packientry(ie, &ib.data[h]);
 			}else{
-				fprint(2, "bucket overflow XXX\n");
-			skipit:
+				fprint(2, "%s: bucket overflow XXX\n", argv0);
+skipit:
 				err = -1;
 				*l = ie->nextdirty;
 				ie = *l;
@@ -154,8 +162,8 @@ icachewritesect(Index *ix, ISect *is, u8int *buf)
 					break;
 			}
 			packibucket(&ib, buf+off, is->bucketmagic);
-			/* XXX
-			 * This is not quite right - it's good that we 
+			/*
+			 * XXX This is not quite right - it's good that we 
 			 * update the cached block (if any) here, but
 			 * since the block doesn't get written until writepart
 			 * below, we also need to make sure that the cache 
@@ -175,10 +183,10 @@ icachewritesect(Index *ix, ISect *is, u8int *buf)
 		diskaccess(1);
 
 		trace(TraceProc, "icachewritesect writepart", addr, nbuf);
-		if(writepart(is->part, addr, buf, nbuf) < 0 || flushpart(is->part) < 0){
-			/* XXX more details here */
-			fprint(2, "icachewriteproc writepart: %r\n");
-			err = -1;
+		if(writepart(is->part, addr, buf, nbuf) < 0 ||
+		    flushpart(is->part) < 0){
+			fprint(2, "%s: part %s addr 0x%llux: icachewritesect "
+				"writepart: %r\n", argv0, is->part->name, addr);
 			continue;
 		}
 		addstat(StatIsectWriteBytes, nbuf);