|
|
1.1 root 1: main(argc, argv)
2: char **argv;
3: {
4: long first, last, t;
5: char buf[32768], buf1[32768], *bufp;
6: int fd, n, i;
7: char *worm = "/dev/worm0";
8: long bands[50][2];
9: int nbands;
10: long loop;
11: double tseek, tbl;
12: float floop;
13:
14: if(argc < 3){
15: print("Usage: tstsk [device] firstblock firstnonblock ...\n");
16: exit(1);
17: }
18: if((argc&1) == 0)
19: worm = *++argv;
20: if((fd = open(worm, 0)) < 0){
21: perror(worm);
22: exit(1);
23: }
24: nbands = 0;
25: while(*++argv){
26: first = atol(*argv);
27: last = atol(*++argv);
28: if((first < 0) || (last <= first)){
29: print("bad first=%ld last=%ld\n", first, last);
30: exit(1);
31: }
32: bands[nbands][0] = first;
33: bands[nbands][1] = last;
34: nbands++;
35: }
36: tseek = tbl = 0;
37: last = 0;
38: fillbuf(buf, 32);
39: for(loop = 0;; loop++){
40: i = nrand(nbands);
41: first = bands[i][0] + lrand()%(bands[i][1]-bands[i][0]);
42: n = 20;
43: if(first+n > bands[i][1])
44: first = bands[i][1]-n;
45: if(first < bands[i][0])
46: first = bands[i][0], n = bands[i][1]-first;
47: tbl += n;
48: lseek(fd, first*1024, 0);
49: last -= first;
50: if(last < 0) last = -last;
51: tseek += last;
52: bufp = &buf[1024*(first%5)];
53: if(read(fd, buf1, n*1024) != n*1024){
54: print("block %ld: ", first);
55: perror("read");
56: exit(1);
57: }
58: if(memcmp(bufp, buf1, n*1024)){
59: print("block %ld: bytes differ\n", first);
60: exit(1);
61: }
62: if(loop && ((loop%100) == 0)){
63: t = time((long *)0);
64: floop = loop+1;
65: print("loop %ld: ave blocks=%.1f, ave seek=%.1fk at %s",
66: loop, tbl/floop, tseek/floop, ctime(&t));
67: }
68: last = first+n;
69: }
70: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.