The following changes since commit d5e16441bd7727f3e1b90708f957d42a7e47121d:

  gettime: cleanup for FIO_DEBUG_TIME (2014-12-16 23:03:54 -0700)

are available in the git repository at:

  git://git.kernel.dk/fio.git master

for you to fetch changes up to 1d31d1bcffe0b282aaadca12dc83d2dd671b84f2:

  parse: remove the arithmetic parser checking (2014-12-17 13:27:32 -0700)

----------------------------------------------------------------
Jens Axboe (5):
      stat: always show disk util in terse v3/v4
      gettime: offset CPU cycle counter by initial value
      gettime: fix compile warning for !ARCH_HAVE_CPU_CLOCK
      Fio 2.2.0
      parse: remove the arithmetic parser checking

 FIO-VERSION-GEN        |    2 +-
 gettime.c              |   28 +++++++++++++++----------
 os/windows/install.wxs |    2 +-
 parse.c                |   53 +-----------------------------------------------
 stat.c                 |    3 +--
 5 files changed, 21 insertions(+), 67 deletions(-)

---

Diff of recent changes:

diff --git a/FIO-VERSION-GEN b/FIO-VERSION-GEN
index e2052c4..f0a0a45 100755
--- a/FIO-VERSION-GEN
+++ b/FIO-VERSION-GEN
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 GVF=FIO-VERSION-FILE
-DEF_VER=fio-2.1.14
+DEF_VER=fio-2.2.0
 
 LF='
 '
diff --git a/gettime.c b/gettime.c
index 7e3e2e5..172b478 100644
--- a/gettime.c
+++ b/gettime.c
@@ -17,6 +17,7 @@
 static unsigned long cycles_per_usec;
 static unsigned long inv_cycles_per_usec;
 static uint64_t max_cycles_for_mult;
+static unsigned long long cycles_start, cycles_wrap;
 #endif
 int tsc_reliable = 0;
 
@@ -25,11 +26,13 @@ struct tv_valid {
        int last_tv_valid;
        int warned;
 };
+#ifdef ARCH_HAVE_CPU_CLOCK
 #ifdef CONFIG_TLS_THREAD
 static __thread struct tv_valid static_tv_valid;
 #else
 static pthread_key_t tv_tls_key;
 #endif
+#endif
 
 enum fio_cs fio_clock_source = FIO_PREFERRED_CLOCK_SOURCE;
 int fio_clock_source_set = 0;
@@ -136,14 +139,6 @@ static int fill_clock_gettime(struct timespec *ts)
 
 static void __fio_gettime(struct timeval *tp)
 {
-       struct tv_valid *tv;
-
-#ifdef CONFIG_TLS_THREAD
-       tv = &static_tv_valid;
-#else
-       tv = pthread_getspecific(tv_tls_key);
-#endif
-
        switch (fio_clock_source) {
 #ifdef CONFIG_GETTIMEOFDAY
        case CS_GTOD:
@@ -167,14 +162,23 @@ static void __fio_gettime(struct timeval *tp)
 #ifdef ARCH_HAVE_CPU_CLOCK
        case CS_CPUCLOCK: {
                uint64_t usecs, t;
+               struct tv_valid *tv;
+
+#ifdef CONFIG_TLS_THREAD
+               tv = &static_tv_valid;
+#else
+               tv = pthread_getspecific(tv_tls_key);
+#endif
 
                t = get_cpu_clock();
-               if (t < tv->last_cycles && tv->last_tv_valid &&
-                   !tv->warned) {
-                       log_err("fio: CPU clock going back in time\n");
+               if (t < cycles_start && !cycles_wrap)
+                       cycles_wrap = 1;
+               else if (cycles_wrap && t >= cycles_start && !tv->warned) {
+                       log_err("fio: double CPU clock wrap\n");
                        tv->warned = 1;
                }
 
+               t -= cycles_start;
                tv->last_cycles = t;
                tv->last_tv_valid = 1;
 #ifdef ARCH_CPU_CLOCK_CYCLES_PER_USEC
@@ -299,6 +303,8 @@ static int calibrate_cpu_clock(void)
        inv_cycles_per_usec = 16777216UL / cycles_per_usec;
        max_cycles_for_mult = ~0ULL / inv_cycles_per_usec;
        dprint(FD_TIME, "inv_cycles_per_usec=%lu\n", inv_cycles_per_usec);
+       cycles_start = get_cpu_clock();
+       dprint(FD_TIME, "cycles_start=%llu\n", cycles_start);
        return 0;
 }
 #else
diff --git a/os/windows/install.wxs b/os/windows/install.wxs
index 3e15676..26be597 100755
--- a/os/windows/install.wxs
+++ b/os/windows/install.wxs
@@ -10,7 +10,7 @@
        <Product Id="*"
          Codepage="1252" Language="1033"
          Manufacturer="fio" Name="fio"
-         UpgradeCode="2338A332-5511-43CF-B9BD-5C60496CCFCC" Version="2.1.14">
+         UpgradeCode="2338A332-5511-43CF-B9BD-5C60496CCFCC" Version="2.2.0">
                <Package
                  Description="Flexible IO Tester"
                  InstallerVersion="301" Keywords="Installer,MSI,Database"
diff --git a/parse.c b/parse.c
index ae87b1e..e70ed20 100644
--- a/parse.c
+++ b/parse.c
@@ -272,53 +272,6 @@ extern int evaluate_arithmetic_expression(const char 
*buffer, long long *ival,
                                          double *dval, double implied_units,
                                          int is_time);
 
-#ifdef CONFIG_ARITHMETIC
-/*
- * These two verification functions are just to gain confidence that
- * the arithmetic processing code is always getting the same answer as the
- * original number parsing code.  Once sufficiently sure that the arithmetic
- * code is always getting the right answers, these can be removed.
- */
-static void verify_exp_parser_float(const char *str, double implied_units, int 
is_time)
-{
-       long long ival;
-       double dval, tmpval;
-
-       if (sscanf(str, "%lf", &tmpval) != 1)
-               return;
-
-       if (evaluate_arithmetic_expression(str, &ival, &dval, implied_units, 
is_time) != 0) {
-               log_info("Arithmetic failed on '%s'\n", str);
-               return;
-       }
-       if (dval != tmpval) {
-               log_info("Arithmetic failed on: '%s' got %lf, expected %lf\n",
-                               str, dval, tmpval);
-       }
-}
-
-static void verify_exp_parser_decimal(const char *str, long long val, int 
kilo, int is_seconds,
-                                     int is_time)
-{
-       int rc;
-       long long ival;
-       double dval;
-       double implied_units = 1.0;
-
-       if (is_seconds)
-               implied_units = 1000000.0;
-
-       rc = evaluate_arithmetic_expression(str, &ival, &dval, implied_units, 
is_time);
-       if (!rc) {
-               if (ival != val)
-                       log_info("Arithmetic failed on '%s', expected %lld, got 
%lld\n",
-                               str, val, ival);
-       } else {
-               log_info("Arithmetic failed on '%s'\n", str);
-       }
-}
-#endif
-
 /*
  * Convert string into a floating number. Return 1 for success and 0 otherwise.
  */
@@ -335,8 +288,6 @@ int str_to_float(const char *str, double *val, int is_time)
                        *val = dval;
                        return 1;
                }
-       } else {
-               verify_exp_parser_float(str, 1.0, is_time);
        }
 #endif
        return 1 == sscanf(str, "%lf", val);
@@ -395,9 +346,7 @@ int str_to_decimal(const char *str, long long *val, int 
kilo, void *data,
                        *val *= mult;
        } else
                *val *= get_mult_time(str, len, is_seconds);
-#ifdef CONFIG_ARITHMETIC
-       verify_exp_parser_decimal(str, *val, kilo, is_seconds, is_time);
-#endif
+
        return 0;
 }
 
diff --git a/stat.c b/stat.c
index 9d816d4..bae3338 100644
--- a/stat.c
+++ b/stat.c
@@ -896,8 +896,7 @@ static void show_thread_status_terse_v3_v4(struct 
thread_stat *ts,
                log_info(";%3.2f%%", io_u_lat_m[i]);
 
        /* disk util stats, if any */
-       if (is_backend)
-               show_disk_util(1, NULL);
+       show_disk_util(1, NULL);
 
        /* Additional output if continue_on_error set - default off*/
        if (ts->continue_on_error)
--
To unsubscribe from this list: send the line "unsubscribe fio" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to