diff options
author | Russ Cox <rsc@swtch.com> | 2007-09-25 09:47:31 -0400 |
---|---|---|
committer | Russ Cox <rsc@swtch.com> | 2007-09-25 09:47:31 -0400 |
commit | 7a400ee957a0815287af806e18ef90dd18b47f82 (patch) | |
tree | 023076fb829f630384f2f394eb9577a81fdca59e /src/cmd/venti/srv/lump.c | |
parent | 25a4e89fa907ed5a5f5d84eccfb66180007d9c68 (diff) | |
download | plan9port-7a400ee957a0815287af806e18ef90dd18b47f82.tar.gz plan9port-7a400ee957a0815287af806e18ef90dd18b47f82.tar.bz2 plan9port-7a400ee957a0815287af806e18ef90dd18b47f82.zip |
venti: new icache
Diffstat (limited to 'src/cmd/venti/srv/lump.c')
-rw-r--r-- | src/cmd/venti/srv/lump.c | 50 |
1 files changed, 8 insertions, 42 deletions
diff --git a/src/cmd/venti/srv/lump.c b/src/cmd/venti/srv/lump.c index 1db62717..206d5e06 100644 --- a/src/cmd/venti/srv/lump.c +++ b/src/cmd/venti/srv/lump.c @@ -7,7 +7,7 @@ int queuewrites = 0; int writestodevnull = 0; int verifywrites = 0; -static Packet *readilump(Lump *u, IAddr *ia, u8int *score, int rac); +static Packet *readilump(Lump *u, IAddr *ia, u8int *score); /* * Some of this logic is duplicated in hdisk.c @@ -19,7 +19,6 @@ readlump(u8int *score, int type, u32int size, int *cached) Packet *p; IAddr ia; u32int n; - int rac; trace(TraceLump, "readlump enter"); /* @@ -49,7 +48,7 @@ readlump(u8int *score, int type, u32int size, int *cached) if(cached) *cached = 0; - if(lookupscore(score, type, &ia, &rac) < 0){ + if(lookupscore(score, type, &ia) < 0){ /* ZZZ place to check for someone trying to guess scores */ seterr(EOk, "no block with score %V/%d exists", score, type); @@ -64,7 +63,7 @@ readlump(u8int *score, int type, u32int size, int *cached) } trace(TraceLump, "readlump readilump"); - p = readilump(u, &ia, score, rac); + p = readilump(u, &ia, score); putlump(u); trace(TraceLump, "readlump exit"); @@ -134,9 +133,8 @@ writeqlump(Lump *u, Packet *p, int creator, uint ms) Packet *old; IAddr ia; int ok; - int rac; - if(lookupscore(u->score, u->type, &ia, &rac) == 0){ + if(lookupscore(u->score, u->type, &ia) == 0){ if(verifywrites == 0){ /* assume the data is here! */ packetfree(p); @@ -149,7 +147,7 @@ writeqlump(Lump *u, Packet *p, int creator, uint ms) * if the read fails, * assume it was corrupted data and store the block again */ - old = readilump(u, &ia, u->score, rac); + old = readilump(u, &ia, u->score); if(old != nil){ ok = 0; if(packetcmp(p, old) != 0){ @@ -176,7 +174,7 @@ writeqlump(Lump *u, Packet *p, int creator, uint ms) ok = storeclump(mainindex, flat, u->score, u->type, creator, &ia); freezblock(flat); if(ok == 0) - ok = insertscore(u->score, &ia, 1); + ok = insertscore(u->score, &ia, IEDirty); if(ok == 0) insertlump(u, p); else @@ -193,39 +191,14 @@ writeqlump(Lump *u, Packet *p, int creator, uint ms) return ok; } -static void -lreadahead(u64int a, Arena *arena, u64int aa, int n) -{ - u8int buf[ClumpSize]; - Clump cl; - IAddr ia; - - while(n > 0) { - if (aa >= arena->memstats.used) - break; - if(readarena(arena, aa, buf, ClumpSize) < ClumpSize) - break; - if(unpackclump(&cl, buf, arena->clumpmagic) < 0) - break; - ia.addr = a; - ia.type = cl.info.type; - ia.size = cl.info.uncsize; - ia.blocks = (cl.info.size + ClumpSize + (1 << ABlockLog) - 1) >> ABlockLog; - insertscore(cl.info.score, &ia, 0); - a += ClumpSize + cl.info.size; - aa += ClumpSize + cl.info.size; - n--; - } -} - static Packet* -readilump(Lump *u, IAddr *ia, u8int *score, int rac) +readilump(Lump *u, IAddr *ia, u8int *score) { Arena *arena; ZBlock *zb; Packet *p, *pp; Clump cl; - u64int a, aa; + u64int aa; u8int sc[VtScoreSize]; trace(TraceLump, "readilump enter"); @@ -258,13 +231,6 @@ readilump(Lump *u, IAddr *ia, u8int *score, int rac) return nil; } - if(rac == 0) { - trace(TraceLump, "readilump readahead"); - a = ia->addr + ClumpSize + cl.info.size; - aa += ClumpSize + cl.info.size; - lreadahead(a, arena, aa, 20); - } - trace(TraceLump, "readilump success"); p = zblock2packet(zb, cl.info.uncsize); freezblock(zb); |