6 syncarenaindex(Arena *arena, u64int a0)
15 if(arena->diskstats.clumps == arena->memstats.clumps)
18 memset(&as, 0, sizeof as);
20 as.stats = arena->diskstats;
23 a = a0 + arena->diskstats.used;
24 for(clump=arena->diskstats.clumps; clump < arena->memstats.clumps; clump++){
25 if(readclumpinfo(arena, clump, &ci) < 0){
26 fprint(2, "%s: clump %d: cannot read clumpinfo\n",
35 ia.blocks = (ClumpSize + ci.size + (1 << ABlockLog) - 1) >> ABlockLog;
36 a += ClumpSize + ci.size;
38 as.stats.used += ClumpSize + ci.size;
39 as.stats.uncsize += ia.size;
41 if(ci.uncsize > ci.size)
44 insertscore(ci.score, &ia, IEDirty, &as);
57 for(i = 0; i < ix->narenas; i++){
58 trace(TraceProc, "syncindex start %d", i);
59 arena = ix->arenas[i];
60 e = syncarena(arena, TWID32, 1, 1);
62 e1 &= ~(SyncHeader|SyncCIZero|SyncCIErr);
64 fprint(2, "arena %s: header is out-of-date\n", arena->name);
66 fprint(2, "arena %s: %x\n", arena->name, e1);
72 if(arena->memstats.clumps == arena->diskstats.clumps)
75 fprint(2, "%T %s: indexing %d clumps...\n",
77 arena->memstats.clumps - arena->diskstats.clumps);
79 if(syncarenaindex(arena, ix->amap[i].start) < 0){
80 fprint(2, "arena %s: syncarenaindex: %r\n", arena->name);
84 if(wbarena(arena) < 0){
85 fprint(2, "arena %s: wbarena: %r\n", arena->name);