checking if tv_sec is 0 is a holdover from before we had
get_monotonic_time(), when we used to zero out tv_sec on failure.
Also, use normalize_timespec() to simplify setting the sleep time.

Signed-off-by: Benjamin Marzinski <bmarz...@redhat.com>
---
 multipathd/main.c | 62 ++++++++++++++++++++---------------------------
 1 file changed, 26 insertions(+), 36 deletions(-)

diff --git a/multipathd/main.c b/multipathd/main.c
index 78374377..5c2a7272 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -2589,16 +2589,11 @@ checkerloop (void *ap)
                        break;
 
                get_monotonic_time(&start_time);
-               if (start_time.tv_sec && last_time.tv_sec) {
-                       timespecsub(&start_time, &last_time, &diff_time);
-                       condlog(4, "tick (%ld.%06lu secs)",
-                               (long)diff_time.tv_sec, diff_time.tv_nsec / 
1000);
-                       last_time = start_time;
-                       ticks = diff_time.tv_sec;
-               } else {
-                       ticks = 1;
-                       condlog(4, "tick (%d ticks)", ticks);
-               }
+               timespecsub(&start_time, &last_time, &diff_time);
+               condlog(4, "tick (%ld.%06lu secs)",
+                       (long)diff_time.tv_sec, diff_time.tv_nsec / 1000);
+               last_time = start_time;
+               ticks = diff_time.tv_sec;
 #ifdef USE_SYSTEMD
                if (use_watchdog)
                        sd_notify(0, "WATCHDOG=1");
@@ -2688,26 +2683,23 @@ unlock:
                        lock_cleanup_pop(vecs->lock);
                }
 
-               diff_time.tv_nsec = 0;
-               if (start_time.tv_sec) {
-                       get_monotonic_time(&end_time);
-                       timespecsub(&end_time, &start_time, &diff_time);
-                       if (num_paths) {
-                               unsigned int max_checkint;
-
-                               condlog(4, "checked %d path%s in %ld.%06lu 
secs",
-                                       num_paths, num_paths > 1 ? "s" : "",
-                                       (long)diff_time.tv_sec,
-                                       diff_time.tv_nsec / 1000);
-                               conf = get_multipath_config();
-                               max_checkint = conf->max_checkint;
-                               put_multipath_config(conf);
-                               if (diff_time.tv_sec > (time_t)max_checkint)
-                                       condlog(1, "path checkers took longer "
-                                               "than %ld seconds, consider "
-                                               "increasing 
max_polling_interval",
-                                               (long)diff_time.tv_sec);
-                       }
+               get_monotonic_time(&end_time);
+               timespecsub(&end_time, &start_time, &diff_time);
+               if (num_paths) {
+                       unsigned int max_checkint;
+
+                       condlog(4, "checked %d path%s in %ld.%06lu secs",
+                               num_paths, num_paths > 1 ? "s" : "",
+                               (long)diff_time.tv_sec,
+                               diff_time.tv_nsec / 1000);
+                       conf = get_multipath_config();
+                       max_checkint = conf->max_checkint;
+                       put_multipath_config(conf);
+                       if (diff_time.tv_sec > (time_t)max_checkint)
+                               condlog(1, "path checkers took longer "
+                                       "than %ld seconds, consider "
+                                       "increasing max_polling_interval",
+                                       (long)diff_time.tv_sec);
                }
 
                if (foreign_tick == 0) {
@@ -2725,12 +2717,10 @@ unlock:
                if (!strict_timing)
                        sleep(1);
                else {
-                       if (diff_time.tv_nsec) {
-                               diff_time.tv_sec = 0;
-                               diff_time.tv_nsec =
-                                    1000UL * 1000 * 1000 - diff_time.tv_nsec;
-                       } else
-                               diff_time.tv_sec = 1;
+                       diff_time.tv_sec = 0;
+                       diff_time.tv_nsec =
+                            1000UL * 1000 * 1000 - diff_time.tv_nsec;
+                       normalize_timespec(&diff_time);
 
                        condlog(3, "waiting for %ld.%06lu secs",
                                (long)diff_time.tv_sec,
-- 
2.17.2

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel

Reply via email to