Whamcloud - gitweb
LU-4423 ptlrpc: use 64-bit time for debugfs import state output 09/25409/5
authorArnd Bergmann <arnd@arndb.de>
Mon, 6 Mar 2017 22:57:59 +0000 (17:57 -0500)
committerOleg Drokin <oleg.drokin@intel.com>
Tue, 14 Mar 2017 02:58:54 +0000 (02:58 +0000)
This time is only printed in debugfs, and can be easily converted
to 64-bit to avoid overflowing on 32-bit systems in 2038.

Linux-commit: 74e489aa9cce1ec8f8a44ecc1651cf06b61db204

Change-Id: I7ee171367e90ef32b29bce31abddd4e17eb8daf2
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-on: https://review.whamcloud.com/25409
Tested-by: Jenkins
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/include/lustre_import.h
lustre/obdclass/lprocfs_status.c
lustre/ptlrpc/events.c
lustre/ptlrpc/import.c

index 39b3369..cccbed5 100644 (file)
@@ -148,8 +148,8 @@ struct obd_import_conn {
 /* state history */
 #define IMP_STATE_HIST_LEN 16
 struct import_state_hist {
-        enum lustre_imp_state ish_state;
-        time_t                ish_time;
+       enum lustre_imp_state   ish_state;
+       time64_t                ish_time;
 };
 
 /**
@@ -321,7 +321,7 @@ struct obd_import {
 
                                  /* adaptive timeout data */
        struct imp_at             imp_at;
-       time_t                    imp_last_reply_time;    /* for health check */
+       time64_t                  imp_last_reply_time;  /* for health check */
 };
 
 /* import.c */
index 653b18a..6d0ed9f 100644 (file)
@@ -1114,9 +1114,8 @@ int lprocfs_state_seq_show(struct seq_file *m, void *data)
                        &imp->imp_state_hist[(k + j) % IMP_STATE_HIST_LEN];
                if (ish->ish_state == 0)
                        continue;
-               seq_printf(m, " - [ "CFS_TIME_T", %s ]\n",
-                          ish->ish_time,
-               ptlrpc_import_state_name(ish->ish_state));
+               seq_printf(m, " - [ %lld, %s ]\n", (s64)ish->ish_time,
+                          ptlrpc_import_state_name(ish->ish_state));
        }
 
        LPROCFS_CLIMP_EXIT(obd);
@@ -1140,7 +1139,7 @@ int lprocfs_timeouts_seq_show(struct seq_file *m, void *data)
        struct obd_device *obd = (struct obd_device *)data;
        struct obd_import *imp;
        unsigned int cur, worst;
-       time_t now, worstt;
+       time64_t now, worstt;
        struct dhms ts;
        int i;
 
@@ -1148,19 +1147,19 @@ int lprocfs_timeouts_seq_show(struct seq_file *m, void *data)
        LPROCFS_CLIMP_CHECK(obd);
        imp = obd->u.cli.cl_import;
 
-       now = cfs_time_current_sec();
+       now = ktime_get_real_seconds();
 
        /* Some network health info for kicks */
        s2dhms(&ts, now - imp->imp_last_reply_time);
-       seq_printf(m, "%-10s : %ld, "DHMS_FMT" ago\n",
-                  "last reply", imp->imp_last_reply_time, DHMS_VARS(&ts));
+       seq_printf(m, "%-10s : %lld, "DHMS_FMT" ago\n",
+                  "last reply", (s64)imp->imp_last_reply_time, DHMS_VARS(&ts));
 
        cur = at_get(&imp->imp_at.iat_net_latency);
        worst = imp->imp_at.iat_net_latency.at_worst_ever;
        worstt = imp->imp_at.iat_net_latency.at_worst_time;
        s2dhms(&ts, now - worstt);
-       seq_printf(m, "%-10s : cur %3u  worst %3u (at %ld, "DHMS_FMT" ago) ",
-                  "network", cur, worst, worstt, DHMS_VARS(&ts));
+       seq_printf(m, "%-10s : cur %3u  worst %3u (at %lld, "DHMS_FMT" ago) ",
+                  "network", cur, worst, (s64)worstt, DHMS_VARS(&ts));
        lprocfs_at_hist_helper(m, &imp->imp_at.iat_net_latency);
 
        for(i = 0; i < IMP_AT_MAX_PORTALS; i++) {
@@ -1170,9 +1169,9 @@ int lprocfs_timeouts_seq_show(struct seq_file *m, void *data)
                worst = imp->imp_at.iat_service_estimate[i].at_worst_ever;
                worstt = imp->imp_at.iat_service_estimate[i].at_worst_time;
                s2dhms(&ts, now - worstt);
-               seq_printf(m, "portal %-2d  : cur %3u  worst %3u (at %ld, "
+               seq_printf(m, "portal %-2d  : cur %3u  worst %3u (at %lld, "
                           DHMS_FMT" ago) ", imp->imp_at.iat_portal[i],
-                          cur, worst, worstt, DHMS_VARS(&ts));
+                          cur, worst, (s64)worstt, DHMS_VARS(&ts));
                lprocfs_at_hist_helper(m, &imp->imp_at.iat_service_estimate[i]);
        }
 
@@ -1451,11 +1450,11 @@ static int lprocfs_stats_seq_show(struct seq_file *p, void *v)
        int                              idx    = *(loff_t *)v;
 
        if (idx == 0) {
-               struct timeval now;
+               struct timespec64 now;
 
-               do_gettimeofday(&now);
-               seq_printf(p, "%-25s %lu.%lu secs.usecs\n",
-                          "snapshot_time", now.tv_sec, now.tv_usec);
+               ktime_get_real_ts64(&now);
+               seq_printf(p, "%-25s %llu.%09lu secs.nsecs\n",
+                          "snapshot_time", (s64)now.tv_sec, now.tv_nsec);
        }
 
        hdr = &stats->ls_cnt_header[idx];
index f239908..43c7d9e 100644 (file)
@@ -161,7 +161,7 @@ void reply_in_callback(struct lnet_event *ev)
                           ev->mlength, ev->offset, req->rq_replen);
         }
 
-        req->rq_import->imp_last_reply_time = cfs_time_current_sec();
+       req->rq_import->imp_last_reply_time = ktime_get_real_seconds();
 
 out_wake:
         /* NB don't unlock till after wakeup; req can disappear under us
index 0181b53..1a4bf69 100644 (file)
@@ -75,7 +75,7 @@ static void __import_set_state(struct obd_import *imp,
         imp->imp_state = state;
         imp->imp_state_hist[imp->imp_state_hist_idx].ish_state = state;
         imp->imp_state_hist[imp->imp_state_hist_idx].ish_time =
-                cfs_time_current_sec();
+               ktime_get_real_seconds();
         imp->imp_state_hist_idx = (imp->imp_state_hist_idx + 1) %
                 IMP_STATE_HIST_LEN;
 }