The path_latency prioritizer didn't call get_prio_timeout, so that the timeout could possibly be 0. Also, it was assuming that the timeout was in seconds, instead of milliseconds. Signed-off-by: Benjamin Marzinski <bmarzins@xxxxxxxxxx> --- libmultipath/prioritizers/path_latency.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libmultipath/prioritizers/path_latency.c b/libmultipath/prioritizers/path_latency.c index 2f5be9b9..d48535d2 100644 --- a/libmultipath/prioritizers/path_latency.c +++ b/libmultipath/prioritizers/path_latency.c @@ -107,7 +107,7 @@ static void cleanup_directio_read(int fd, char *buf, int restore_flags) static int do_directio_read(int fd, unsigned int timeout, char *buf, int sz) { fd_set read_fds; - struct timeval tm = { .tv_sec = timeout }; + struct timeval tm = { .tv_sec = timeout / 1000 }; int ret; int num_read; @@ -247,7 +247,8 @@ int getprio(struct path *pp, char *args, unsigned int timeout) (void)clock_gettime(CLOCK_MONOTONIC, &tv_before); - if (do_directio_read(pp->fd, timeout, buf, blksize)) { + if (do_directio_read(pp->fd, get_prio_timeout(pp, timeout), + buf, blksize)) { pp_pl_log(0, "%s: path down", pp->dev); cleanup_directio_read(pp->fd, buf, restore_flags); return -1; -- 2.17.2 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://listman.redhat.com/mailman/listinfo/dm-devel