venti: add arenapart support to wrarena
R=rsc http://codereview.appspot.com/5988058
This commit is contained in:
parent
b27a990f9f
commit
20271fedfb
1 changed files with 16 additions and 2 deletions
|
|
@ -131,6 +131,7 @@ threadmain(int argc, char *argv[])
|
||||||
int i;
|
int i;
|
||||||
char *file;
|
char *file;
|
||||||
Arena *arena;
|
Arena *arena;
|
||||||
|
ArenaPart *ap;
|
||||||
u64int offset, aoffset;
|
u64int offset, aoffset;
|
||||||
Part *part;
|
Part *part;
|
||||||
uchar buf[8192];
|
uchar buf[8192];
|
||||||
|
|
@ -180,6 +181,14 @@ threadmain(int argc, char *argv[])
|
||||||
part = initpart(file, OREAD);
|
part = initpart(file, OREAD);
|
||||||
if(part == nil)
|
if(part == nil)
|
||||||
sysfatal("can't open file %s: %r", file);
|
sysfatal("can't open file %s: %r", file);
|
||||||
|
initdcache(8 * MaxDiskBlock);
|
||||||
|
|
||||||
|
// Try as arena partition.
|
||||||
|
arena = nil;
|
||||||
|
ap = initarenapart(part);
|
||||||
|
if(ap == nil)
|
||||||
|
goto loaded;
|
||||||
|
|
||||||
if(readpart(part, aoffset, buf, sizeof buf) < 0)
|
if(readpart(part, aoffset, buf, sizeof buf) < 0)
|
||||||
sysfatal("can't read file %s: %r", file);
|
sysfatal("can't read file %s: %r", file);
|
||||||
|
|
||||||
|
|
@ -191,12 +200,12 @@ threadmain(int argc, char *argv[])
|
||||||
head.size, part->size);
|
head.size, part->size);
|
||||||
|
|
||||||
partblocksize(part, head.blocksize);
|
partblocksize(part, head.blocksize);
|
||||||
initdcache(8 * MaxDiskBlock);
|
|
||||||
|
|
||||||
arena = initarena(part, aoffset, head.size, head.blocksize);
|
arena = initarena(part, aoffset, head.size, head.blocksize);
|
||||||
if(arena == nil)
|
if(arena == nil)
|
||||||
sysfatal("initarena: %r");
|
sysfatal("initarena: %r");
|
||||||
|
|
||||||
|
loaded:
|
||||||
z = nil;
|
z = nil;
|
||||||
if(host==nil || strcmp(host, "/dev/null") != 0){
|
if(host==nil || strcmp(host, "/dev/null") != 0){
|
||||||
z = vtdial(host);
|
z = vtdial(host);
|
||||||
|
|
@ -211,7 +220,12 @@ threadmain(int argc, char *argv[])
|
||||||
for(i=0; i<12; i++)
|
for(i=0; i<12; i++)
|
||||||
vtproc(vtsendthread, nil);
|
vtproc(vtsendthread, nil);
|
||||||
|
|
||||||
|
if(ap != nil) {
|
||||||
|
for(i=0 i<ap->narenas; i++)
|
||||||
|
rdarena(ap->arenas[i], 0);
|
||||||
|
} else
|
||||||
rdarena(arena, offset);
|
rdarena(arena, offset);
|
||||||
|
|
||||||
memset(&zerocl, 0, sizeof zerocl);
|
memset(&zerocl, 0, sizeof zerocl);
|
||||||
for(i=0; i<12; i++)
|
for(i=0; i<12; i++)
|
||||||
send(c, &zerocl);
|
send(c, &zerocl);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue