check_path_state() is now split into start_path_check(), which calls
path_sysfs_state() and if the path is up also calls start_checker(), and
get_new_state() which gets the new state from either pp->sysfs_state
or get_state().

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

diff --git a/multipathd/main.c b/multipathd/main.c
index 33a57041..16c0531e 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -2314,25 +2314,31 @@ should_skip_path(struct path *pp){
        return 0;
 }
 
-static int
-check_path_state(struct path *pp)
+static void
+start_path_check(struct path *pp)
 {
-       int newstate;
        struct config *conf;
 
-       newstate = path_sysfs_state(pp);
-       if (newstate == PATH_UP) {
+       if (path_sysfs_state(pp) ==  PATH_UP) {
                conf = get_multipath_config();
                pthread_cleanup_push(put_multipath_config, conf);
-               newstate = PATH_UNCHECKED;
-               if (start_checker(pp, conf, 1, newstate) == 0)
-                       newstate = get_state(pp);
+               start_checker(pp, conf, 1, PATH_UNCHECKED);
                pthread_cleanup_pop(1);
        } else {
                checker_clear_message(&pp->checker);
                condlog(3, "%s: state %s, checker not called",
-                       pp->dev, checker_state_name(newstate));
+                       pp->dev, checker_state_name(pp->sysfs_state));
        }
+}
+
+static int
+get_new_state(struct path *pp)
+{
+       int newstate = pp->sysfs_state;
+       struct config *conf;
+
+       if (newstate == PATH_UP)
+               newstate = get_state(pp);
        /*
         * Wait for uevent for removed paths;
         * some LLDDs like zfcp keep paths unavailable
@@ -2413,7 +2419,8 @@ do_check_path (struct vectors * vecs, struct path * pp)
                pp->checkint = checkint;
        };
 
-       newstate = check_path_state(pp);
+       start_path_check(pp);
+       newstate = get_new_state(pp);
        if (newstate == PATH_WILD || newstate == PATH_UNCHECKED)
                return CHECK_PATH_SKIPPED;
        /*
@@ -2752,7 +2759,8 @@ handle_uninitialized_path(struct vectors * vecs, struct 
path * pp,
                }
        }
 
-       newstate = check_path_state(pp);
+       start_path_check(pp);
+       newstate = get_new_state(pp);
 
        if (!strlen(pp->wwid) &&
            (pp->initialized == INIT_FAILED || pp->initialized == INIT_NEW) &&
-- 
2.45.0


Reply via email to