ref: 163dccbac04a3c9ab132005ebb4a96a0e0baec0b
dir: /sys/src/cmd/venti/srv/syncindex.c/
#include "stdinc.h" #include "dat.h" #include "fns.h" static int verbose; void usage(void) { fprint(2, "usage: syncindex [-v] [-B blockcachesize] config\n"); threadexitsall("usage"); } Config conf; void threadmain(int argc, char *argv[]) { u32int bcmem, icmem; bcmem = 0; icmem = 0; ARGBEGIN{ case 'B': bcmem = unittoull(EARGF(usage())); break; case 'I': icmem = unittoull(EARGF(usage())); break; case 'v': verbose++; break; default: usage(); break; }ARGEND if(argc != 1) usage(); ventifmtinstall(); if(initventi(argv[0], &conf) < 0) sysfatal("can't init venti: %r"); if(mainindex->bloom && loadbloom(mainindex->bloom) < 0) sysfatal("can't load bloom filter: %r"); if(bcmem < maxblocksize * (mainindex->narenas + mainindex->nsects * 4 + 16)) bcmem = maxblocksize * (mainindex->narenas + mainindex->nsects * 4 + 16); if(0) fprint(2, "initialize %d bytes of disk block cache\n", bcmem); initdcache(bcmem); initlumpcache(1*1024*1024, 1024/8); initicache(icmem); initicachewrite(); if(mainindex->bloom) startbloomproc(mainindex->bloom); if(verbose) printindex(2, mainindex); if(syncindex(mainindex) < 0) sysfatal("failed to sync index=%s: %r", mainindex->name); flushicache(); flushdcache(); threadexitsall(0); }