Whamcloud - gitweb
LU-9019 obd: use 64-bit timestamps for rpc stats 10/25410/4
authorJames Simmons <uja.ornl@yahoo.com>
Fri, 17 Feb 2017 15:45:58 +0000 (10:45 -0500)
committerOleg Drokin <oleg.drokin@intel.com>
Wed, 1 Mar 2017 05:10:54 +0000 (05:10 +0000)
The debugfs rpc 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: I8fca45ef62672f3880a444961cb068d8c436e2c7
Signed-off-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-on: https://review.whamcloud.com/25410
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Grégoire Pichon <gregoire.pichon@bull.net>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/obdclass/genops.c

index 54edf1d..9857a57 100644 (file)
@@ -2155,16 +2155,16 @@ EXPORT_SYMBOL(obd_set_max_mod_rpcs_in_flight);
 int obd_mod_rpc_stats_seq_show(struct client_obd *cli,
                               struct seq_file *seq)
 {
-       struct timeval now;
        unsigned long mod_tot = 0, mod_cum;
+       struct timespec64 now;
        int i;
 
-       do_gettimeofday(&now);
+       ktime_get_real_ts64(&now);
 
        spin_lock(&cli->cl_mod_rpcs_lock);
 
-       seq_printf(seq, "snapshot_time:         %lu.%lu (secs.usecs)\n",
-                  now.tv_sec, now.tv_usec);
+       seq_printf(seq, "snapshot_time:         %llu.%9lu (secs.nsecs)\n",
+                  (s64)now.tv_sec, now.tv_nsec);
        seq_printf(seq, "modify_RPCs_in_flight:  %hu\n",
                   cli->cl_mod_rpcs_in_flight);