Blob


1 #include "stdinc.h"
2 #include "dat.h"
3 #include "fns.h"
5 static int verbose;
6 void
7 usage(void)
8 {
9 fprint(2, "usage: syncindex [-v] [-B blockcachesize] config\n");
10 threadexitsall("usage");
11 }
13 Config conf;
15 void
16 threadmain(int argc, char *argv[])
17 {
18 u32int bcmem, icmem;
20 bcmem = 0;
21 icmem = 0;
22 ARGBEGIN{
23 case 'B':
24 bcmem = unittoull(EARGF(usage()));
25 break;
26 case 'I':
27 icmem = unittoull(EARGF(usage()));
28 break;
29 case 'v':
30 verbose++;
31 break;
32 default:
33 usage();
34 break;
35 }ARGEND
37 if(argc != 1)
38 usage();
40 ventifmtinstall();
41 if(initventi(argv[0], &conf) < 0)
42 sysfatal("can't init venti: %r");
43 if(mainindex->bloom && loadbloom(mainindex->bloom) < 0)
44 sysfatal("can't load bloom filter: %r");
46 if(bcmem < maxblocksize * (mainindex->narenas + mainindex->nsects * 4 + 16))
47 bcmem = maxblocksize * (mainindex->narenas + mainindex->nsects * 4 + 16);
48 if(0) fprint(2, "initialize %d bytes of disk block cache\n", bcmem);
49 initdcache(bcmem);
50 initlumpcache(1*1024*1024, 1024/8);
51 initicache(icmem);
52 initicachewrite();
53 if(mainindex->bloom)
54 startbloomproc(mainindex->bloom);
56 if(verbose)
57 printindex(2, mainindex);
58 if(syncindex(mainindex) < 0)
59 sysfatal("failed to sync index=%s: %r", mainindex->name);
60 flushicache();
61 flushdcache();
63 threadexitsall(0);
64 }