Browse Source

Plan 9 from Bell Labs 2003-03-29

David du Colombier 21 years ago
parent
commit
58df206717

+ 17 - 17
dist/replica/plan9.db

@@ -9,11 +9,11 @@
 386/9loaddebug - 775 sys sys 1045538097 259969
 386/9loadlite - 775 sys sys 1032215927 124616
 386/9loadlitedebug - 775 sys sys 1045538098 183665
-386/9pc - 775 sys sys 1045776653 1791748
+386/9pc - 775 sys sys 1048889333 1798050
 386/9pc.gz - 664 sys sys 1040006338 614078
-386/9pccpu - 775 sys sys 1045776656 1455559
+386/9pccpu - 775 sys sys 1048889337 1463207
 386/9pccpu.gz - 664 sys sys 1040006341 504177
-386/9pcdisk - 775 sys sys 1045776660 1995637
+386/9pcdisk - 775 sys sys 1048889342 2003379
 386/9pcdisk.gz - 664 sys sys 1040006345 703136
 386/_9pcdisk.gz - 664 sys sys 1039764191 695837
 386/bin - 20000000775 sys sys 1018897690 0
@@ -215,9 +215,9 @@
 386/bin/fmt - 775 sys sys 1039758560 63811
 386/bin/fortune - 775 sys sys 1045537977 66332
 386/bin/fossil - 20000000775 sys sys 1042005470 0
-386/bin/fossil/flchk - 775 sys sys 1048745040 226792
-386/bin/fossil/flfmt - 775 sys sys 1048745041 225356
-386/bin/fossil/fossil - 775 sys sys 1048745043 333791
+386/bin/fossil/flchk - 775 sys sys 1048889326 228309
+386/bin/fossil/flfmt - 775 sys sys 1048889327 226303
+386/bin/fossil/fossil - 775 sys sys 1048889328 335467
 386/bin/freq - 775 sys sys 1039758560 60443
 386/bin/fs - 20000000775 sys sys 954380769 0
 386/bin/fs/32vfs - 775 sys sys 1039758560 96155
@@ -2897,7 +2897,7 @@ rc/bin/doctype - 775 sys sys 945617206 1726
 rc/bin/dosmnt - 775 sys sys 958526437 285
 rc/bin/eject - 775 sys sys 945617207 123
 rc/bin/fax - 775 sys sys 1015701359 2390
-rc/bin/fedex - 775 sys sys 1032136709 597
+rc/bin/fedex - 775 sys sys 1048862253 1122
 rc/bin/homespool - 775 sys sys 945617207 339
 rc/bin/ipso - 775 sys sys 1035591514 2304
 rc/bin/iwhois - 775 sys sys 1032057928 435
@@ -5206,7 +5206,7 @@ sys/src/9/pc/vgamach64xx.c - 664 sys sys 1048644147 29112
 sys/src/9/pc/vgamga2164w.c - 664 sys sys 1015014527 5654
 sys/src/9/pc/vgamga4xx.c - 664 sys sys 1015014527 11122
 sys/src/9/pc/vganeomagic.c - 664 sys sys 1032375144 10693
-sys/src/9/pc/vganvidia.c - 664 sys sys 1048644159 6306
+sys/src/9/pc/vganvidia.c - 664 sys sys 1048858211 6296
 sys/src/9/pc/vgargb524.c - 664 sys sys 1015014527 4235
 sys/src/9/pc/vgas3.c - 664 sys sys 1048640451 12064
 sys/src/9/pc/vgasavage.c - 664 sys sys 1046203931 16194
@@ -5226,7 +5226,7 @@ sys/src/9/port/cache.c - 664 sys sys 1014931171 9242
 sys/src/9/port/chan.c - 664 sys sys 1048644187 29000
 sys/src/9/port/cis.c - 664 sys sys 1014931171 8087
 sys/src/9/port/debugalloc.c - 664 sys sys 1014931171 10402
-sys/src/9/port/dev.c - 664 sys sys 1048644191 8241
+sys/src/9/port/dev.c - 664 sys sys 1048912316 8379
 sys/src/9/port/devaudio.c - 664 sys sys 1048644215 21133
 sys/src/9/port/devbridge.c - 664 sys sys 1026847546 24311
 sys/src/9/port/devcap.c - 664 sys sys 1048644215 4113
@@ -5245,7 +5245,7 @@ sys/src/9/port/devpipe.c - 664 sys sys 1032640439 5825
 sys/src/9/port/devpnp.c - 664 sys sys 1019864265 13027
 sys/src/9/port/devproc.c - 664 sys sys 1047952847 23450
 sys/src/9/port/devrealtime.c - 664 sys sys 1044630510 15975
-sys/src/9/port/devroot.c - 664 sys sys 1048583810 3730
+sys/src/9/port/devroot.c - 664 sys sys 1048912313 4015
 sys/src/9/port/devsd.c - 664 sys sys 1026847547 28679
 sys/src/9/port/devsdp.c - 664 sys sys 1026847548 44841
 sys/src/9/port/devsegment.c - 664 sys sys 1017679394 9600
@@ -7118,7 +7118,7 @@ sys/src/cmd/fossil/9auth.c - 664 sys sys 1045600016 3149
 sys/src/cmd/fossil/9dir.c - 664 sys sys 1042005502 1995
 sys/src/cmd/fossil/9excl.c - 664 sys sys 1042005502 1887
 sys/src/cmd/fossil/9fid.c - 664 sys sys 1045600016 5521
-sys/src/cmd/fossil/9fsys.c - 664 sys sys 1044906157 26913
+sys/src/cmd/fossil/9fsys.c - 664 sys sys 1048859381 27349
 sys/src/cmd/fossil/9lstn.c - 664 sys sys 1042005503 2865
 sys/src/cmd/fossil/9p.c - 664 sys sys 1048644482 21360
 sys/src/cmd/fossil/9ping.c - 664 sys sys 1042005503 1563
@@ -7133,7 +7133,7 @@ sys/src/cmd/fossil/archive.c - 664 sys sys 1045600020 9112
 sys/src/cmd/fossil/build - 664 sys sys 1042005505 449
 sys/src/cmd/fossil/buildsh - 775 sys sys 1042005505 561
 sys/src/cmd/fossil/bwatch.c - 664 sys sys 1042005505 6754
-sys/src/cmd/fossil/cache.c - 664 sys sys 1048690487 41275
+sys/src/cmd/fossil/cache.c - 664 sys sys 1048859382 42848
 sys/src/cmd/fossil/dat.h - 664 sys sys 1042311689 7790
 sys/src/cmd/fossil/deadlock - 775 sys sys 1042005506 413
 sys/src/cmd/fossil/disk.c - 664 sys sys 1042497769 5736
@@ -7142,17 +7142,17 @@ sys/src/cmd/fossil/epoch.c - 664 sys sys 1045600021 997
 sys/src/cmd/fossil/error.c - 664 sys sys 1042005507 1367
 sys/src/cmd/fossil/error.h - 664 sys sys 1042005507 744
 sys/src/cmd/fossil/file.c - 664 sys sys 1044906157 27633
-sys/src/cmd/fossil/flchk.c - 664 sys sys 1042005507 13670
-sys/src/cmd/fossil/flfmt.c - 664 sys sys 1048690059 10315
+sys/src/cmd/fossil/flchk.c - 664 sys sys 1048859380 14275
+sys/src/cmd/fossil/flfmt.c - 664 sys sys 1048859380 10368
 sys/src/cmd/fossil/flproto - 664 sys sys 1042005508 210
-sys/src/cmd/fossil/fns.h - 664 sys sys 1042311690 2958
+sys/src/cmd/fossil/fns.h - 664 sys sys 1048859327 3022
 sys/src/cmd/fossil/fossil-acid - 664 sys sys 1042005508 3965
 sys/src/cmd/fossil/fossil.c - 664 sys sys 1045600029 1267
-sys/src/cmd/fossil/fs.c - 664 sys sys 1048644483 17084
+sys/src/cmd/fossil/fs.c - 664 sys sys 1048859383 16614
 sys/src/cmd/fossil/fs.h - 664 sys sys 1042005509 1222
 sys/src/cmd/fossil/history - 664 sys sys 1045600133 1150
 sys/src/cmd/fossil/invariants - 664 sys sys 1042005509 4073
-sys/src/cmd/fossil/mkfile - 664 sys sys 1045576809 1567
+sys/src/cmd/fossil/mkfile - 664 sys sys 1048859379 1551
 sys/src/cmd/fossil/nobwatch.c - 664 sys sys 1042005509 329
 sys/src/cmd/fossil/pack.c - 664 sys sys 1042005510 4683
 sys/src/cmd/fossil/periodic.c - 664 sys sys 1042005510 1091

+ 17 - 0
dist/replica/plan9.log

@@ -19008,3 +19008,20 @@
 1048802500 0 c 386/lib/libc.a - 664 sys sys 1048802354 497778
 1048815119 0 c sys/games/lib/fortunes - 664 sys sys 1048813436 239855
 1048822321 0 c 386/init - 775 sys sys 1048821413 97953
+1048858269 0 c sys/src/9/pc/vganvidia.c - 664 sys sys 1048858211 6296
+1048859396 0 c sys/src/cmd/fossil/9fsys.c - 664 sys sys 1048859381 27349
+1048859396 1 c sys/src/cmd/fossil/cache.c - 664 sys sys 1048859382 42848
+1048859396 2 c sys/src/cmd/fossil/flchk.c - 664 sys sys 1048859380 14275
+1048859396 3 c sys/src/cmd/fossil/flfmt.c - 664 sys sys 1048859380 10368
+1048859396 4 c sys/src/cmd/fossil/fns.h - 664 sys sys 1048859327 3022
+1048859396 5 c sys/src/cmd/fossil/fs.c - 664 sys sys 1048859383 16614
+1048859396 6 c sys/src/cmd/fossil/mkfile - 664 sys sys 1048859379 1551
+1048863674 0 c rc/bin/fedex - 775 sys sys 1048862253 1122
+1048890698 0 c 386/9pc - 775 sys sys 1048889333 1798050
+1048890698 1 c 386/9pccpu - 775 sys sys 1048889337 1463207
+1048890698 2 c 386/9pcdisk - 775 sys sys 1048889342 2003379
+1048890698 3 c 386/bin/fossil/flchk - 775 sys sys 1048889326 228309
+1048890698 4 c 386/bin/fossil/flfmt - 775 sys sys 1048889327 226303
+1048890698 5 c 386/bin/fossil/fossil - 775 sys sys 1048889328 335467
+1048912320 0 c sys/src/9/port/dev.c - 664 sys sys 1048912316 8379
+1048912320 1 c sys/src/9/port/devroot.c - 664 sys sys 1048912313 4015

+ 34 - 3
rc/bin/fedex

@@ -11,7 +11,7 @@ fn bgrep{
 pattern=`{echo $1 | sed 's;/;\\&;'}
 shift
 
-echo 'X {
+@{ echo 'X {
 $
 a
 
@@ -20,11 +20,42 @@ a
 X ,x/(.+\n)+\n/ g/'$pattern'/p' |
 sam -d $* >[2]/dev/null
 }
+}
+
+fn awk2 {
+	awk 'NR%2==1 { a=$0; } 
+		NR%2==0 { b=$0; printf("%-30s %s\n", a, b); }
+	' $*
+}
+
+fn awk3 {
+	awk '{line[NR] = $0}
+	END{
+		i = 4;
+		while(i < NR){
+			what=line[i++];
+			when=line[i];
+			comment="";
+			if(!(when ~ /..\/..\/.... ..:../)){
+				# out of sync
+				printf("%s\n", what);
+				continue;
+			}
+			i++;
+			if(!(line[i+1] ~ /..\/..\/.... ..:../) &&
+				(i+2 > NR || line[i+2] ~ /..\/..\/.... ..:../)){
+				what = what ", " line[i++];
+			}
+			printf("%s  %s\n", when, what);
+		}
+	}' $*
+}
 
 # hget 'http://www.fedex.com/cgi-bin/track_it?airbill_list='$1'&kurrent_airbill='$1'&language=english&cntry_code=us&state=0' |
 hget 'http://www.fedex.com/cgi-bin/tracking?action=track&language=english&cntry_code=us&initial=x&mps=y&tracknumbers='$1 |
 	htmlfmt >/tmp/fedex.$pid
-bgrep 'Tracking Number' /tmp/fedex.$pid
-bgrep 'Scan Activity' /tmp/fedex.$pid
+bgrep 'Tracking Number' /tmp/fedex.$pid | awk2
+echo
+bgrep 'Scan Activity' /tmp/fedex.$pid | awk3
 rm /tmp/fedex.$pid
 

+ 3 - 3
sys/src/9/pc/vganvidia.c

@@ -29,12 +29,12 @@ static Pcidev*
 nvidiapci(void)
 {
 	Pcidev *p;
-	ushort *did;
 
 	p = nil;
-	while((p = pcimatch(p, 0x10DE, 0)) != nil)
-		if(p->did > 0x20 && p->ccrp == 3)	/* video card */
+	while((p = pcimatch(p, 0x10DE, 0)) != nil){
+		if(p->did > 0x20 && p->ccrb == 3)	/* video card */
 			return p;
+	}
 	return nil;
 }
 

+ 5 - 1
sys/src/9/port/dev.c

@@ -203,7 +203,11 @@ devwalk(Chan *c, Chan *nc, char **name, int nname, Dirtab *tab, int ntab, Devgen
 			continue;
 		}
 		if(strcmp(n, "..") == 0){
-			(*gen)(nc, nil, tab, ntab, DEVDOTDOT, &dir);
+			if((*gen)(nc, nil, tab, ntab, DEVDOTDOT, &dir) != 1){
+				print("devgen walk .. in dev%s %llux broken\n",
+					devtab[nc->type]->name, nc->qid.path);
+				error("broken devgen");
+			}
 			nc->qid = dir.qid;
 			goto Accept;
 		}

+ 11 - 0
sys/src/9/port/devroot.c

@@ -133,6 +133,13 @@ rootgen(Chan *c, char *name, Dirtab*, int, int s, Dir *dp)
 		}
 		return devgen(c, name, bootlist.dir, bootlist.ndir, s, dp);
 	default:
+		if(s == DEVDOTDOT){
+			if((int)c->qid.path < Qboot)
+				devdir(c, (Qid){Qdir, 0, QTDIR}, "#/", 0, eve, 0555, dp);
+			else
+				devdir(c, (Qid){Qboot, 0, QTDIR}, "#/", 0, eve, 0555, dp);
+			return 1;
+		}
 		if(s != 0)
 			return -1;
 		if((int)c->qid.path < Qboot){
@@ -144,6 +151,10 @@ rootgen(Chan *c, char *name, Dirtab*, int, int s, Dir *dp)
 		}
 		if(t >= l->ndir)
 			return -1;
+if(t < 0){
+print("rootgen %llud %d %d\n", c->qid.path, s, t);
+panic("whoops");
+}
 		d = &l->dir[t];
 		devdir(c, d->qid, d->name, d->length, eve, d->perm, dp);
 		return 1;

+ 24 - 2
sys/src/cmd/fossil/9fsys.c

@@ -6,7 +6,7 @@
 
 typedef struct Fsys Fsys;
 
-typedef struct Fsys {
+struct Fsys {
 	VtLock* lock;
 
 	char*	name;
@@ -22,7 +22,7 @@ typedef struct Fsys {
 	int	wstatallow;
 
 	Fsys*	next;
-} Fsys;
+};
 
 static struct {
 	VtLock*	lock;
@@ -690,6 +690,27 @@ fsysBfree(Fsys* fsys, int argc, char* argv[])
 	return 1;
 }
 
+static int
+fsysDf(Fsys *fsys, int argc, char* argv[])
+{
+	char *usage = "usage: [fsys name] df";
+	u32int used, tot, bsize;
+	Fs *fs;
+
+	ARGBEGIN{
+	default:
+		return cliError(usage);
+	}ARGEND
+	if(argc != 0)
+		return cliError(usage);
+
+	fs = fsys->fs;
+	cacheCountUsed(fs->cache, fs->elo, &used, &tot, &bsize);
+	consPrint("%lud/%lud blocks used (%,llud/%,llud bytes)\n",
+		used, tot, used*(vlong)bsize, tot*(vlong)bsize);
+	return 1;
+}
+
 /*
  * Zero an entry or a pointer.
  */
@@ -1359,6 +1380,7 @@ static struct {
 	{ "clri",	fsysClri, },
 	{ "clrp",	fsysClrp, },
 	{ "create",	fsysCreate, },
+	{ "df",	fsysDf, },
 	{ "epoch",	fsysEpoch, },
 	{ "label",	fsysLabel, },
 	{ "remove",	fsysRemove, },

+ 75 - 5
sys/src/cmd/fossil/cache.c

@@ -62,6 +62,10 @@ struct Cache
 	BList *uhead;
 	BList *utail;
 	VtRendez *unlink;
+
+	/* block counts */
+	int nused;
+	int ndisk;
 };
 
 struct BList {
@@ -91,6 +95,9 @@ struct FreeList {
 	VtLock *lk;
 	u32int last;	/* last block allocated */
 	u32int end;	/* end of data partition */
+	u32int nfree;	/* number of free blocks */
+	u32int nused;	/* number of used blocks */
+	u32int epochLow;	/* low epoch when last updated nfree and nused */
 };
 
 static FreeList *flAlloc(u32int end);
@@ -195,7 +202,7 @@ bwatchSetBlockSize(c->size);
 	c->maxdirty = nblocks*(DirtyPercentage*0.01);
 
 	c->fl = flAlloc(diskSize(disk, PartData));
-	
+
 	c->unlink = vtRendezAlloc(c->lk);
 	c->flush = vtRendezAlloc(c->lk);
 	c->flushwait = vtRendezAlloc(c->lk);
@@ -748,11 +755,61 @@ if(0)diskWrite(c->disk, b);
 
 if(0)fprint(2, "fsAlloc %ud type=%d tag = %ux\n", addr, type, tag);
 	lastAlloc = addr;
+	fl->nused++;
 	vtUnlock(fl->lk);
 	b->pc = getcallerpc(&c);
 	return b;
 }
 
+void
+cacheCountUsed(Cache *c, u32int epochLow, u32int *used, u32int *total, u32int *bsize)
+{
+	int n;
+	u32int addr, nused;
+	Block *b;
+	Label lab;
+	FreeList *fl;
+
+	fl = c->fl;
+	n = c->size / LabelSize;
+	*bsize = c->size;
+	vtLock(fl->lk);
+	if(fl->epochLow == epochLow){
+		*used = fl->nused;
+		*total = fl->end;
+		vtUnlock(fl->lk);
+		return;
+	}
+	b = nil;
+	nused = 0;
+	for(addr=0; addr<fl->end; addr++){
+		if(addr%n == 0){
+			blockPut(b);
+			b = cacheLocal(c, PartLabel, addr/n, OReadOnly);
+			if(b == nil){
+				fprint(2, "flCountUsed: loading %ux: %R\n", addr/n);
+				break;
+			}
+		}
+		if(!labelUnpack(&lab, b->data, addr%n))
+			continue;
+		if(lab.state == BsFree)
+			continue;
+		if((lab.state&BsClosed) && lab.epochClose <= epochLow)
+			continue;
+		nused++;
+	}
+	blockPut(b);
+	if(addr == fl->end){
+		fl->nused = nused;
+		fl->epochLow = epochLow;
+	}
+	*used = nused;
+	*total = fl->end;
+	vtUnlock(fl->lk);
+	return;
+}
+
 static FreeList *
 flAlloc(u32int end)
 {
@@ -795,6 +852,7 @@ blockCopy(Block *b, u32int tag, u32int ehi, u32int elo)
 		return nil;
 	}
 
+//fprint(2, "alloc %lux copy %V\n", bb->addr, b->score);
 	/*
 	 * Change label on b to mark that we've copied it.
 	 * This has to come after cacheAllocBlock, since we
@@ -1169,7 +1227,11 @@ blockDependency(Block *b, Block *bb, int index, uchar *score, Entry *e)
 	if(index == -1 && bb->part == PartData)
 		assert(b->l.type == BtData);
 
-	assert(bb->iostate == BioDirty);
+	if(bb->iostate != BioDirty){
+		fprint(2, "%d:%x:%d iostate is %d in blockDependency\n",
+			bb->part, bb->addr, bb->l.type, bb->iostate);
+		abort();
+	}
 
 	p = blistAlloc(bb);
 	if(p == nil)
@@ -1421,6 +1483,8 @@ blockRollback(Block *b, uchar *buf)
  * If b depends on other blocks:
  * 
  *	If the block has been written out, remove the dependency.
+ *	If the dependency is replaced by a more recent dependency,
+ *		throw it out.
  *	If we know how to write out an old version of b that doesn't
  *		depend on it, do that.
  *
@@ -1466,7 +1530,12 @@ blockWrite(Block *b)
 		 * the assertion is true because the block still has version p->vers,
 		 * which means it hasn't been written out since we last saw it.
 		 */
-		assert(bb->iostate == BioDirty);
+		if(bb->iostate != BioDirty){
+			fprint(2, "%d:%x:%d iostate is %d in blockWrite\n",
+				bb->part, bb->addr, bb->l.type, bb->iostate);
+			/* probably BioWriting if it happens? */
+		}
+
 		blockPut(bb);
 
 		if(p->index < 0){
@@ -2012,11 +2081,12 @@ cacheFlush(Cache *c, int wait)
 	vtLock(c->lk);
 	if(wait){
 		while(c->ndirty){
-			consPrint("cacheFlush: %d dirty blocks\n", c->ndirty);
+			consPrint("cacheFlush: %d dirty blocks, uhead %p\n",
+				c->ndirty, c->uhead);
 			vtWakeup(c->flush);
 			vtSleep(c->flushwait);
 		}
-		consPrint("cacheFlush: done\n", c->ndirty);
+		consPrint("cacheFlush: done (uhead %p)\n", c->ndirty, c->uhead);
 	}else
 		vtWakeup(c->flush);
 	vtUnlock(c->lk);

+ 30 - 5
sys/src/cmd/fossil/flchk.c

@@ -34,6 +34,7 @@ Cache *cache;
 int nblocks;
 int bsize;
 int badactive;
+int dumpblocks;	/* write lost blocks into /tmp/lost */
 int fast;		/* don't check that all the venti blocks are there */
 u32int hint;	/* a guess at where chkEpoch might look to find the next root */
 
@@ -54,6 +55,9 @@ main(int argc, char *argv[])
 	case 'c':
 		csize = atoi(ARGF());
 		break;
+	case 'd':
+		dumpblocks = 1;
+		break;
 	case 'f':
 		fast = 1;
 		break;
@@ -75,9 +79,10 @@ main(int argc, char *argv[])
 	 * Connect to Venti.
 	 */
 	z = vtDial(host, 0);
-	if(z == nil)
-		vtFatal("could not connect to server: %s", vtGetError());
-	if(!vtConnect(z, 0))
+	if(z == nil){
+		if(!fast)
+			vtFatal("could not connect to server: %s", vtGetError());
+	}else if(!vtConnect(z, 0))
 		vtFatal("vtConnect: %s", vtGetError());
 
 	/*
@@ -336,7 +341,10 @@ chkEpoch(u32int epoch)
 static void
 chkFree(void)
 {
+	char buf[64];
+	int fd;
 	u32int a;
+	Block *b;
 	Label l;
 	u32int nfree;
 	u32int nlost;
@@ -358,9 +366,26 @@ chkFree(void)
 			continue;
 		}
 		nlost++;
-		warn("unreachable block: addr %ux type %d tag %ux state %s epoch %ud",
-			a, l.type, l.tag, bsStr(l.state), l.epoch);
+		warn("unreachable block: addr %ux type %d tag %ux state %s epoch %ud close %ud",
+			a, l.type, l.tag, bsStr(l.state), l.epoch, l.epochClose);
 		print("# bfree %#ux\n", a);
+		if(dumpblocks){
+			sprint(buf, "/tmp/lost.%ux", a);
+			if((fd = create(buf, OWRITE, 0666)) < 0){
+				fprint(2, "create %s: %r\n", buf);
+				goto nodump;
+			}
+			if((b = cacheLocal(cache, PartData, a, OReadOnly)) == nil){
+				close(fd);
+				fprint(2, "load block %ux: %R\n", a);
+				goto nodump;
+			}
+			if(write(fd, b->data, bsize) != bsize)
+				fprint(2, "writiting %s: %r\n", buf);
+			close(fd);
+			blockPut(b);
+		}
+	    nodump:
 		setBit(amap, a);
 	}
 	fprint(2, "\tused=%ud free space = %ud(%f%%) lost=%ud\n",

+ 4 - 4
sys/src/cmd/fossil/flfmt.c

@@ -12,7 +12,7 @@ static u64int unittoull(char *s);
 static u32int blockAlloc(int type, u32int tag);
 static void blockRead(int part, u32int addr);
 static void blockWrite(int part, u32int addr);
-static void superInit(char *label, u32int root);
+static void superInit(char *label, u32int root, uchar[VtScoreSize]);
 static void rootMetaInit(Entry *e);
 static u32int rootInit(Entry *e);
 static void topLevel(char *name);
@@ -135,7 +135,7 @@ main(int argc, char *argv[])
 		root = rootInit(&e);
 	}
 
-	superInit(label, root);
+	superInit(label, root, vtZeroScore);
 	diskFree(disk);
 
 	if(score == nil)
@@ -337,7 +337,7 @@ blockAlloc(int type, u32int tag)
 }
 
 static void
-superInit(char *label, u32int root)
+superInit(char *label, u32int root, uchar score[VtScoreSize])
 {
 	Super s;
 
@@ -351,7 +351,7 @@ superInit(char *label, u32int root)
 	s.next = NilBlock;
 	s.current = NilBlock;
 	strecpy(s.name, s.name+sizeof(s.name), label);
-	memmove(s.last, vtZeroScore, VtScoreSize);
+	memmove(s.last, score, VtScoreSize);
 
 	superPack(&s, buf);
 	blockWrite(PartSuper, 0);

+ 1 - 0
sys/src/cmd/fossil/fns.h

@@ -15,6 +15,7 @@ void sourceUnlock(Source*);
 int sourceLock2(Source*, Source*, int);
 
 Cache* cacheAlloc(Disk*, VtSession*, ulong, int);
+void cacheCountUsed(Cache*, u32int, u32int*, u32int*, u32int*);
 void cacheFree(Cache*);
 Block* cacheLocal(Cache*, int, u32int, int);
 Block* cacheLocalData(Cache*, u32int, int, u32int, int, u32int);

+ 0 - 23
sys/src/cmd/fossil/fs.c

@@ -269,29 +269,6 @@ fileOpenSnapshot(Fs *fs, int doarchive)
 		if(dir == nil)
 			return nil;
 
-/*
- * used to do /snapshot/#
- * 
-		for(n=0;; n++){
-			if(n)
-				seprint(s, buf+sizeof(buf), ".%d", n);
-			f = fileWalk(dir, buf);
-			if(f != nil){
-				fileDecRef(f);
-				continue;
-			}
-			f = fileCreate(dir, buf, ModeDir|ModeSnapshot|0555, "adm");
-			break;
-		}
-		dir = fileOpen(fs, "/snapshot");
-		if(dir == nil)
-			return nil;
-		snprint(buf, sizeof(buf), "%d", fs->ehi);
-		f = fileCreate(dir, buf, ModeDir|ModeSnapshot|0555, "adm");
-		fileDecRef(dir);
-		return f;
-*/
-
 		now = *localtime(time(0));
 
 		/* yyyy */

+ 2 - 4
sys/src/cmd/fossil/mkfile

@@ -45,6 +45,8 @@ HFILES=\
 	error.h\
 	9.h\
 
+CFILES=${TARG:%=%.c} $LIBCFILES
+
 UPDATE=\
 	mkfile\
 	$CFILES\
@@ -52,10 +54,6 @@ UPDATE=\
 
 default:V: all
 
-CFILES=${TARG:%=%.c} $LIBCFILES
-
-default:V: all
-
 test:V: all
 	rm -f /srv/test.fossil /srv/test.fscons
 	slay 8.flfmt | rc