Whamcloud - gitweb
LU-9019 zfs: use 64-bit timestamps for brw stats 11/25411/7
authorJames Simmons <uja.ornl@yahoo.com>
Wed, 1 Mar 2017 15:35:49 +0000 (10:35 -0500)
committerOleg Drokin <oleg.drokin@intel.com>
Tue, 14 Mar 2017 02:58:08 +0000 (02:58 +0000)
The debugfs brw stats interface contains timestamps that are
computed from timeval, which overflows in 2038 on 32-bit systems.

This changes the output to use a timespec64 type to avoid the
overflow. I also change the format to print the sub-second portion
as 9 digits (nanoseconds) for clarity, rather than printing six
digits without leading zeroes.

Change-Id: I34f3b02a0d5f80e9ae22a47f55445199332b3dc9
Signed-off-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-on: https://review.whamcloud.com/25411
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Nathaniel Clark <nathaniel.l.clark@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/osd-zfs/osd_lproc.c

index 459a000..e3fd0e9 100644 (file)
@@ -89,12 +89,12 @@ static void display_brw_stats(struct seq_file *seq, char *name, char *units,
 
 static void brw_stats_show(struct seq_file *seq, struct brw_stats *brw_stats)
 {
-       struct timeval now;
+       struct timespec64 now;
 
        /* this sampling races with updates */
-       do_gettimeofday(&now);
-       seq_printf(seq, "snapshot_time:         %lu.%lu (secs.usecs)\n",
-                  now.tv_sec, now.tv_usec);
+       ktime_get_real_ts64(&now);
+       seq_printf(seq, "snapshot_time:         %llu.%09lu (secs.nsecs)\n",
+                  (s64)now.tv_sec, now.tv_nsec);
 
        display_brw_stats(seq, "pages per bulk r/w", "rpcs",
                          &brw_stats->hist[BRW_R_PAGES],