Hello community,

here is the log from the commit of package fio for openSUSE:Factory checked in 
at 2016-05-29 03:13:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fio (Old)
 and      /work/SRC/openSUSE:Factory/.fio.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "fio"

Changes:
--------
--- /work/SRC/openSUSE:Factory/fio/fio.changes  2016-05-23 16:40:01.000000000 
+0200
+++ /work/SRC/openSUSE:Factory/.fio.new/fio.changes     2016-05-29 
03:14:33.000000000 +0200
@@ -1,0 +2,6 @@
+Fri May 27 14:30:15 UTC 2016 - mplus...@suse.com
+
+- Update to version 2.11:
+  * No changelog available
+
+-------------------------------------------------------------------

Old:
----
  fio-2.10.tar.bz2

New:
----
  fio-2.11.tar.bz2

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

Other differences:
------------------
++++++ fio.spec ++++++
--- /var/tmp/diff_new_pack.MGeMjc/_old  2016-05-29 03:14:34.000000000 +0200
+++ /var/tmp/diff_new_pack.MGeMjc/_new  2016-05-29 03:14:34.000000000 +0200
@@ -18,7 +18,7 @@
 
 
 Name:           fio
-Version:        2.10
+Version:        2.11
 Release:        0
 Summary:        Flexible I/O Tester/benchmarker
 License:        GPL-2.0

++++++ fio-2.10.tar.bz2 -> fio-2.11.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fio-2.10/FIO-VERSION-GEN new/fio-2.11/FIO-VERSION-GEN
--- old/fio-2.10/FIO-VERSION-GEN        2016-05-21 17:00:54.000000000 +0200
+++ new/fio-2.11/FIO-VERSION-GEN        2016-05-25 02:42:04.000000000 +0200
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 GVF=FIO-VERSION-FILE
-DEF_VER=fio-2.10
+DEF_VER=fio-2.11
 
 LF='
 '
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fio-2.10/HOWTO new/fio-2.11/HOWTO
--- old/fio-2.10/HOWTO  2016-05-21 17:00:54.000000000 +0200
+++ new/fio-2.11/HOWTO  2016-05-25 02:42:04.000000000 +0200
@@ -374,6 +374,11 @@
                default of $jobname.$jobnum.$filenum will be used if
                no other format specifier is given.
 
+unique_filename=bool   To avoid collisions between networked clients, fio
+               defaults to prefixing any generated filenames (with a directory
+               specified) with the source of the client connecting. To disable
+               this behavior, set this option to 0.
+
 opendir=str    Tell fio to recursively add any file it can find in this
                directory and down the file system tree.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fio-2.10/backend.c new/fio-2.11/backend.c
--- old/fio-2.10/backend.c      2016-05-21 17:00:54.000000000 +0200
+++ new/fio-2.11/backend.c      2016-05-25 02:42:04.000000000 +0200
@@ -524,6 +524,9 @@
                                break;
                }
 
+               if (td->flags & TD_F_REGROW_LOGS)
+                       regrow_logs(td);
+
                /*
                 * when doing I/O (not when verifying),
                 * check for any errors that are to be ignored
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fio-2.10/cconv.c new/fio-2.11/cconv.c
--- old/fio-2.10/cconv.c        2016-05-21 17:00:54.000000000 +0200
+++ new/fio-2.11/cconv.c        2016-05-25 02:42:04.000000000 +0200
@@ -139,6 +139,7 @@
 
        o->ratecycle = le32_to_cpu(top->ratecycle);
        o->io_submit_mode = le32_to_cpu(top->io_submit_mode);
+       o->unique_filename = le32_to_cpu(top->unique_filename);
        o->nr_files = le32_to_cpu(top->nr_files);
        o->open_files = le32_to_cpu(top->open_files);
        o->file_lock_mode = le32_to_cpu(top->file_lock_mode);
@@ -333,6 +334,7 @@
        top->ratecycle = cpu_to_le32(o->ratecycle);
        top->io_submit_mode = cpu_to_le32(o->io_submit_mode);
        top->nr_files = cpu_to_le32(o->nr_files);
+       top->unique_filename = cpu_to_le32(o->unique_filename);
        top->open_files = cpu_to_le32(o->open_files);
        top->file_lock_mode = cpu_to_le32(o->file_lock_mode);
        top->odirect = cpu_to_le32(o->odirect);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fio-2.10/filesetup.c new/fio-2.11/filesetup.c
--- old/fio-2.10/filesetup.c    2016-05-21 17:00:54.000000000 +0200
+++ new/fio-2.11/filesetup.c    2016-05-25 02:42:04.000000000 +0200
@@ -1335,7 +1335,8 @@
        dprint(FD_FILE, "add file %s\n", fname);
 
        if (td->o.directory)
-               len = set_name_idx(file_name, PATH_MAX, td->o.directory, 
numjob);
+               len = set_name_idx(file_name, PATH_MAX, td->o.directory, numjob,
+                                       td->o.unique_filename);
 
        sprintf(file_name + len, "%s", fname);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fio-2.10/fio.1 new/fio-2.11/fio.1
--- old/fio-2.10/fio.1  2016-05-21 17:00:54.000000000 +0200
+++ new/fio-2.11/fio.1  2016-05-25 02:42:04.000000000 +0200
@@ -247,6 +247,11 @@
 .RE
 .P
 .TP
+.BI unique_filename \fR=\fPbool
+To avoid collisions between networked clients, fio defaults to prefixing
+any generated filenames (with a directory specified) with the source of
+the client connecting. To disable this behavior, set this option to 0.
+.TP
 .BI lockfile \fR=\fPstr
 Fio defaults to not locking any files before it does IO to them. If a file or
 file descriptor is shared, fio can serialize IO to that file to make the end
@@ -2082,7 +2087,7 @@
 .B Trace file format v2
 .RS
 The second version of the trace file format was added in Fio version 1.17.
-It allows to access more then one file per trace and has a bigger set of
+It allows one to access more then one file per trace and has a bigger set of
 possible file actions.
 
 The first line of the trace file has to be:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fio-2.10/gettime-thread.c 
new/fio-2.11/gettime-thread.c
--- old/fio-2.10/gettime-thread.c       2016-05-21 17:00:54.000000000 +0200
+++ new/fio-2.11/gettime-thread.c       2016-05-25 02:42:04.000000000 +0200
@@ -81,7 +81,7 @@
 
        ret = pthread_detach(gtod_thread);
        if (ret) {
-               log_err("Can't detatch gtod thread: %s\n", strerror(ret));
+               log_err("Can't detach gtod thread: %s\n", strerror(ret));
                goto err;
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fio-2.10/idletime.c new/fio-2.11/idletime.c
--- old/fio-2.10/idletime.c     2016-05-21 17:00:54.000000000 +0200
+++ new/fio-2.11/idletime.c     2016-05-25 02:42:04.000000000 +0200
@@ -260,7 +260,7 @@
 
                if ((ret = pthread_detach(ipt->thread))) {
                        /* log error and let the thread spin */
-                       log_err("fio: pthread_detatch %s\n", strerror(ret));
+                       log_err("fio: pthread_detach %s\n", strerror(ret));
                }
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fio-2.10/memory.c new/fio-2.11/memory.c
--- old/fio-2.10/memory.c       2016-05-21 17:00:54.000000000 +0200
+++ new/fio-2.11/memory.c       2016-05-25 02:42:04.000000000 +0200
@@ -89,7 +89,7 @@
                                        " support huge pages.\n");
                        } else if (errno == ENOMEM) {
                                log_err("fio: no huge pages available, do you"
-                                       " need to alocate some? See HOWTO.\n");
+                                       " need to allocate some? See HOWTO.\n");
                        }
                }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fio-2.10/options.c new/fio-2.11/options.c
--- old/fio-2.10/options.c      2016-05-21 17:00:54.000000000 +0200
+++ new/fio-2.11/options.c      2016-05-25 02:42:04.000000000 +0200
@@ -1124,7 +1124,8 @@
  * Returns the directory at the index, indexes > entires will be
  * assigned via modulo division of the index
  */
-int set_name_idx(char *target, size_t tlen, char *input, int index)
+int set_name_idx(char *target, size_t tlen, char *input, int index,
+                bool unique_filename)
 {
        unsigned int cur_idx;
        int len;
@@ -1136,7 +1137,7 @@
        for (cur_idx = 0; cur_idx <= index; cur_idx++)
                fname = get_next_name(&str);
 
-       if (client_sockaddr_str[0]) {
+       if (client_sockaddr_str[0] && unique_filename) {
                len = snprintf(target, tlen, "%s/%s.", fname,
                                client_sockaddr_str);
        } else
@@ -1390,6 +1391,7 @@
        },
        {
                .name   = "filename_format",
+               .lname  = "Filename Format",
                .type   = FIO_OPT_STR_STORE,
                .off1   = td_var_offset(filename_format),
                .prio   = -1, /* must come after "directory" */
@@ -1399,6 +1401,16 @@
                .group  = FIO_OPT_G_FILENAME,
        },
        {
+               .name   = "unique_filename",
+               .lname  = "Unique Filename",
+               .type   = FIO_OPT_BOOL,
+               .off1   = td_var_offset(unique_filename),
+               .help   = "For network clients, prefix file with source IP",
+               .def    = "1",
+               .category = FIO_OPT_C_FILE,
+               .group  = FIO_OPT_G_FILENAME,
+       },
+       {
                .name   = "lockfile",
                .lname  = "Lockfile",
                .type   = FIO_OPT_STR,
@@ -1965,6 +1977,7 @@
        },
        {
                .name   = "random_generator",
+               .lname  = "Random Generator",
                .type   = FIO_OPT_STR,
                .off1   = td_var_offset(random_generator),
                .help   = "Type of random number generator to use",
@@ -1989,6 +2002,7 @@
        },
        {
                .name   = "random_distribution",
+               .lname  = "Random Distribution",
                .type   = FIO_OPT_STR,
                .off1   = td_var_offset(random_distribution),
                .cb     = str_random_distribution_cb,
@@ -2009,7 +2023,7 @@
                          },
                          { .ival = "normal",
                            .oval = FIO_RAND_DIST_GAUSS,
-                           .help = "Normal (gaussian) distribution",
+                           .help = "Normal (Gaussian) distribution",
                          },
                          { .ival = "zoned",
                            .oval = FIO_RAND_DIST_ZONED,
@@ -2044,6 +2058,7 @@
        },
        {
                .name   = "allrandrepeat",
+               .lname  = "All Random Repeat",
                .type   = FIO_OPT_BOOL,
                .off1   = td_var_offset(allrand_repeatable),
                .help   = "Use repeatable random numbers for everything",
@@ -2543,6 +2558,7 @@
        },
        {
                .name   = "verifysort_nr",
+               .lname  = "Verify Sort Nr",
                .type   = FIO_OPT_INT,
                .off1   = td_var_offset(verifysort_nr),
                .help   = "Pre-load and sort verify blocks for a read workload",
@@ -2664,6 +2680,7 @@
 #endif
        {
                .name   = "experimental_verify",
+               .lname  = "Experimental Verify",
                .off1   = td_var_offset(experimental_verify),
                .type   = FIO_OPT_BOOL,
                .help   = "Enable experimental verification",
@@ -3078,6 +3095,7 @@
        },
        {
                .name   = "max_latency",
+               .lname  = "Max Latency",
                .type   = FIO_OPT_INT,
                .off1   = td_var_offset(max_latency),
                .help   = "Maximum tolerated IO latency (usec)",
@@ -3172,6 +3190,7 @@
        },
        {
                .name   = "create_only",
+               .lname  = "Create Only",
                .type   = FIO_OPT_BOOL,
                .off1   = td_var_offset(create_only),
                .help   = "Only perform file creation phase",
@@ -3254,6 +3273,7 @@
 #ifdef CONFIG_LIBNUMA
        {
                .name   = "numa_cpu_nodes",
+               .lname  = "NUMA CPU Nodes",
                .type   = FIO_OPT_STR,
                .cb     = str_numa_cpunodes_cb,
                .off1   = td_var_offset(numa_cpunodes),
@@ -3263,6 +3283,7 @@
        },
        {
                .name   = "numa_mem_policy",
+               .lname  = "NUMA Memory Policy",
                .type   = FIO_OPT_STR,
                .cb     = str_numa_mpol_cb,
                .off1   = td_var_offset(numa_memnodes),
@@ -3353,6 +3374,7 @@
        },
        {
                .name   = "per_job_logs",
+               .lname  = "Per Job Logs",
                .type   = FIO_OPT_BOOL,
                .off1   = td_var_offset(per_job_logs),
                .help   = "Include job number in generated log files or not",
@@ -3683,6 +3705,7 @@
        },
        {
                .name   = "unified_rw_reporting",
+               .lname  = "Unified RW Reporting",
                .type   = FIO_OPT_BOOL,
                .off1   = td_var_offset(unified_rw_rep),
                .help   = "Unify reporting across data direction",
@@ -3736,6 +3759,7 @@
        },
        {
                .name   = "ignore_error",
+               .lname  = "Ignore Error",
                .type   = FIO_OPT_STR,
                .cb     = str_ignore_error_cb,
                .off1   = td_var_offset(ignore_error_nr),
@@ -3746,6 +3770,7 @@
        },
        {
                .name   = "error_dump",
+               .lname  = "Error Dump",
                .type   = FIO_OPT_BOOL,
                .off1   = td_var_offset(error_dump),
                .def    = "0",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fio-2.10/options.h new/fio-2.11/options.h
--- old/fio-2.10/options.h      2016-05-21 17:00:54.000000000 +0200
+++ new/fio-2.11/options.h      2016-05-25 02:42:04.000000000 +0200
@@ -20,7 +20,7 @@
 struct thread_data;
 void fio_options_free(struct thread_data *);
 char *get_name_idx(char *, int);
-int set_name_idx(char *, size_t, char *, int);
+int set_name_idx(char *, size_t, char *, int, bool);
 
 extern char client_sockaddr_str[];  /* used with --client option */
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fio-2.10/os/windows/install.wxs 
new/fio-2.11/os/windows/install.wxs
--- old/fio-2.10/os/windows/install.wxs 2016-05-21 17:00:54.000000000 +0200
+++ new/fio-2.11/os/windows/install.wxs 2016-05-25 02:42:04.000000000 +0200
@@ -10,7 +10,7 @@
        <Product Id="*"
          Codepage="1252" Language="1033"
          Manufacturer="fio" Name="fio"
-         UpgradeCode="2338A332-5511-43CF-B9BD-5C60496CCFCC" Version="2.10">
+         UpgradeCode="2338A332-5511-43CF-B9BD-5C60496CCFCC" Version="2.11">
                <Package
                  Description="Flexible IO Tester"
                  InstallerVersion="301" Keywords="Installer,MSI,Database"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fio-2.10/parse.c new/fio-2.11/parse.c
--- old/fio-2.10/parse.c        2016-05-21 17:00:54.000000000 +0200
+++ new/fio-2.11/parse.c        2016-05-25 02:42:04.000000000 +0200
@@ -1234,6 +1234,8 @@
 {
        if (o->type == FIO_OPT_DEPRECATED)
                return;
+       if (o->name && !o->lname)
+               log_err("Option %s: missing long option name\n", o->name);
        if (o->type == FIO_OPT_BOOL) {
                o->minval = 0;
                o->maxval = 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fio-2.10/server.h new/fio-2.11/server.h
--- old/fio-2.10/server.h       2016-05-21 17:00:54.000000000 +0200
+++ new/fio-2.11/server.h       2016-05-25 02:42:04.000000000 +0200
@@ -38,7 +38,7 @@
 };
 
 enum {
-       FIO_SERVER_VER                  = 53,
+       FIO_SERVER_VER                  = 54,
 
        FIO_SERVER_MAX_FRAGMENT_PDU     = 1024,
        FIO_SERVER_MAX_CMD_MB           = 2048,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fio-2.10/thread_options.h 
new/fio-2.11/thread_options.h
--- old/fio-2.10/thread_options.h       2016-05-21 17:00:54.000000000 +0200
+++ new/fio-2.11/thread_options.h       2016-05-25 02:42:04.000000000 +0200
@@ -65,6 +65,8 @@
        unsigned int iodepth_batch_complete_min;
        unsigned int iodepth_batch_complete_max;
 
+       unsigned int unique_filename;
+
        unsigned long long size;
        unsigned long long io_limit;
        unsigned int size_percent;
@@ -325,6 +327,7 @@
        uint32_t size_percent;
        uint32_t fill_device;
        uint32_t file_append;
+       uint32_t unique_filename;
        uint64_t file_size_low;
        uint64_t file_size_high;
        uint64_t start_offset;
@@ -388,6 +391,7 @@
        uint32_t bs_unaligned;
        uint32_t fsync_on_close;
        uint32_t bs_is_seq_rand;
+       uint32_t pad1;
 
        uint32_t random_distribution;
        uint32_t exitall_error;
@@ -411,7 +415,6 @@
        uint32_t fsync_blocks;
        uint32_t fdatasync_blocks;
        uint32_t barrier_blocks;
-       uint32_t pad1;
        uint64_t start_delay;
        uint64_t start_delay_high;
        uint64_t timeout;
@@ -476,7 +479,6 @@
        uint64_t trim_backlog;
        uint32_t clat_percentiles;
        uint32_t percentile_precision;
-       uint32_t pad2;
        fio_fp64_t percentile_list[FIO_IO_U_LIST_MAX_LEN];
 
        uint8_t read_iolog_file[FIO_TOP_STR_MAX];
@@ -531,7 +533,7 @@
        uint64_t number_ios;
 
        uint32_t sync_file_range;
-       uint32_t pad3;
+       uint32_t pad2;
 
        uint64_t latency_target;
        uint64_t latency_window;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fio-2.10/tools/fiologparser.py 
new/fio-2.11/tools/fiologparser.py
--- old/fio-2.10/tools/fiologparser.py  2016-05-21 17:00:54.000000000 +0200
+++ new/fio-2.11/tools/fiologparser.py  2016-05-25 02:42:04.000000000 +0200
@@ -14,8 +14,7 @@
 # to see per-interval average completion latency.
 
 import argparse
-import numpy
-import scipy
+import math
 
 def parse_args():
     parser = argparse.ArgumentParser()
@@ -82,7 +81,6 @@
 # to debug this routine, use
 #   # sort -n -t ',' -k 2 small.log
 # on your input.
-# Sometimes scipy interpolates between two values to get a percentile
 
 def my_extend( vlist, val ):
     vlist.extend(val)
@@ -102,21 +100,16 @@
         for sample_array in sample_arrays:
             samplevalue_arrays.append( 
                 [ sample.value for sample in sample_array ] )
-        #print('samplevalue_arrays len: %d' % len(samplevalue_arrays))
-        #print('samplevalue_arrays elements len: ' + \
-               #str(map( lambda l: len(l), samplevalue_arrays)))
         # collapse list of lists of sample values into list of sample values
         samplevalues = reduce( array_collapser, samplevalue_arrays, [] )
-        #print('samplevalues: ' + str(sorted(samplevalues)))
         # compute all stats and print them
-        myarray = scipy.fromiter(samplevalues, float)
-        mymin = scipy.amin(myarray)
-        myavg = scipy.average(myarray)
-        mymedian = scipy.median(myarray)
-        my90th = scipy.percentile(myarray, 90)
-        my95th = scipy.percentile(myarray, 95)
-        my99th = scipy.percentile(myarray, 99)
-        mymax = scipy.amax(myarray)
+        mymin = min(samplevalues)
+        myavg = sum(samplevalues) / float(len(samplevalues))
+        mymedian = median(samplevalues)
+        my90th = percentile(samplevalues, 0.90) 
+        my95th = percentile(samplevalues, 0.95)
+        my99th = percentile(samplevalues, 0.99)
+        mymax = max(samplevalues)
         print( '%f, %d, %f, %f, %f, %f, %f, %f, %f' % (
             start, len(samplevalues), 
             mymin, myavg, mymedian, my90th, my95th, my99th, mymax))
@@ -125,6 +118,18 @@
         start += ctx.interval
         end += ctx.interval
 
+def median(values):
+    s=sorted(values)
+    return float(s[(len(s)-1)/2]+s[(len(s)/2)])/2
+
+def percentile(values, p):
+    s = sorted(values)
+    k = (len(s)-1) * p
+    f = math.floor(k)
+    c = math.ceil(k)
+    if f == c:
+        return s[int(k)]
+    return (s[int(f)] * (c-k)) + (s[int(c)] * (k-f))
 
 def print_default(ctx, series):
     ftime = get_ftime(series)


Reply via email to