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 <bmarz...@redhat.com>
---
 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@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel

Reply via email to