Whamcloud - gitweb
LU-9019 mdt: use 64-bit timestamps for rename stats 12/25412/2
authorJames Simmons <uja.ornl@yahoo.com>
Sun, 12 Feb 2017 17:39:33 +0000 (12:39 -0500)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 23 Feb 2017 02:06:24 +0000 (02:06 +0000)
The rename 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: I3b395160d8f5c76553f20dc4ca1047ae2a3df2b6
Signed-off-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-on: https://review.whamcloud.com/25412
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: Lai Siyao <lai.siyao@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/mdt/mdt_lproc.c

index 0e3e939..7c34b80 100644 (file)
@@ -112,13 +112,13 @@ static void display_rename_stats(struct seq_file *seq, char *name,
 static void rename_stats_show(struct seq_file *seq,
                               struct rename_stats *rename_stats)
 {
-        struct timeval now;
+       struct timespec64 now;
 
-        /* this sampling races with updates */
-        do_gettimeofday(&now);
-        seq_printf(seq, "rename_stats:\n");
-        seq_printf(seq, "- %-15s %lu.%lu\n", "snapshot_time:",
-                   now.tv_sec, now.tv_usec);
+       /* this sampling races with updates */
+       ktime_get_real_ts64(&now);
+       seq_printf(seq, "rename_stats:\n");
+       seq_printf(seq, "- %-15s %llu.%9lu\n", "snapshot_time:",
+                  (s64)now.tv_sec, now.tv_nsec);
 
         display_rename_stats(seq, "same_dir",
                              &rename_stats->hist[RENAME_SAMEDIR_SIZE]);