git: 9front

Download patch

ref: 19d7ba2c8d9e53dafef81a4ea21bf3064e9a3ed2
parent: c9f10a4dfa45194595a1fa905267647896224c26
author: cinap_lenrek <cinap_lenrek@centraldogma>
date: Sat Jun 11 10:19:07 EDT 2011

cwfs: store newcache format option in config

--- a/sys/src/cmd/cwfs/config.c
+++ b/sys/src/cmd/cwfs/config.c
@@ -451,6 +451,8 @@
 		} else if(strcmp(word, "readonly") == 0){
 			if(!readonlyset)
 				readonly = 1;
+		} else if(strcmp(word, "newcache") == 0){
+			conf.newcache = 1;
 		} else if(strcmp(word, "ipauth") == 0)	/* obsolete */
 			cp = getwrd(word, cp);
 		else if(astrcmp(word, "ip") == 0)	/* obsolete */
@@ -595,6 +597,8 @@
 			cp = seprint(cp, ep, "noauth\n");
 		if(readonly)
 			cp = seprint(cp, ep, "readonly\n");
+		if(conf.newcache)
+			cp = seprint(cp, ep, "newcache\n");
 		for (fsp = fspar; fsp->name != nil; fsp++)
 			cp = seprint(cp, ep, "%s %ld\n",
 				fsp->name, fsp->declared);
--- a/sys/src/cmd/cwfs/cw.c
+++ b/sys/src/cmd/cwfs/cw.c
@@ -84,8 +84,6 @@
 	[Orele]		"rele",
 };
 
-int oldcachefmt = 1;
-
 Centry*	getcentry(Bucket*, Off);
 int	cwio(Device*, Off, void*, int);
 void	cmd_cwcmd(int, char*[]);
@@ -302,10 +300,10 @@
 	return 0;
 
 found:
-	if (oldcachefmt)
-		a = a*CEPERBK + (c - b->entry) + caddr;
-	else
+	if (conf.newcache)
 		a += (c - b->entry)*msize + caddr;
+	else
+		a = a*CEPERBK + (c - b->entry) + caddr;
 	p1 = getbuf(devnone, Cwdump1, 0);
 	count = 0;
 
@@ -562,10 +560,10 @@
 
 	bn = addr % h->msize;
 	a1 = h->maddr + bn/BKPERBLK;
-	if (oldcachefmt)
-		a2 = bn*CEPERBK + h->caddr;
-	else
+	if (conf.newcache)
 		a2 = bn + h->caddr;
+	else
+		a2 = bn*CEPERBK + h->caddr;
 	max = h->wmax;
 
 	putbuf(cb);
@@ -583,10 +581,10 @@
 			cw->cdev, (Wideoff)a1);
 		return Cerror;
 	}
-	if (oldcachefmt)
-		a2 += c - b->entry;
-	else
+	if (conf.newcache)
 		a2 += (c - b->entry) * h->msize;
+	else
+		a2 += c - b->entry;
 
 	state = c->state;
 	switch(opcode) {
--- a/sys/src/cmd/cwfs/main.c
+++ b/sys/src/cmd/cwfs/main.c
@@ -3,8 +3,6 @@
 #include "io.h"
 #include "9p1.h"
 
-extern int oldcachefmt;
-
 Map *devmap;
 
 Biobuf bin;
@@ -293,6 +291,7 @@
 	formatinit();
 	machinit();
 	conf.confdev = "/dev/sdC0/fscache";
+	conf.newcache = 0;
 
 	ARGBEGIN{
 	case 'a':			/* announce on this net */
@@ -318,7 +317,7 @@
 			open("#c/cons", OWRITE);
 		break;
 	case 'C':			/* use new, faster cache layout */
-		oldcachefmt = 0;
+		conf.newcache = 1;
 		break;
 	case 'c':
 		conf.configfirst++;
--- a/sys/src/cmd/cwfs/portdat.h
+++ b/sys/src/cmd/cwfs/portdat.h
@@ -436,6 +436,7 @@
 
 	uchar	nodump;		/* no periodic dumps */
 	uchar	dumpreread;	/* read and compare in dump copy */
+	uchar	newcache;
 };
 
 enum {
--