summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@centraldogma>2011-06-11 14:19:07 +0000
committercinap_lenrek <cinap_lenrek@centraldogma>2011-06-11 14:19:07 +0000
commit67bb0a2c7a9ae7b197932e5b3ff3ad48ee39eab5 (patch)
tree5fc4ec7fe87a36dae66d781c83979470892246df
parent54e72f3e9cd1e0ae35d14d12940f1b5baa69d031 (diff)
downloadplan9front-67bb0a2c7a9ae7b197932e5b3ff3ad48ee39eab5.tar.xz
cwfs: store newcache format option in config
-rw-r--r--sys/src/cmd/cwfs/config.c4
-rw-r--r--sys/src/cmd/cwfs/cw.c20
-rw-r--r--sys/src/cmd/cwfs/main.c5
-rw-r--r--sys/src/cmd/cwfs/portdat.h1
4 files changed, 16 insertions, 14 deletions
diff --git a/sys/src/cmd/cwfs/config.c b/sys/src/cmd/cwfs/config.c
index 10a22f6e6..13e4748cb 100644
--- a/sys/src/cmd/cwfs/config.c
+++ b/sys/src/cmd/cwfs/config.c
@@ -451,6 +451,8 @@ mergeconf(Iobuf *p)
} 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 @@ start:
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);
diff --git a/sys/src/cmd/cwfs/cw.c b/sys/src/cmd/cwfs/cw.c
index c22693d6c..bd7757542 100644
--- a/sys/src/cmd/cwfs/cw.c
+++ b/sys/src/cmd/cwfs/cw.c
@@ -84,8 +84,6 @@ static char* cwnames[] =
[Orele] "rele",
};
-int oldcachefmt = 1;
-
Centry* getcentry(Bucket*, Off);
int cwio(Device*, Off, void*, int);
void cmd_cwcmd(int, char*[]);
@@ -302,10 +300,10 @@ dumpblock(Device *dev)
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 @@ cwio(Device *dev, Off addr, void *buf, int opcode)
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 @@ cwio(Device *dev, Off addr, void *buf, int opcode)
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) {
diff --git a/sys/src/cmd/cwfs/main.c b/sys/src/cmd/cwfs/main.c
index 784bfcfbe..5a6f8186b 100644
--- 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 @@ main(int argc, char **argv)
formatinit();
machinit();
conf.confdev = "/dev/sdC0/fscache";
+ conf.newcache = 0;
ARGBEGIN{
case 'a': /* announce on this net */
@@ -318,7 +317,7 @@ main(int argc, char **argv)
open("#c/cons", OWRITE);
break;
case 'C': /* use new, faster cache layout */
- oldcachefmt = 0;
+ conf.newcache = 1;
break;
case 'c':
conf.configfirst++;
diff --git a/sys/src/cmd/cwfs/portdat.h b/sys/src/cmd/cwfs/portdat.h
index 460e8abed..1904fc86d 100644
--- a/sys/src/cmd/cwfs/portdat.h
+++ b/sys/src/cmd/cwfs/portdat.h
@@ -436,6 +436,7 @@ struct Conf
uchar nodump; /* no periodic dumps */
uchar dumpreread; /* read and compare in dump copy */
+ uchar newcache;
};
enum {