| #include "stdinc.h" |
| #include "dat.h" |
| #include "fns.h" |
| |
| static int verbose; |
| void |
| usage(void) |
| { |
| fprint(2, "usage: syncindex [-fv] [-B blockcachesize] config\n"); |
| threadexitsall("usage"); |
| } |
| |
| void |
| threadmain(int argc, char *argv[]) |
| { |
| u32int bcmem; |
| int fix; |
| |
| fix = 0; |
| bcmem = 0; |
| ARGBEGIN{ |
| case 'B': |
| bcmem = unittoull(ARGF()); |
| break; |
| case 'f': |
| fix++; |
| break; |
| case 'v': |
| verbose++; |
| break; |
| default: |
| usage(); |
| break; |
| }ARGEND |
| |
| if(!fix) |
| readonly = 1; |
| |
| if(argc != 1) |
| usage(); |
| |
| if(initventi(argv[0]) < 0) |
| sysfatal("can't init venti: %r"); |
| |
| if(bcmem < maxblocksize * (mainindex->narenas + mainindex->nsects * 4 + 16)) |
| bcmem = maxblocksize * (mainindex->narenas + mainindex->nsects * 4 + 16); |
| fprint(2, "initialize %d bytes of disk block cache\n", bcmem); |
| initdcache(bcmem); |
| |
| if(verbose) |
| printindex(2, mainindex); |
| if(syncindex(mainindex, fix) < 0) |
| sysfatal("failed to sync index=%s: %r\n", mainindex->name); |
| |
| threadexitsall(0); |
| } |