Hello community,

here is the log from the commit of package bonnie++ for openSUSE:Factory 
checked in at 2020-09-14 12:29:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/bonnie++ (Old)
 and      /work/SRC/openSUSE:Factory/.bonnie++.new.4249 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "bonnie++"

Mon Sep 14 12:29:52 2020 rev:25 rq:834001 version:1.98

Changes:
--------
--- /work/SRC/openSUSE:Factory/bonnie++/bonnie++.changes        2019-11-06 
13:55:06.852091929 +0100
+++ /work/SRC/openSUSE:Factory/.bonnie++.new.4249/bonnie++.changes      
2020-09-14 12:31:04.065203466 +0200
@@ -1,0 +2,9 @@
+Sat Sep 12 09:32:24 UTC 2020 - Dirk Mueller <[email protected]>
+
+- update to 1.98:
+  * Allow specifying the number of random seeks and the number
+  of seeker processes and store that in the CSV (for testing NVMe).
+  * Changed the text output to use KiB/MiB/GiB as units of measurement so we
+  can fit NVMe results on screen. 
+
+-------------------------------------------------------------------

Old:
----
  bonnie++-1.97.3.tgz

New:
----
  bonnie++-1.98.tgz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ bonnie++.spec ++++++
--- /var/tmp/diff_new_pack.Ocsq2c/_old  2020-09-14 12:31:05.493204376 +0200
+++ /var/tmp/diff_new_pack.Ocsq2c/_new  2020-09-14 12:31:05.497204379 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package bonnie++
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,16 +17,15 @@
 
 
 Name:           bonnie++
-Version:        1.97.3
+Version:        1.98
 Release:        0
 Summary:        A Bonnie-Like File System Benchmark
 License:        MIT
-Url:            http://www.coker.com.au/bonnie++/
-Source:         
http://www.coker.com.au/bonnie++/experimental/%{name}-%{version}.tgz
+URL:            https://www.coker.com.au/bonnie++/
+Source:         https://www.coker.com.au/bonnie++/bonnie++-%{version}.tgz
 # PATCH-FIX-UPSTREAM bonnie++-1.96-makefile.patch -- fixes make install
 Patch0:         bonnie++-1.96-makefile.patch
 BuildRequires:  gcc-c++
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
 %description
 Bonnie++ is a benchmark suite aimed at performing a number of simple
@@ -39,14 +38,13 @@
 %build
 %configure \
   --disable-stripping
-make clean %{?_smp_mflags}
-make MORECFLAGS="%{optflags}" %{?_smp_mflags}
+%make_build clean
+%make_build MORECFLAGS="%{optflags}"
 
 %install
 %make_install
 
 %files
-%defattr(-,root,root)
 %doc README-2.00 README.txt
 %{_bindir}/bon_csv2html
 %{_bindir}/bon_csv2txt
@@ -55,11 +53,11 @@
 %{_sbindir}/getc_putc
 %{_sbindir}/getc_putc_helper
 %{_sbindir}/zcav
-%{_mandir}/man1/bon_csv2html.1%{ext_man}
-%{_mandir}/man1/bon_csv2txt.1%{ext_man}
-%{_mandir}/man1/generate_randfile.1%{ext_man}
-%{_mandir}/man8/bonnie++.8%{ext_man}
-%{_mandir}/man8/getc_putc.8%{ext_man}
-%{_mandir}/man8/zcav.8%{ext_man}
+%{_mandir}/man1/bon_csv2html.1%{?ext_man}
+%{_mandir}/man1/bon_csv2txt.1%{?ext_man}
+%{_mandir}/man1/generate_randfile.1%{?ext_man}
+%{_mandir}/man8/bonnie++.8%{?ext_man}
+%{_mandir}/man8/getc_putc.8%{?ext_man}
+%{_mandir}/man8/zcav.8%{?ext_man}
 
 %changelog

++++++ bonnie++-1.97.3.tgz -> bonnie++-1.98.tgz ++++++
++++ 2457 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/Makefile new/bonnie++-1.98/Makefile
--- old/bonnie++-1.97.3/Makefile        2016-12-13 03:37:51.000000000 +0100
+++ new/bonnie++-1.98/Makefile  2018-12-26 05:14:28.000000000 +0100
@@ -5,7 +5,7 @@
 
 SCRIPTS=bon_csv2txt
 
-prefix=/home/rjc/debian/bonnie++-1.97.3/debian/bonnie++/usr
+prefix=/home/rjc/debian/bonnie++-1.98/debian/bonnie++/usr
 eprefix=${prefix}
 #MORE_WARNINGS=-Weffc++
 WFLAGS=-Wall -W -Wshadow -Wpointer-arith -Wwrite-strings -pedantic -ffor-scope 
-Wcast-align -Wsign-compare -Wpointer-arith -Wwrite-strings -Wformat-security 
-Wswitch-enum -Winit-self $(MORE_WARNINGS)
@@ -58,9 +58,9 @@
        ${INSTALL} $(SCRIPTS) $(eprefix)/bin
 
 install: install-bin
-       mkdir -p 
/home/rjc/debian/bonnie++-1.97.3/debian/bonnie++/usr/share/man/man1 
/home/rjc/debian/bonnie++-1.97.3/debian/bonnie++/usr/share/man/man8
-       ${INSTALL} -m 644 $(MAN1) 
/home/rjc/debian/bonnie++-1.97.3/debian/bonnie++/usr/share/man/man1
-       ${INSTALL} -m 644 $(MAN8) 
/home/rjc/debian/bonnie++-1.97.3/debian/bonnie++/usr/share/man/man8
+       mkdir -p 
/home/rjc/debian/bonnie++-1.98/debian/bonnie++/usr/share/man/man1 
/home/rjc/debian/bonnie++-1.98/debian/bonnie++/usr/share/man/man8
+       ${INSTALL} -m 644 $(MAN1) 
/home/rjc/debian/bonnie++-1.98/debian/bonnie++/usr/share/man/man1
+       ${INSTALL} -m 644 $(MAN8) 
/home/rjc/debian/bonnie++-1.98/debian/bonnie++/usr/share/man/man8
 
 %.o: %.cpp
        $(CXX) -c $<
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/bon_csv2html.1 new/bonnie++-1.98/bon_csv2html.1
--- old/bonnie++-1.97.3/bon_csv2html.1  2016-12-13 03:37:51.000000000 +0100
+++ new/bonnie++-1.98/bon_csv2html.1    2018-12-26 05:14:28.000000000 +0100
@@ -21,10 +21,10 @@
 Before each field I list the field number as well as the name given in the 
heading
 .TP
 .B 0 format_version
-Version of the output format in use (1.97)
+Version of the output format in use (1.98)
 .TP
 .B 1 bonnie_version
-(1.97)
+(1.98)
 .TP
 .B 2 name
 Machine Name
@@ -41,69 +41,75 @@
 .B 6 chunk_size
 Size of chunks in bytes
 .TP
-.B 7 putc,putc_cpu
+.B 7 seeks
+Number of seeks for random seek test
+.TP
+.B 8 seek_proc_count
+Number of seeker processes for the random seek test
+.TP
+.B 9 putc,putc_cpu
 Results for writing a character at a time K/s,%CPU
 .TP
-.B 9 put_block,put_block_cpu
+.B 11 put_block,put_block_cpu
 Results for writing a block at a time K/s,%CPU
 .TP
-.B 11 rewrite,rewrite_cpu
+.B 13 rewrite,rewrite_cpu
 Results for reading and re-writing a block at a time K/s,%CPU
 .TP
-.B 13 getc,getc_cpu
+.B 15 getc,getc_cpu
 Results for reading a character at a time K/s,%CPU
 .TP
-.B 15 get_block,get_block_cpu
+.B 17 get_block,get_block_cpu
 Results for reading a block at a time K/s,%CPU
 .TP
-.B 17 seeks,seeks_cpu
+.B 19 seeks,seeks_cpu
 Results for the seek test seeks/s,%CPU
 .TP
-.B 19 num_files
+.B 21 num_files
 Number of files for file-creation tests (units of 1024 files)
 .TP
-.B 20 max_size
+.B 22 max_size
 The maximum size of files for file-creation tests.  Or the type of files for
 links.
 .TP
-.B 21 min_size
+.B 23 min_size
 The minimum size of files for file-creation tests.
 .TP
-.B 22 num_dirs
+.B 24 num_dirs
 The number of directories for creation of files in multiple directories.
 .TP
-.B 23 file_chunk_size
+.B 25 file_chunk_size
 The size of blocks for writing multiple files.
 .TP
-.B 24 seq_create,seq_create_cpu
+.B 26 seq_create,seq_create_cpu
 Rate of creating files sequentially files/s,%CPU
 .TP
-.B 26 seq_stat,seq_stat_cpu
+.B 28 seq_stat,seq_stat_cpu
 Rate of reading/stating files sequentially files/s,%CPU
 .TP
-.B 28 seq_del,seq_del_cpu
+.B 30 seq_del,seq_del_cpu
 Rate of deleting files sequentially files/s,%CPU
 .TP
-.B 30 ran_create,ran_create_cpu
+.B 32 ran_create,ran_create_cpu
 Rate of creating files in random order files/s,%CPU
 .TP
-.B 32 ran_stat,ran_stat_cpu
+.B 34 ran_stat,ran_stat_cpu
 Rate of deleting files in random order files/s,%CPU
 .TP
-.B 34 ran_del,ran_del_cpu
+.B 36 ran_del,ran_del_cpu
 Rate of deleting files in random order files/s,%CPU
 .TP
-.B 36 putc_latency,put_block_latency,rewrite_latency
+.B 38 putc_latency,put_block_latency,rewrite_latency
 Latency (maximum amount of time for a single operation) for putc, put_block,
 and reqrite
 .TP
-.B 39 getc_latency,get_block_latency,seeks_latency
+.B 41 getc_latency,get_block_latency,seeks_latency
 Latency for getc, get_block, and seeks
 .TP
-.B 42 seq_create_latency,seq_stat_latency,seq_del_latency
+.B 44 seq_create_latency,seq_stat_latency,seq_del_latency
 Latency for seq_create, seq_stat, and seq_del
 .TP
-.B 45 ran_create_latency,ran_stat_latency,ran_del_latency
+.B 47 ran_create_latency,ran_stat_latency,ran_del_latency
 Latency for ran_create, ran_stat, and ran_del
 .P
 A string that starts with '#' is a comment.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/bon_csv2html.1.in new/bonnie++-1.98/bon_csv2html.1.in
--- old/bonnie++-1.97.3/bon_csv2html.1.in       2001-06-12 17:15:51.000000000 
+0200
+++ new/bonnie++-1.98/bon_csv2html.1.in 2018-09-13 15:07:36.000000000 +0200
@@ -24,7 +24,7 @@
 Version of the output format in use (@csv_version@)
 .TP
 .B 1 bonnie_version
-(@version@)
+(@csv_version@)
 .TP
 .B 2 name
 Machine Name
@@ -41,69 +41,75 @@
 .B 6 chunk_size
 Size of chunks in bytes
 .TP
-.B 7 putc,putc_cpu
+.B 7 seeks
+Number of seeks for random seek test
+.TP
+.B 8 seek_proc_count
+Number of seeker processes for the random seek test
+.TP
+.B 9 putc,putc_cpu
 Results for writing a character at a time K/s,%CPU
 .TP
-.B 9 put_block,put_block_cpu
+.B 11 put_block,put_block_cpu
 Results for writing a block at a time K/s,%CPU
 .TP
-.B 11 rewrite,rewrite_cpu
+.B 13 rewrite,rewrite_cpu
 Results for reading and re-writing a block at a time K/s,%CPU
 .TP
-.B 13 getc,getc_cpu
+.B 15 getc,getc_cpu
 Results for reading a character at a time K/s,%CPU
 .TP
-.B 15 get_block,get_block_cpu
+.B 17 get_block,get_block_cpu
 Results for reading a block at a time K/s,%CPU
 .TP
-.B 17 seeks,seeks_cpu
+.B 19 seeks,seeks_cpu
 Results for the seek test seeks/s,%CPU
 .TP
-.B 19 num_files
+.B 21 num_files
 Number of files for file-creation tests (units of 1024 files)
 .TP
-.B 20 max_size
+.B 22 max_size
 The maximum size of files for file-creation tests.  Or the type of files for
 links.
 .TP
-.B 21 min_size
+.B 23 min_size
 The minimum size of files for file-creation tests.
 .TP
-.B 22 num_dirs
+.B 24 num_dirs
 The number of directories for creation of files in multiple directories.
 .TP
-.B 23 file_chunk_size
+.B 25 file_chunk_size
 The size of blocks for writing multiple files.
 .TP
-.B 24 seq_create,seq_create_cpu
+.B 26 seq_create,seq_create_cpu
 Rate of creating files sequentially files/s,%CPU
 .TP
-.B 26 seq_stat,seq_stat_cpu
+.B 28 seq_stat,seq_stat_cpu
 Rate of reading/stating files sequentially files/s,%CPU
 .TP
-.B 28 seq_del,seq_del_cpu
+.B 30 seq_del,seq_del_cpu
 Rate of deleting files sequentially files/s,%CPU
 .TP
-.B 30 ran_create,ran_create_cpu
+.B 32 ran_create,ran_create_cpu
 Rate of creating files in random order files/s,%CPU
 .TP
-.B 32 ran_stat,ran_stat_cpu
+.B 34 ran_stat,ran_stat_cpu
 Rate of deleting files in random order files/s,%CPU
 .TP
-.B 34 ran_del,ran_del_cpu
+.B 36 ran_del,ran_del_cpu
 Rate of deleting files in random order files/s,%CPU
 .TP
-.B 36 putc_latency,put_block_latency,rewrite_latency
+.B 38 putc_latency,put_block_latency,rewrite_latency
 Latency (maximum amount of time for a single operation) for putc, put_block,
 and reqrite
 .TP
-.B 39 getc_latency,get_block_latency,seeks_latency
+.B 41 getc_latency,get_block_latency,seeks_latency
 Latency for getc, get_block, and seeks
 .TP
-.B 42 seq_create_latency,seq_stat_latency,seq_del_latency
+.B 44 seq_create_latency,seq_stat_latency,seq_del_latency
 Latency for seq_create, seq_stat, and seq_del
 .TP
-.B 45 ran_create_latency,ran_stat_latency,ran_del_latency
+.B 47 ran_create_latency,ran_stat_latency,ran_del_latency
 Latency for ran_create, ran_stat, and ran_del
 .P
 A string that starts with '#' is a comment.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/bon_csv2html.cpp new/bonnie++-1.98/bon_csv2html.cpp
--- old/bonnie++-1.97.3/bon_csv2html.cpp        2016-12-13 03:37:51.000000000 
+0100
+++ new/bonnie++-1.98/bon_csv2html.cpp  2018-09-13 16:54:36.000000000 +0200
@@ -6,7 +6,7 @@
 #include <math.h>
 
 // Maximum number of items expected on a csv line
-#define MAX_ITEMS 48
+#define MAX_ITEMS 50
 using namespace std;
 typedef vector<PCCHAR> STR_VEC;
 
@@ -43,19 +43,22 @@
 bool col_used[MAX_ITEMS];
 #define COL_NAME 2
 #define COL_CONCURRENCY 3
-#define COL_FILE_size 5
-#define COL_DATA_CHUNK_size 6
-#define COL_PUTC 7
-#define COL_NUM_FILES 19
-#define COL_MAX_size 20
-#define COL_MIN_size 21
-#define COL_NUM_DIRS 22
-#define COL_FILE_CHUNK_size 23
-#define COL_RAN_DEL_CPU 35
-#define COL_PUTC_LATENCY 36
-#define COL_SEEKS_LATENCY 41
-#define COL_SEQ_CREATE_LATENCY 42
-#define COL_RAN_DEL_LATENCY 47
+#define COL_FILE_SIZE 5
+#define COL_DATA_CHUNK_SIZE 6
+#define COL_PUTC 9
+#define COL_PUT_BLOCK 11
+#define COL_REWRITE 13
+#define COL_GET_BLOCK 17
+#define COL_NUM_FILES 21
+#define COL_MAX_SIZE 22
+#define COL_MIN_SIZE 23
+#define COL_NUM_DIRS 24
+#define COL_FILE_CHUNK_SIZE 25
+#define COL_RAN_DEL_CPU 37
+#define COL_PUTC_LATENCY 38
+#define COL_SEEKS_LATENCY 43
+#define COL_SEQ_CREATE_LATENCY 44
+#define COL_RAN_DEL_LATENCY 49
 
 void usage()
 {
@@ -94,7 +97,7 @@
     int j;
     for(j = COL_CONCURRENCY; j < MAX_ITEMS; j++)
     {
-      if( (j >= COL_NUM_FILES && j <= COL_FILE_CHUNK_size) || j <= 
COL_DATA_CHUNK_size )
+      if( (j >= COL_NUM_FILES && j <= COL_FILE_CHUNK_SIZE) || j <= 
COL_DATA_CHUNK_SIZE )
       {
         props[i][j] = "class=\"size\" bgcolor=\"#FFFFFF\"";
       }
@@ -113,24 +116,24 @@
     print_item(i, COL_NAME, "rowspan=\"2\"");
     if(col_used[COL_CONCURRENCY] == true)
       print_item(i, COL_CONCURRENCY);
-    print_item(i, COL_FILE_size); // file_size
-    if(col_used[COL_DATA_CHUNK_size] == true)
-      print_item(i, COL_DATA_CHUNK_size);
+    print_item(i, COL_FILE_SIZE); // file_size
+    if(col_used[COL_DATA_CHUNK_SIZE] == true)
+      print_item(i, COL_DATA_CHUNK_SIZE);
     print_a_line(i, COL_PUTC, COL_NUM_FILES);
-    if(col_used[COL_MAX_size])
-      print_item(i, COL_MAX_size);
-    if(col_used[COL_MIN_size])
-      print_item(i, COL_MIN_size);
+    if(col_used[COL_MAX_SIZE])
+      print_item(i, COL_MAX_SIZE);
+    if(col_used[COL_MIN_SIZE])
+      print_item(i, COL_MIN_SIZE);
     if(col_used[COL_NUM_DIRS])
       print_item(i, COL_NUM_DIRS);
-    if(col_used[COL_FILE_CHUNK_size])
-      print_item(i, COL_FILE_CHUNK_size);
-    print_a_line(i, COL_FILE_CHUNK_size + 1, COL_RAN_DEL_CPU);
+    if(col_used[COL_FILE_CHUNK_SIZE])
+      print_item(i, COL_FILE_CHUNK_SIZE);
+    print_a_line(i, COL_FILE_CHUNK_SIZE + 1, COL_RAN_DEL_CPU);
     printf("</tr>\n");
 // Now print the latency line
     printf("<tr>");
     int lat_width = 1;
-    if(col_used[COL_DATA_CHUNK_size] == true)
+    if(col_used[COL_DATA_CHUNK_SIZE] == true)
       lat_width++;
     if(col_used[COL_CONCURRENCY] == true)
       lat_width++;
@@ -366,18 +369,18 @@
 int header()
 {
   int vers_width = 2;
-  if(col_used[COL_DATA_CHUNK_size] == true)
+  if(col_used[COL_DATA_CHUNK_SIZE] == true)
     vers_width++;
   if(col_used[COL_CONCURRENCY] == true)
     vers_width++;
   int mid_width = 1;
-  if(col_used[COL_MAX_size])
+  if(col_used[COL_MAX_SIZE])
     mid_width++;
-  if(col_used[COL_MIN_size])
+  if(col_used[COL_MIN_SIZE])
     mid_width++;
   if(col_used[COL_NUM_DIRS])
     mid_width++;
-  if(col_used[COL_FILE_CHUNK_size])
+  if(col_used[COL_FILE_CHUNK_SIZE])
     mid_width++;
   printf("<!DOCTYPE html PUBLIC \"-//W3C//Dtd XHTML 1.0 Strict//EN\" 
\"http://www.w3.org/tr/xhtml1/Dtd/xhtml1-strict.dtd\";>"
 "<html xmlns=\"http://www.w3.org/1999/xhtml\";>"
@@ -406,18 +409,18 @@
   else
     printf("<td></td>");
   printf("<td>Size</td>");
-  if(col_used[COL_DATA_CHUNK_size] == true)
+  if(col_used[COL_DATA_CHUNK_SIZE] == true)
     printf("<td>Chunk Size</td>");
   heading("Per Char"); heading("Block"); heading("Rewrite");
   heading("Per Char"); heading("Block");
   printf("<td>Num Files</td>");
-  if(col_used[COL_MAX_size])
+  if(col_used[COL_MAX_SIZE])
     printf("<td>Max Size</td>");
-  if(col_used[COL_MIN_size])
+  if(col_used[COL_MIN_SIZE])
     printf("<td>Min Size</td>");
   if(col_used[COL_NUM_DIRS])
     printf("<td>Num Dirs</td>");
-  if(col_used[COL_FILE_CHUNK_size])
+  if(col_used[COL_FILE_CHUNK_SIZE])
     printf("<td>Chunk Size</td>");
   heading("Create"); heading("Read"); heading("Delete");
   heading("Create"); heading("Read"); heading("Delete");
@@ -430,7 +433,7 @@
                       "<td class=\"ksec\"><font size=-2>%% CPU</font></td>";
   for(i = 0; i < 5; i++)
   {
-    printf(ksec_form, "K");
+    printf(ksec_form, "M");
   }
   printf(ksec_form, "");
   printf("<td colspan=\"%d\"></td>", mid_width);
@@ -484,8 +487,20 @@
 void print_item(int num, int item, CPCCHAR extra)
 {
   PCCHAR line_data;
+  char buf[1024];
   if(int(data[num].size()) > item)
+  {
     line_data = data[num][item];
+    switch(item)
+    {
+    case COL_PUT_BLOCK:
+    case COL_REWRITE:
+    case COL_GET_BLOCK:
+      int tmp = (atoi(line_data) + 512) / 1024;
+      snprintf(buf, sizeof(buf), "%d", tmp);
+      line_data = buf;
+    }
+  }
   else
     line_data = "";
   printf("<td");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/bon_csv2txt new/bonnie++-1.98/bon_csv2txt
--- old/bonnie++-1.97.3/bon_csv2txt     2016-12-13 03:37:51.000000000 +0100
+++ new/bonnie++-1.98/bon_csv2txt       2018-12-26 05:14:28.000000000 +0100
@@ -1,10 +1,14 @@
 #!/usr/bin/perl
+use strict;
+
+my @io;
+my $iocount = 0;
+my @file;
+my $filecount = 0;
 
 {
   my $line;
-  $iocount = 0;
-  $filecount = 0;
-  while($line = <STDIN>)
+  while(my $line = <STDIN>)
   {
     while($line =~ /^name,/)
     {
@@ -19,17 +23,17 @@
 
 sub IOHeader
 {
-  my $version = '1.97';
+  my $version = '1.98';
 printf(STDOUT "Version %9s   ------Sequential Output------ --Sequential Input- 
--Random-\n", $version);
 print "                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- 
--Seeks--\n";
-print "Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  
/sec %CP\n";
+print "Name:Size etc        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  
/sec %CP\n";
 }
 
 sub FileHeader
 {
 print "                    ------Sequential Create------ --------Random 
Create--------\n";
 print "                    -Create-- --Read--- -Delete-- -Create-- --Read--- 
-Delete--\n";
-print "files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  
/sec %CP\n";
+print "      files:max:min  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  
/sec %CP\n";
 }
 
 sub process
@@ -39,60 +43,57 @@
   chomp($line);
   $line =~ s/\r//;
   my @arr = split(',', $line);
-  my $csv_version = '1.97';
+  my $csv_version = '1.98';
   if($arr[0] ne $csv_version)
   {
-    printf(STDERR "Can't process: %s\n", $line);
+    printf(STDERR "Expected %s, got %s from %s\n", $csv_version, $arr[0], 
$line);
     return;
   }
   my $name = $arr[2];
 
 # merge size and chunk-size
-  my $tmp = $arr[5];
-  if($arr[6] ne "")
-  {
-    $tmp .= ":" . $arr[6];
-  }
-  $arr[6] = $tmp;
+  my $tmp = join(':', @arr[5 .. 8]);
+  $tmp =~ s/:*$//;
+  $arr[8] = $tmp;
 # $ioline contains the file-IO data, IE we strip off the data on file creation
-  my @ioline = @arr[6 .. 18];
+  my @ioline = @arr[8 .. 20];
   if(join('', @ioline) ne "")
   {
     $io[$iocount] = $name . "," . join(',', @ioline);
-    if($#arr > 37)
+    if($#arr > 39)
     {
-      $io[$iocount] .= "," . join(',', @arr[36..41]);
+      $io[$iocount] .= "," . join(',', @arr[38..43]);
     }
     $iocount++;
   }
 
 # merge num_files, max_size, min_size, num_dirs, and file_chunk_size
-  $tmp = $arr[19];
-  if($arr[20] ne "")
+  $tmp = $arr[21];
+  if($arr[22] ne "")
   {
-    $tmp .= ":" . $arr[20];
+    $tmp .= ":" . $arr[22];
   }
-  if($arr[21] ne "")
+  if($arr[23] ne "")
   {
-    $tmp .= ":" . $arr[21];
+    $tmp .= ":" . $arr[23];
   }
-  if($arr[22] ne "")
+  if($arr[24] ne "")
   {
-    $tmp .= "/" . $arr[22];
+    $tmp .= "/" . $arr[24];
   }
-  if($arr[23] ne "")
+  if($arr[25] ne "")
   {
-    $tmp .= ":" . $arr[23];
+    $tmp .= ":" . $arr[25];
   }
-  $arr[23] = $tmp;
+  $arr[25] = $tmp;
 # $fileline contains the file creation data - everything but $ioline
-  my @fileline = @arr[23 .. 35];
+  my @fileline = @arr[25 .. 37];
   if(join('', @fileline) ne "")
   {
     $file[$filecount] = $name . "," . join(',', @fileline);
-    if($#arr > 41)
+    if($#arr > 43)
     {
-      $file[$filecount] .= "," . join(',', @arr[42..$#arr]);
+      $file[$filecount] .= "," . join(',', @arr[44..$#arr]);
     }
     $filecount++;
   }
@@ -102,14 +103,20 @@
 {
   if($filecount < 1){ return; }
   FileHeader();
-  for($i = 0; $i < $filecount; $i++)
+  for(my $i = 0; $i < $filecount; $i++)
   {
-    @arr = split(/,/,$file[$i]);
+    my @arr = split(/,/,$file[$i]);
     my $size = $arr[1];
-    $size =~ s/:0:0:/\//;
     my $desc = $arr[0] . "                   ";
-    $desc = substr($desc, 0, 18 - length($size) );
-    $desc .= " " . $size;
+    if(length($size) < 18)
+    {
+      $desc = substr($desc, 0, 18 - length($size) );
+      $desc .= " " . $size;
+    }
+    else
+    {
+      $desc = $size;
+    }
     printf(STDOUT "%19s %5s %3s %5s %3s %5s %3s %5s %3s %5s %3s %5s %3s\n"
          , $desc, $arr[2], $arr[3], $arr[4], $arr[5], $arr[6], $arr[7]
          , $arr[8], $arr[9], $arr[10], $arr[11], $arr[12], $arr[13]);
@@ -121,20 +128,50 @@
   }
 }
 
+sub convSpd
+{
+  my ($speed) = @_;
+  if($speed eq "")
+  {
+    return "";
+  }
+  if($speed < 10000)
+  {
+    return sprintf("%4dk", $speed);
+  }
+  if($speed / 1024 < 1000)
+  {
+    my $tmp = $speed / 1024;
+    if($tmp < 100)
+    {
+      return sprintf("%4.1fm", $tmp);
+    }
+    return sprintf("%4dm", ($tmp + 0.5));
+  }
+  return sprintf("%4.1fg", $speed / 1024 / 1024);
+}
+
 sub printIOData
 {
   if($iocount < 1){ return; }
   IOHeader();
-  for($i = 0; $i < $iocount; $i++)
+  for(my $i = 0; $i < $iocount; $i++)
   {
-    @arr = split(/,/,$io[$i]);
+    my @arr = split(/,/,$io[$i]);
     my $size = $arr[1];
     my $desc = $arr[0] . "                   ";
-    $desc = substr($desc, 0, 18 - length($size) );
-    $desc .= " " . $size;
+    if(length($size) < 18)
+    {
+      $desc = substr($desc, 0, 18 - length($size) );
+      $desc .= " " . $size;
+    }
+    else
+    {
+      $desc = $size;
+    }
     printf(STDOUT "%19s %5s %3s %5s %3s %5s %3s %5s %3s %5s %3s %5s %3s\n"
-         , $desc, $arr[2], $arr[3], $arr[4], $arr[5], $arr[6], $arr[7]
-         , $arr[8], $arr[9], $arr[10], $arr[11], $arr[12], $arr[13]);
+         , $desc, convSpd($arr[2]), $arr[3], convSpd($arr[4]), $arr[5], 
convSpd($arr[6]), $arr[7]
+         , convSpd($arr[8]), $arr[9], convSpd($arr[10]), $arr[11], $arr[12], 
$arr[13]);
     if($#arr > 13 && join("", @arr[14..$#arr]) ne "")
     {
       printf(STDOUT "Latency           %9s %9s %9s %9s %9s %9s\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/bon_csv2txt.in new/bonnie++-1.98/bon_csv2txt.in
--- old/bonnie++-1.97.3/bon_csv2txt.in  2001-06-12 17:57:17.000000000 +0200
+++ new/bonnie++-1.98/bon_csv2txt.in    2018-12-26 05:12:51.000000000 +0100
@@ -1,10 +1,14 @@
 #!/usr/bin/perl
+use strict;
+
+my @io;
+my $iocount = 0;
+my @file;
+my $filecount = 0;
 
 {
   my $line;
-  $iocount = 0;
-  $filecount = 0;
-  while($line = <STDIN>)
+  while(my $line = <STDIN>)
   {
     while($line =~ /^name,/)
     {
@@ -22,14 +26,14 @@
   my $version = '@version@';
 printf(STDOUT "Version %9s   ------Sequential Output------ --Sequential Input- 
--Random-\n", $version);
 print "                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- 
--Seeks--\n";
-print "Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  
/sec %CP\n";
+print "Name:Size etc        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  
/sec %CP\n";
 }
 
 sub FileHeader
 {
 print "                    ------Sequential Create------ --------Random 
Create--------\n";
 print "                    -Create-- --Read--- -Delete-- -Create-- --Read--- 
-Delete--\n";
-print "files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  
/sec %CP\n";
+print "      files:max:min  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  
/sec %CP\n";
 }
 
 sub process
@@ -42,57 +46,54 @@
   my $csv_version = '@csv_version@';
   if($arr[0] ne $csv_version)
   {
-    printf(STDERR "Can't process: %s\n", $line);
+    printf(STDERR "Expected %s, got %s from %s\n", $csv_version, $arr[0], 
$line);
     return;
   }
   my $name = $arr[2];
 
 # merge size and chunk-size
-  my $tmp = $arr[5];
-  if($arr[6] ne "")
-  {
-    $tmp .= ":" . $arr[6];
-  }
-  $arr[6] = $tmp;
+  my $tmp = join(':', @arr[5 .. 8]);
+  $tmp =~ s/:*$//;
+  $arr[8] = $tmp;
 # $ioline contains the file-IO data, IE we strip off the data on file creation
-  my @ioline = @arr[6 .. 18];
+  my @ioline = @arr[8 .. 20];
   if(join('', @ioline) ne "")
   {
     $io[$iocount] = $name . "," . join(',', @ioline);
-    if($#arr > 37)
+    if($#arr > 39)
     {
-      $io[$iocount] .= "," . join(',', @arr[36..41]);
+      $io[$iocount] .= "," . join(',', @arr[38..43]);
     }
     $iocount++;
   }
 
 # merge num_files, max_size, min_size, num_dirs, and file_chunk_size
-  $tmp = $arr[19];
-  if($arr[20] ne "")
+  $tmp = $arr[21];
+  if($arr[22] ne "")
   {
-    $tmp .= ":" . $arr[20];
+    $tmp .= ":" . $arr[22];
   }
-  if($arr[21] ne "")
+  if($arr[23] ne "")
   {
-    $tmp .= ":" . $arr[21];
+    $tmp .= ":" . $arr[23];
   }
-  if($arr[22] ne "")
+  if($arr[24] ne "")
   {
-    $tmp .= "/" . $arr[22];
+    $tmp .= "/" . $arr[24];
   }
-  if($arr[23] ne "")
+  if($arr[25] ne "")
   {
-    $tmp .= ":" . $arr[23];
+    $tmp .= ":" . $arr[25];
   }
-  $arr[23] = $tmp;
+  $arr[25] = $tmp;
 # $fileline contains the file creation data - everything but $ioline
-  my @fileline = @arr[23 .. 35];
+  my @fileline = @arr[25 .. 37];
   if(join('', @fileline) ne "")
   {
     $file[$filecount] = $name . "," . join(',', @fileline);
-    if($#arr > 41)
+    if($#arr > 43)
     {
-      $file[$filecount] .= "," . join(',', @arr[42..$#arr]);
+      $file[$filecount] .= "," . join(',', @arr[44..$#arr]);
     }
     $filecount++;
   }
@@ -102,14 +103,20 @@
 {
   if($filecount < 1){ return; }
   FileHeader();
-  for($i = 0; $i < $filecount; $i++)
+  for(my $i = 0; $i < $filecount; $i++)
   {
-    @arr = split(/,/,$file[$i]);
+    my @arr = split(/,/,$file[$i]);
     my $size = $arr[1];
-    $size =~ s/:0:0:/\//;
     my $desc = $arr[0] . "                   ";
-    $desc = substr($desc, 0, 18 - length($size) );
-    $desc .= " " . $size;
+    if(length($size) < 18)
+    {
+      $desc = substr($desc, 0, 18 - length($size) );
+      $desc .= " " . $size;
+    }
+    else
+    {
+      $desc = $size;
+    }
     printf(STDOUT "%19s %5s %3s %5s %3s %5s %3s %5s %3s %5s %3s %5s %3s\n"
          , $desc, $arr[2], $arr[3], $arr[4], $arr[5], $arr[6], $arr[7]
          , $arr[8], $arr[9], $arr[10], $arr[11], $arr[12], $arr[13]);
@@ -121,20 +128,50 @@
   }
 }
 
+sub convSpd
+{
+  my ($speed) = @_;
+  if($speed eq "")
+  {
+    return "";
+  }
+  if($speed < 10000)
+  {
+    return sprintf("%4dk", $speed);
+  }
+  if($speed / 1024 < 1000)
+  {
+    my $tmp = $speed / 1024;
+    if($tmp < 100)
+    {
+      return sprintf("%4.1fm", $tmp);
+    }
+    return sprintf("%4dm", ($tmp + 0.5));
+  }
+  return sprintf("%4.1fg", $speed / 1024 / 1024);
+}
+
 sub printIOData
 {
   if($iocount < 1){ return; }
   IOHeader();
-  for($i = 0; $i < $iocount; $i++)
+  for(my $i = 0; $i < $iocount; $i++)
   {
-    @arr = split(/,/,$io[$i]);
+    my @arr = split(/,/,$io[$i]);
     my $size = $arr[1];
     my $desc = $arr[0] . "                   ";
-    $desc = substr($desc, 0, 18 - length($size) );
-    $desc .= " " . $size;
+    if(length($size) < 18)
+    {
+      $desc = substr($desc, 0, 18 - length($size) );
+      $desc .= " " . $size;
+    }
+    else
+    {
+      $desc = $size;
+    }
     printf(STDOUT "%19s %5s %3s %5s %3s %5s %3s %5s %3s %5s %3s %5s %3s\n"
-         , $desc, $arr[2], $arr[3], $arr[4], $arr[5], $arr[6], $arr[7]
-         , $arr[8], $arr[9], $arr[10], $arr[11], $arr[12], $arr[13]);
+         , $desc, convSpd($arr[2]), $arr[3], convSpd($arr[4]), $arr[5], 
convSpd($arr[6]), $arr[7]
+         , convSpd($arr[8]), $arr[9], convSpd($arr[10]), $arr[11], $arr[12], 
$arr[13]);
     if($#arr > 13 && join("", @arr[14..$#arr]) ne "")
     {
       printf(STDOUT "Latency           %9s %9s %9s %9s %9s %9s\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/bon_io.cpp new/bonnie++-1.98/bon_io.cpp
--- old/bonnie++-1.97.3/bon_io.cpp      2009-07-03 04:26:00.000000000 +0200
+++ new/bonnie++-1.98/bon_io.cpp        2018-09-13 15:07:36.000000000 +0200
@@ -96,9 +96,10 @@
   return 0;
 }
 
-int CFileOp::seek_test(Rand &r, bool quiet, Sync &s)
+int CFileOp::seek_test(Rand &r, bool quiet, int Seeks, int SeekProcCount, Sync 
&s)
 {
-  int seek_tickets[SeekProcCount + Seeks];
+  int message_count = SeekProcCount + Seeks;
+  int *seek_tickets = (int *)malloc(sizeof(int) * message_count);
   int next;
   for(next = 0; next < Seeks; next++)
   {
@@ -118,7 +119,7 @@
   if(s.decrement_and_wait(Lseek))
     return 1;
   if(!quiet) fprintf(stderr, "start 'em...");
-  if(Write(seek_tickets, sizeof(seek_tickets), 0) != int(sizeof(seek_tickets)) 
)
+  if(Write(seek_tickets, sizeof(int) * message_count, 0) != (int)sizeof(int) * 
message_count)
   {
     fprintf(stderr, "Can't write tickets.\n");
     return 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/bon_io.h new/bonnie++-1.98/bon_io.h
--- old/bonnie++-1.97.3/bon_io.h        2009-07-03 04:19:38.000000000 +0200
+++ new/bonnie++-1.98/bon_io.h  2018-09-13 15:07:36.000000000 +0200
@@ -23,7 +23,7 @@
   int read_block(PVOID buf);
   int seek(int offset, int whence);
   int doseek(unsigned int where, bool update);
-  int seek_test(Rand &r, bool quiet, Sync &s);
+  int seek_test(Rand &r, bool quiet, int Seeks, int SeekProcCount, Sync &s);
   void Close();
   // reopen a file, bool for whether the file should be unlink()'d and 
creat()'d
   int reopen(bool create);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/bon_time.cpp new/bonnie++-1.98/bon_time.cpp
--- old/bonnie++-1.97.3/bon_time.cpp    2012-11-23 08:22:33.000000000 +0100
+++ new/bonnie++-1.98/bon_time.cpp      2018-09-13 16:54:36.000000000 +0200
@@ -124,7 +124,31 @@
     else
     {
       if(m_type == txt)
-        fprintf(m_fp, " %5d", int(stat));
+      {
+        if(test < Lseek)
+        {
+          if(stat < 10000.0)
+          {
+            fprintf(m_fp, " %4dk", (int)stat);
+          }
+          else if(stat / 1024.0 < 1000.0)
+          {
+            stat = stat / 1024.0;
+            if(stat < 100.0)
+              fprintf(m_fp, " %4.1fm", stat);
+            else
+              fprintf(m_fp, " %4dm", (int)(stat + 0.5));
+          }
+          else
+          {
+            fprintf(m_fp, " %4.1fg", stat / 1024.0 / 1024.0);
+          }
+        }
+        else
+        {
+          fprintf(m_fp, " %5d", stat);
+        }
+      }
       else
         fprintf(m_fp, ",%d", int(stat));
     }
@@ -211,7 +235,7 @@
 
 int
 BonTimer::DoReportIO(int file_size, int char_file_size
-                   , int io_chunk_size, FILE *fp)
+                   , int io_chunk_size, int Seeks, int SeekProcCount, FILE *fp)
 {
   int i;
   m_fp = fp;
@@ -226,26 +250,54 @@
       fprintf(m_fp, "Version %5s       ", BON_VERSION);
       fprintf(m_fp,
         "------Sequential Output------ --Sequential Input- --Random-\n");
-      fprintf(m_fp, "Concurrency %3d     ", m_concurrency);
+      fprintf(m_fp, "                    ");
       fprintf(m_fp,
         "-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--\n");
-      if(io_chunk_size == DefaultChunkSize)
-        fprintf(m_fp, "Machine        Size ");
-      else
-        fprintf(m_fp, "Machine   Size:chnk ");
-      fprintf(m_fp, "K/sec %%CP K/sec %%CP K/sec %%CP K/sec %%CP K/sec ");
+      fprintf(m_fp, "Name:Size etc       ");
+      fprintf(m_fp, " /sec %%CP  /sec %%CP  /sec %%CP  /sec %%CP  /sec ");
       fprintf(m_fp, "%%CP  /sec %%CP\n");
     }
     char size_buf[1024];
     print_size(size_buf, file_size, "MG");
     char *tmp = size_buf + strlen(size_buf);
-    if(io_chunk_size != DefaultChunkSize)
+    if(m_type == txt)
     {
       strcat(tmp, separator);
-      tmp += strlen(tmp);
-      print_size(tmp, io_chunk_size, " km");
+      tmp++;
+      if(io_chunk_size != DefaultChunkSize)
+      {
+        print_size(tmp, io_chunk_size, " km");
+        tmp += strlen(tmp);
+      }
+      strcat(tmp, separator);
+      tmp++;
+      if(m_concurrency != 1)
+      {
+        sprintf(tmp, "%d", m_concurrency);
+        tmp += strlen(tmp);
+      }
+      strcat(tmp, separator);
+      tmp++;
+      if(Seeks != DefaultSeeks)
+      {
+        sprintf(tmp, "%d", Seeks);
+        tmp += strlen(tmp);
+      }
+      strcat(tmp, separator);
+      tmp++;
+      if(SeekProcCount != DefaultSeekProcCount)
+      {
+        sprintf(tmp, "%d", SeekProcCount);
+        tmp += strlen(tmp) - 1;
+      }
+      tmp--;
+      while(*tmp == separator[0] && tmp > size_buf)
+      {
+        *tmp = 0;
+        tmp--;
+      }
     }
-    else if(m_type == csv)
+    else
     {
       strcat(tmp, separator);
       tmp += strlen(tmp);
@@ -264,16 +316,25 @@
       // set cur to point to a byte past where we end the machine name
       // size of the buf - size of the new data - 1 for the space - 1 for the
       // terminating zero on the string
-      char *cur = &buf[txt_machine_size - strlen(size_buf) - 2];
-      *cur = ' '; // make cur a space
-      cur++; // increment to where we store the size
+      char *cur;
+      int offset = txt_machine_size - strlen(size_buf) - 2;
+      if(offset < 0)
+      {
+        cur = buf;
+      }
+      else
+      {
+        cur = &buf[offset];
+        *cur = ' '; // make cur a space
+        cur++; // increment to where we store the size
+      }
       strcpy(cur, size_buf);  // copy the size in
       fputs(buf, m_fp);
     }
     else
     {
-      printf(CSV_VERSION "," BON_VERSION ",%s,%d,%s,%s", m_name
-           , m_concurrency, random_source.getSeed().c_str(), size_buf);
+      printf(CSV_VERSION "," BON_VERSION ",%s,%d,%s,%s,%d,%d", m_name
+           , m_concurrency, random_source.getSeed().c_str(), size_buf, Seeks, 
SeekProcCount);
     }
     for(i = ByteWrite; i < Lseek; i++)
     {
@@ -293,7 +354,7 @@
   }
   else if(m_type == csv)
   {
-    fprintf(m_fp, CSV_VERSION "," BON_VERSION ",%s,%d,%s,,,,,,,,,,,,,,", m_name
+    fprintf(m_fp, CSV_VERSION "," BON_VERSION ",%s,%d,%s,,,,,,,,,,,,,,,,", 
m_name
           , m_concurrency, random_source.getSeed().c_str());
   }
   return 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/bon_time.h new/bonnie++-1.98/bon_time.h
--- old/bonnie++-1.97.3/bon_time.h      2008-12-23 23:30:27.000000000 +0100
+++ new/bonnie++-1.98/bon_time.h        2018-09-13 15:07:36.000000000 +0200
@@ -33,7 +33,7 @@
   void stop_and_record(tests_t test);
   void add_delta_report(report_s &rep, tests_t test);
   int DoReportIO(int file_size, int char_file_size
-               , int io_chunk_size, FILE *fp);
+               , int io_chunk_size, int Seeks, int SeekProcCount, FILE *fp);
   int DoReportFile(int directory_size
                  , int max_size, int min_size, int num_directories
                  , int file_chunk_size, FILE *fp);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/bonnie++.8 new/bonnie++-1.98/bonnie++.8
--- old/bonnie++-1.97.3/bonnie++.8      2016-12-13 03:37:51.000000000 +0100
+++ new/bonnie++-1.98/bonnie++.8        2018-09-13 15:07:36.000000000 +0200
@@ -4,7 +4,7 @@
 
 .SH "SYNOPSIS"
 .B bonnie++
-.I [\-d dir] [\-c concurrency] [\-s size(MiB)[:chunk\-size(b)]]
+.I [\-d dir] [\-c concurrency] [\-s 
size(MiB)[:chunk\-size(b)[:seeks[:seekers]]]]
 .I [\-n 
number\-to\-stat(*1024)[:max\-size[:min\-size][:num\-directories[:chunk\-size]]]]
 .I [\-m machine\-name] [\-r ram\-size\-in\-MiB] [\-x number\-of\-tests]
 .I [\-u uid\-to\-use:gid\-to\-use] [\-g gid\-to\-use]
@@ -53,7 +53,9 @@
 seperated from the size by a colon.  The chunk\-size is measured in bytes and
 must be a power of two from 256 to 1048576, the default is 8192.  NB You can
 specify the size in giga\-bytes or the chunk\-size in kilo\-bytes if you add
-\f3g\f1 or \f3k\f1 to the end of the number respectively.
+\f3g\f1 or \f3k\f1 to the end of the number respectively.  This parameter may
+also include the number of seeks (default 8192) and the number of seeker
+processes (default 5).
 
 If the specified size is 0 then this test will be skipped.
 .TP
@@ -198,6 +200,9 @@
 .B bon_csv2txt
 to convert CSV data to HTML and plain\-ascii respectively.
 .P
+The "Name:Size etc" field has the name, filesize, IO chunk size, concurrency,
+number of seeks, and number of seek processes separated by : characters.
+.P
 For every test two numbers are reported, the amount of work done (higher
 numbers are better) and the percentage of CPU time taken to perform the work
 (lower numbers are better). If a test completes in less than 500ms then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/bonnie++.cpp new/bonnie++-1.98/bonnie++.cpp
--- old/bonnie++-1.97.3/bonnie++.cpp    2016-12-13 03:37:51.000000000 +0100
+++ new/bonnie++-1.98/bonnie++.cpp      2018-09-16 03:13:24.000000000 +0200
@@ -67,6 +67,8 @@
   bool bufSync;
   int  io_chunk_bits;
   int  file_chunk_bits;
+  int  file_seeks;
+  int  file_seek_procs;
   int io_chunk_size() const { return m_io_chunk_size; }
   int file_chunk_size() const { return m_file_chunk_size; }
   bool *doExit;
@@ -132,6 +134,8 @@
  , bufSync(false)
  , io_chunk_bits(DefaultChunkBits)
  , file_chunk_bits(DefaultChunkBits)
+ , file_seeks(DefaultSeeks)
+ , file_seek_procs(DefaultSeekProcCount)
  , doExit(exitFlag)
  , m_io_chunk_size(DefaultChunkSize)
  , m_file_chunk_size(DefaultChunkSize)
@@ -299,11 +303,21 @@
 #else
         file_size = size_from_str(size, "g");
 #endif
-        size = strtok(NULL, "");
-        if(size)
+        char * chunk_size = strtok(NULL, ":");
+        if(chunk_size)
         {
-          int tmp = size_from_str(size, "k");
-          globals.set_io_chunk_size(tmp);
+          char *seeks, *seek_procs;
+          seeks = strtok(NULL, ":");
+          globals.set_io_chunk_size(size_from_str(chunk_size, "k"));
+          if(seeks)
+          {
+            seek_procs = strtok(NULL, "");
+            globals.file_seeks = size_from_str(seeks, "k");
+            if(seek_procs)
+            {
+              globals.file_seek_procs = size_from_str(seek_procs, NULL);
+            }
+          }
         }
         setSize = true;
         free(sbuf);
@@ -503,7 +517,7 @@
     {
       globals.timer.SetType(BonTimer::txt);
       rc = globals.timer.DoReportIO(file_size, globals.byte_io_size
-                    , globals.io_chunk_size(), globals.quiet ? stderr : 
stdout);
+                    , globals.io_chunk_size(), globals.file_seeks, 
globals.file_seek_procs, globals.quiet ? stderr : stdout);
       rc |= globals.timer.DoReportFile(directory_size
                     , directory_max_size, directory_min_size, num_directories
                     , globals.file_chunk_size()
@@ -512,7 +526,7 @@
     // print a csv version in every case
     globals.timer.SetType(BonTimer::csv);
     rc = globals.timer.DoReportIO(file_size, globals.byte_io_size
-                   , globals.io_chunk_size(), stdout);
+                   , globals.io_chunk_size(), globals.file_seeks, 
globals.file_seek_procs, stdout);
     rc |= globals.timer.DoReportFile(directory_size
                     , directory_max_size, directory_min_size, num_directories
                     , globals.file_chunk_size(), stdout);
@@ -690,7 +704,7 @@
     if(!globals.quiet) fprintf(stderr, "done\n");
 
     globals.timer.start();
-    if(file.seek_test(globals.timer.random_source, globals.quiet, 
*globals.syn))
+    if(file.seek_test(globals.timer.random_source, globals.quiet, 
globals.file_seeks, globals.file_seek_procs, *globals.syn))
       return 1;
 
     /*
@@ -727,7 +741,7 @@
   // then the storage of file names will take more than half RAM and there
   // won't be enough RAM to have Bonnie++ paged in and to have a reasonable
   // meta-data cache.
-  if(globals.ram && directory_size * MaxDataPerFile * 2 > int((globals.ram << 
10)))
+  if(globals.ram && directory_size * MaxDataPerFile * 2 > (unsigned 
int)((globals.ram << 10)))
   {
     fprintf(stderr
         , "When testing %dK of files in %d MiB of RAM the system is likely 
to\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/bonnie++.spec new/bonnie++-1.98/bonnie++.spec
--- old/bonnie++-1.97.3/bonnie++.spec   2016-12-13 03:37:51.000000000 +0100
+++ new/bonnie++-1.98/bonnie++.spec     2018-12-26 05:14:28.000000000 +0100
@@ -1,6 +1,6 @@
 Summary: A program for benchmarking hard drives and filesystems
 Name: bonnie++
-Version: 1.97
+Version: 1.98
 Release: 1
 Copyright: GPL
 Group: Utilities/Benchmarking
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/bonnie.h new/bonnie++-1.98/bonnie.h
--- old/bonnie++-1.97.3/bonnie.h        2016-12-13 03:37:51.000000000 +0100
+++ new/bonnie++-1.98/bonnie.h  2018-12-26 05:14:28.000000000 +0100
@@ -3,8 +3,8 @@
 
 using namespace std;
 
-#define BON_VERSION "1.97"
-#define CSV_VERSION "1.97"
+#define BON_VERSION "1.98"
+#define CSV_VERSION "1.98"
 
 #include "port.h"
 #include <stdio.h>
@@ -23,9 +23,9 @@
 // the name and pointer to file name
 #define MaxDataPerFile (MaxNameLen + 6 + 1 + sizeof(void *))
 #define MinTime (0.5)
-#define Seeks (8192)
+#define DefaultSeeks (8192)
 #define UpdateSeek (10)
-#define SeekProcCount (5)
+#define DefaultSeekProcCount (5)
 #define DefaultChunkBits (13)
 #define DefaultChunkSize (1 << DefaultChunkBits)
 #define UnitBits (20)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/bonnie.h.in new/bonnie++-1.98/bonnie.h.in
--- old/bonnie++-1.97.3/bonnie.h.in     2009-07-03 05:39:33.000000000 +0200
+++ new/bonnie++-1.98/bonnie.h.in       2018-09-13 15:07:36.000000000 +0200
@@ -23,9 +23,9 @@
 // the name and pointer to file name
 #define MaxDataPerFile (MaxNameLen + 6 + 1 + sizeof(void *))
 #define MinTime (0.5)
-#define Seeks (8192)
+#define DefaultSeeks (8192)
 #define UpdateSeek (10)
-#define SeekProcCount (5)
+#define DefaultSeekProcCount (5)
 #define DefaultChunkBits (13)
 #define DefaultChunkSize (1 << DefaultChunkBits)
 #define UnitBits (20)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/configure.in new/bonnie++-1.98/configure.in
--- old/bonnie++-1.97.3/configure.in    2011-01-18 22:35:28.000000000 +0100
+++ new/bonnie++-1.98/configure.in      2018-09-13 15:07:36.000000000 +0200
@@ -2,9 +2,9 @@
 AC_INIT(bonnie++.cpp)
 AC_CONFIG_HEADER(conf.h)
 AC_SUBST(version)
-version="1.97"
+version="1.98"
 AC_SUBST(csv_version)
-csv_version="1.97"
+csv_version="1.98"
 
 AC_ARG_ENABLE(stripping,
       [  --disable-stripping  disables stripping of installed binaries],
@@ -22,7 +22,7 @@
 
 AC_SUBST(debug)
 AC_ARG_ENABLE(debug,
-      [  --with-debug  enables debug code generation for binaries],
+      [  --enable-debug  enables debug code generation for binaries],
       debug=-g, debug="")
 echo $DEB_BUILD_OPTIONS | grep -q debug
 if [[ "$?" = "0" ]]; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/debian/changelog new/bonnie++-1.98/debian/changelog
--- old/bonnie++-1.97.3/debian/changelog        2016-12-13 03:37:51.000000000 
+0100
+++ new/bonnie++-1.98/debian/changelog  2018-12-26 05:14:28.000000000 +0100
@@ -1,3 +1,19 @@
+bonnie++ (1.98) unstable; urgency=medium
+
+  * Fixed macros in bon_csv2html.cpp that had lower case due to excessive
+    matching on a regex.
+  * Changed debian/compat to level 10
+  * Allow specifying the number of random seeks and the number of seeker
+    processes and store that in the CSV.
+  * Changed bon_csv2html and bon_csv2txt to take the new CSV format.
+  * Changed the text output to use KiB/MiB/GiB as units of measurement so we
+    can fit NVMe results on screen.
+  * Changed the HTML to be in MiB/s for the bulk IO tests.
+  * Changed the default size for getc_putc to work with faster CPUs and more
+    optimised libc.
+
+ -- Russell Coker <[email protected]>  Wed, 26 Dec 2018 15:14:28 +1100
+
 bonnie++ (1.97.3) unstable; urgency=medium
 
   * In bonnie++.8 documented -c option. Closes: #639452 #631484
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/debian/compat new/bonnie++-1.98/debian/compat
--- old/bonnie++-1.97.3/debian/compat   2016-06-30 11:21:46.000000000 +0200
+++ new/bonnie++-1.98/debian/compat     2017-09-09 11:46:19.000000000 +0200
@@ -1 +1 @@
-9
+10
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/debian/control new/bonnie++-1.98/debian/control
--- old/bonnie++-1.97.3/debian/control  2016-06-30 11:28:22.000000000 +0200
+++ new/bonnie++-1.98/debian/control    2017-09-09 11:46:50.000000000 +0200
@@ -3,7 +3,7 @@
 Priority: optional
 Maintainer: Russell Coker <[email protected]>
 Standards-Version: 3.5.6
-Build-Depends: debhelper (>= 9)
+Build-Depends: debhelper (>= 10)
 XS-Testsuite: autopkgtest
 
 Package: bonnie++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/getc_putc.8 new/bonnie++-1.98/getc_putc.8
--- old/bonnie++-1.97.3/getc_putc.8     2008-07-23 03:02:40.000000000 +0200
+++ new/bonnie++-1.98/getc_putc.8       2018-09-15 09:00:31.000000000 +0200
@@ -35,9 +35,9 @@
 the size of the file for byte IO performance measured in kilobytes.  NB You can
 specify the size in mega\-bytes if you add 'm' to the end of the number.
 
-The default for this test is to test with a 40MiB file.  Of the file only 1/32
+The default for this test is to test with a 512MiB file.  Of the file only 1/64
 of it will be used for write() and read() system calls (anything else takes
-too long), and only 1/4 of it will be used for locked getc() and putc().
+too long).
 
 .TP
 .B \-m
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/getc_putc.cpp new/bonnie++-1.98/getc_putc.cpp
--- old/bonnie++-1.97.3/getc_putc.cpp   2009-07-03 04:26:02.000000000 +0200
+++ new/bonnie++-1.98/getc_putc.cpp     2018-09-15 09:00:31.000000000 +0200
@@ -34,12 +34,11 @@
 static void print_stat(FILE *fp, double elapsed, int test_size, bool csv);
 static void print_all_res(CPCCHAR machine, FILE *fp, double *res, int size, 
bool csv);
 
-#define WRITE_SIZE_FACT 32
-#define GETC_SIZE_FACT 4
+#define WRITE_SIZE_FACT 64
 
 int main(int argc, char *argv[])
 {
-  int file_size = 40 << 10;
+  int file_size = 512 << 10;
   PCCHAR dir = ".";
   bool quiet = false;
   char *userName = NULL, *groupName = NULL;
@@ -199,7 +198,7 @@
     return 1;
   }
   fflush(NULL);
-  size = file_size / GETC_SIZE_FACT;
+  size = file_size;
   TEST_FUNC_WRITE("putc(c, fp)", if(putc(c, fp) == EOF), res[Putc]);
   if(fseek(fp, 0, SEEK_SET) != 0)
   {
@@ -250,8 +249,8 @@
   print_stat(fp, res[Read], size / WRITE_SIZE_FACT, csv);
   print_stat(fp, res[PutcNoTh], size, csv);
   print_stat(fp, res[GetcNoTh], size, csv);
-  print_stat(fp, res[Putc], size / GETC_SIZE_FACT, csv);
-  print_stat(fp, res[Getc], size / GETC_SIZE_FACT, csv);
+  print_stat(fp, res[Putc], size, csv);
+  print_stat(fp, res[Getc], size, csv);
   print_stat(fp, res[PutcUnlocked], size, csv);
   print_stat(fp, res[GetcUnlocked], size, csv);
   fprintf(fp, "\n");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/bonnie++-1.97.3/sun/pkginfo new/bonnie++-1.98/sun/pkginfo
--- old/bonnie++-1.97.3/sun/pkginfo     2016-12-13 03:37:51.000000000 +0100
+++ new/bonnie++-1.98/sun/pkginfo       2018-12-26 05:14:28.000000000 +0100
@@ -1,6 +1,6 @@
 PKG=bonnie++
 ARCH=sparc
-VERSION=1.97
+VERSION=1.98
 CATEGORY=application
 NAME=Bonnie++
 DESC=Hard drive benchmark suite


Reply via email to