Blame


1 a0d146ed 2005-07-12 devnull #include "stdinc.h"
2 a0d146ed 2005-07-12 devnull #include "dat.h"
3 a0d146ed 2005-07-12 devnull #include "fns.h"
4 a0d146ed 2005-07-12 devnull #include <bio.h>
5 a0d146ed 2005-07-12 devnull
6 a0d146ed 2005-07-12 devnull Biobuf bout;
7 a0d146ed 2005-07-12 devnull
8 a0d146ed 2005-07-12 devnull static void
9 a0d146ed 2005-07-12 devnull pie(IEntry *ie)
10 a0d146ed 2005-07-12 devnull {
11 a0d146ed 2005-07-12 devnull Bprint(&bout, "%22lld %V %3d %5d\n",
12 a0d146ed 2005-07-12 devnull ie->ia.addr, ie->score, ie->ia.type, ie->ia.size);
13 a0d146ed 2005-07-12 devnull }
14 a0d146ed 2005-07-12 devnull
15 a0d146ed 2005-07-12 devnull void
16 a0d146ed 2005-07-12 devnull usage(void)
17 a0d146ed 2005-07-12 devnull {
18 a0d146ed 2005-07-12 devnull fprint(2, "usage: printindex [-B blockcachesize] config [isectname...]\n");
19 a0d146ed 2005-07-12 devnull threadexitsall(0);
20 a0d146ed 2005-07-12 devnull }
21 a0d146ed 2005-07-12 devnull
22 a0d146ed 2005-07-12 devnull Config conf;
23 a0d146ed 2005-07-12 devnull
24 a0d146ed 2005-07-12 devnull int
25 a0d146ed 2005-07-12 devnull shoulddump(char *name, int argc, char **argv)
26 a0d146ed 2005-07-12 devnull {
27 a0d146ed 2005-07-12 devnull int i;
28 a0d146ed 2005-07-12 devnull
29 a0d146ed 2005-07-12 devnull if(argc == 0)
30 a0d146ed 2005-07-12 devnull return 1;
31 a0d146ed 2005-07-12 devnull for(i=0; i<argc; i++)
32 a0d146ed 2005-07-12 devnull if(strcmp(name, argv[i]) == 0)
33 a0d146ed 2005-07-12 devnull return 1;
34 a0d146ed 2005-07-12 devnull return 0;
35 a0d146ed 2005-07-12 devnull }
36 a0d146ed 2005-07-12 devnull
37 a0d146ed 2005-07-12 devnull void
38 a0d146ed 2005-07-12 devnull dumpisect(ISect *is)
39 a0d146ed 2005-07-12 devnull {
40 a0d146ed 2005-07-12 devnull int j;
41 a0d146ed 2005-07-12 devnull uchar *buf;
42 a0d146ed 2005-07-12 devnull u32int i;
43 a0d146ed 2005-07-12 devnull u64int off;
44 a0d146ed 2005-07-12 devnull IBucket ib;
45 a0d146ed 2005-07-12 devnull IEntry ie;
46 a0d146ed 2005-07-12 devnull
47 a0d146ed 2005-07-12 devnull buf = emalloc(is->blocksize);
48 a0d146ed 2005-07-12 devnull for(i=0; i<is->blocks; i++){
49 a0d146ed 2005-07-12 devnull off = is->blockbase+(u64int)is->blocksize*i;
50 a0d146ed 2005-07-12 devnull if(readpart(is->part, off, buf, is->blocksize) < 0)
51 a0d146ed 2005-07-12 devnull fprint(2, "read %s at 0x%llux: %r\n", is->part->name, off);
52 a0d146ed 2005-07-12 devnull else{
53 a0d146ed 2005-07-12 devnull unpackibucket(&ib, buf, is->bucketmagic);
54 a0d146ed 2005-07-12 devnull for(j=0; j<ib.n; j++){
55 a0d146ed 2005-07-12 devnull unpackientry(&ie, &ib.data[j*IEntrySize]);
56 a0d146ed 2005-07-12 devnull pie(&ie);
57 a0d146ed 2005-07-12 devnull }
58 a0d146ed 2005-07-12 devnull }
59 a0d146ed 2005-07-12 devnull }
60 a0d146ed 2005-07-12 devnull }
61 a0d146ed 2005-07-12 devnull
62 a0d146ed 2005-07-12 devnull void
63 a0d146ed 2005-07-12 devnull threadmain(int argc, char *argv[])
64 a0d146ed 2005-07-12 devnull {
65 a0d146ed 2005-07-12 devnull int i;
66 a0d146ed 2005-07-12 devnull Index *ix;
67 a0d146ed 2005-07-12 devnull u32int bcmem;
68 a0d146ed 2005-07-12 devnull
69 a0d146ed 2005-07-12 devnull bcmem = 0;
70 a0d146ed 2005-07-12 devnull ARGBEGIN{
71 a0d146ed 2005-07-12 devnull case 'B':
72 a0d146ed 2005-07-12 devnull bcmem = unittoull(ARGF());
73 a0d146ed 2005-07-12 devnull break;
74 a0d146ed 2005-07-12 devnull default:
75 a0d146ed 2005-07-12 devnull usage();
76 a0d146ed 2005-07-12 devnull break;
77 a0d146ed 2005-07-12 devnull }ARGEND
78 a0d146ed 2005-07-12 devnull
79 a0d146ed 2005-07-12 devnull if(argc < 1)
80 a0d146ed 2005-07-12 devnull usage();
81 a0d146ed 2005-07-12 devnull
82 a0d146ed 2005-07-12 devnull fmtinstall('H', encodefmt);
83 a0d146ed 2005-07-12 devnull
84 a0d146ed 2005-07-12 devnull if(initventi(argv[0], &conf) < 0)
85 a0d146ed 2005-07-12 devnull sysfatal("can't init venti: %r");
86 a0d146ed 2005-07-12 devnull
87 a0d146ed 2005-07-12 devnull if(bcmem < maxblocksize * (mainindex->narenas + mainindex->nsects * 4 + 16))
88 a0d146ed 2005-07-12 devnull bcmem = maxblocksize * (mainindex->narenas + mainindex->nsects * 4 + 16);
89 a0d146ed 2005-07-12 devnull if(0) fprint(2, "initialize %d bytes of disk block cache\n", bcmem);
90 a0d146ed 2005-07-12 devnull initdcache(bcmem);
91 a0d146ed 2005-07-12 devnull
92 a0d146ed 2005-07-12 devnull ix = mainindex;
93 a0d146ed 2005-07-12 devnull Binit(&bout, 1, OWRITE);
94 a0d146ed 2005-07-12 devnull for(i=0; i<ix->nsects; i++)
95 a0d146ed 2005-07-12 devnull if(shoulddump(ix->sects[i]->name, argc-1, argv+1))
96 a0d146ed 2005-07-12 devnull dumpisect(ix->sects[i]);
97 a0d146ed 2005-07-12 devnull Bterm(&bout);
98 a0d146ed 2005-07-12 devnull threadexitsall(0);
99 a0d146ed 2005-07-12 devnull }