Split handle_uninitialized_path() into check_uninitialized_path, which
handles udev retriggers for INIT_MISSING_UDEV paths and starts the path
checker for INIT_FAILED and INIT_NEW paths, and
update_uninitialized_path() which gets the path checker result and
reruns pathinfo if the path is up.

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

diff --git a/multipathd/main.c b/multipathd/main.c
index 8bfb166d..45d40559 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -2718,13 +2718,10 @@ update_path(struct vectors * vecs, struct path * pp, 
time_t start_secs)
 }
 
 static int
-handle_uninitialized_path(struct vectors * vecs, struct path * pp,
-                         unsigned int ticks)
+check_uninitialized_path(struct path * pp, unsigned int ticks)
 {
-       int newstate;
        int retrigger_tries;
        struct config *conf;
-       int ret;
 
        if (pp->initialized != INIT_NEW && pp->initialized != INIT_FAILED &&
            pp->initialized != INIT_MISSING_UDEV)
@@ -2772,6 +2769,15 @@ handle_uninitialized_path(struct vectors * vecs, struct 
path * pp,
        }
 
        start_path_check(pp);
+       return CHECK_PATH_STARTED;
+}
+
+static int
+update_uninitialized_path(struct vectors * vecs, struct path * pp)
+{
+       int newstate, ret;
+       struct config *conf;
+
        newstate = get_new_state(pp);
 
        if (!strlen(pp->wwid) &&
@@ -2862,7 +2868,9 @@ next_mpp:
                        continue;
                pp->is_checked = true;
 
-               rc = handle_uninitialized_path(vecs, pp, ticks);
+               rc = check_uninitialized_path(pp, ticks);
+               if (rc == CHECK_PATH_STARTED)
+                       rc = update_uninitialized_path(vecs, pp);
                if (rc == CHECK_PATH_REMOVED)
                        i--;
                else if (rc == CHECK_PATH_CHECKED)
-- 
2.45.0


Reply via email to