Blob


1 #include "stdinc.h"
2 #include "dat.h"
3 #include "fns.h"
5 void
6 usage(void)
7 {
8 fprint(2, "usage: fmtisect [-Z] [-b blocksize] name file\n");
9 threadexitsall(0);
10 }
12 void
13 threadmain(int argc, char *argv[])
14 {
15 ISect *is;
16 Part *part;
17 char *file, *name;
18 int blocksize, setsize, zero;
20 fmtinstall('V', vtscorefmt);
21 statsinit();
23 blocksize = 8 * 1024;
24 setsize = 64 * 1024;
25 zero = 1;
26 ARGBEGIN{
27 case 'b':
28 blocksize = unittoull(ARGF());
29 if(blocksize == ~0)
30 usage();
31 if(blocksize > MaxDiskBlock){
32 fprint(2, "block size too large, max %d\n", MaxDiskBlock);
33 threadexitsall("usage");
34 }
35 break;
36 case 'Z':
37 zero = 0;
38 break;
39 default:
40 usage();
41 break;
42 }ARGEND
44 if(argc != 2)
45 usage();
47 name = argv[0];
48 file = argv[1];
50 if(nameok(name) < 0)
51 sysfatal("illegal name %s", name);
53 part = initpart(file, 0);
54 if(part == nil)
55 sysfatal("can't open partition %s: %r", file);
57 if(zero)
58 zeropart(part, blocksize);
60 fprint(2, "configuring index section %s with space for index config bytes=%d\n", name, setsize);
61 is = newisect(part, name, blocksize, setsize);
62 if(is == nil)
63 sysfatal("can't initialize new index: %r");
65 if(wbisect(is) < 0)
66 fprint(2, "can't write back index section header for %s: %r\n", file);
68 threadexitsall(0);
69 }