@@ -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)
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 <bmarzins@redhat.com> --- multipathd/main.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-)