Blame


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