[dm-devel] [PATCH 6/6] multipathd: Don't check if timespec.tv_sec is zero
Benjamin Marzinski
bmarzins at redhat.com
Sat Jul 30 05:13:00 UTC 2022
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 <bmarzins at 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
More information about the dm-devel
mailing list