summaryrefslogtreecommitdiff
path: root/benchmarks/bonnie/files/patch-ab
blob: e598f7be6c39737414d9900d2d4f5ce4cab1d457 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
--- Bonnie.c~	Wed Aug 21 17:18:50 1991
+++ Bonnie.c	Thu Dec 30 17:49:15 1999
@@ -162,7 +162,7 @@
   char   seek_tickets[Seeks + SeekProcCount];
   double seeker_report[3];
-  int    size;
+  quad_t size;
   FILE * stream;
-  int    words;
+  off_t  words;
 
   fd = -1;
@@ -195,5 +195,5 @@
   size *= (1024 * 1024);
   sprintf(name, "%s/Bonnie.%d", dir, getpid());
-  fprintf(stderr, "File '%s', size: %d\n", name, size);
+  fprintf(stderr, "File '%s', size: %qd\n", name, size);
 
   /* Fill up a file, writing it a char at a time with the stdio putc() call */
@@ -228,5 +228,5 @@
       bufindex = 0;
     buf[bufindex++]++;
-    if (lseek(fd, (off_t) -words, 1) == -1)
+    if (lseek(fd, -words, 1) == -1)
       io_error("relative lseek(2)");
     if (write(fd, (char *) buf, words) == -1)
@@ -337,4 +337,5 @@
 
       /* set up and wait for the go-ahead */
+      close(0);
       close(seek_feedback[0]);
       close(seek_control[1]);
@@ -352,5 +353,11 @@
       while(seek_tickets[0])
       { /* until Mom says stop */
-        doseek((long) (random() % size), fd,
+      off_t seekto;
+	if (size < ((off_t)1 << 32))
+	  seekto = random() % size;
+	else
+	  seekto = ((off_t)random() << 32 + random())  % size;
+
+	doseek(seekto, fd,
 	  ((lseek_count++ % UpdateSeek) == 0));
 	if (read(seek_control[0], seek_tickets, 1) != 1)
@@ -422,5 +429,5 @@
 static void
 report(size)
-  int   size;
+  quad_t   size;
 {
   printf("              ");
@@ -434,5 +441,5 @@
   printf("%%CPU  /sec %%CPU\n");
 
-  printf("%-8.8s %4d ", machine, size / (1024 * 1024));
+  printf("%-8.8s %4qd ", machine, size / (1024 * 1024));
   printf("%5d %4.1f %5d %4.1f %5d %4.1f ",
     (int) (((double) size) / (delta[(int) Putc][Elapsed] * 1024.0)),
@@ -551,5 +558,5 @@
   char buf[Chunk];
 
-  sprintf(buf, "Bonnie: drastic I/O error (%s)", message);
+  sprintf(buf, "\nBonnie: drastic I/O error (%s)", message);
   perror(buf);
   exit(1);
@@ -593,5 +600,5 @@
     /* touch a word */
     buf[((int) random() % (size/IntSize - 2)) + 1]--;
-    if (lseek(fd, (long) probe, 0) != probe)
+    if (lseek(fd, probe, 0) != probe)
       io_error("lseek in doseek update");
     if (write(fd, (char *) buf, size) == -1)