Whamcloud - gitweb
LU-8178 lproc: fix negative recovery_duration 81/20381/3
authorSergey Cheremencev <sergey.cheremencev@seagate.com>
Thu, 14 Jan 2016 19:32:02 +0000 (22:32 +0300)
committerOleg Drokin <oleg.drokin@intel.com>
Tue, 14 Jun 2016 03:55:11 +0000 (03:55 +0000)
There is a window in target_recovery_thread where
obd_recovery_end is not set despite of
obd_recovering becomes 0. In such case
recovery_duration shows difference between 0 and
obd_recovery_start like below:
recovery_duration: 18446744072323902150.

Change-Id: Id385156585c99d12726e89980b55c588e0bf3ceb
Signed-off-by: Sergey Cheremencev <sergey.cheremencev@seagate.com>
Seagate-bug-id: MRP-1519
Reviewed-by: Alexander Nikolaevich Boyko <alexander.boyko@seagate.com>
Reviewed-by: Artem Blagodarenko <artem.blagodarenko@seagate.com>
Tested-by: Parinay Vijayprakash Kondekar <parinay.kondekar@seagate.com>
Reviewed-on: http://review.whamcloud.com/20381
Tested-by: Jenkins
Reviewed-by: Alexander Boyko <alexander.boyko@seagate.com>
Reviewed-by: Mike Pershin <mike.pershin@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/obdclass/lprocfs_status_server.c

index d6ee00d..2790deb 100644 (file)
@@ -578,7 +578,9 @@ int lprocfs_recovery_status_seq_show(struct seq_file *m, void *data)
                seq_printf(m, "COMPLETE\n");
                seq_printf(m, "recovery_start: %lu\n", obd->obd_recovery_start);
                seq_printf(m, "recovery_duration: %lu\n",
-                          obd->obd_recovery_end - obd->obd_recovery_start);
+                          obd->obd_recovery_end ?
+                          obd->obd_recovery_end - obd->obd_recovery_start :
+                          cfs_time_current_sec() - obd->obd_recovery_start);
                /* Number of clients that have completed recovery */
                seq_printf(m, "completed_clients: %d/%d\n",
                           obd->obd_max_recoverable_clients -