@@ -2629,9 +2629,8 @@ handle_uninitialized_path(struct vectors * vecs, struct path * pp,
struct config *conf;
int ret;
- if (((pp->initialized == INIT_OK || pp->initialized == INIT_PARTIAL ||
- pp->initialized == INIT_REQUESTED_UDEV) && !pp->mpp) ||
- pp->initialized == INIT_REMOVED)
+ if (pp->initialized != INIT_NEW && pp->initialized != INIT_FAILED &&
+ pp->initialized != INIT_MISSING_UDEV)
return 0;
if (pp->tick)
@@ -2645,7 +2644,7 @@ handle_uninitialized_path(struct vectors * vecs, struct path * pp,
max_checkint = conf->max_checkint;
put_multipath_config(conf);
- if (!pp->mpp && pp->initialized == INIT_MISSING_UDEV) {
+ if (pp->initialized == INIT_MISSING_UDEV) {
if (pp->retriggers < retrigger_tries) {
static const char change[] = "change";
ssize_t ret;
@@ -2685,31 +2684,27 @@ handle_uninitialized_path(struct vectors * vecs, struct path * pp,
newstate = check_path_state(pp);
- if (!pp->mpp) {
- if (!strlen(pp->wwid) &&
- (pp->initialized == INIT_FAILED ||
- pp->initialized == INIT_NEW) &&
- (newstate == PATH_UP || newstate == PATH_GHOST)) {
- condlog(2, "%s: add missing path", pp->dev);
- conf = get_multipath_config();
- pthread_cleanup_push(put_multipath_config, conf);
- ret = pathinfo(pp, conf, DI_ALL | DI_BLACKLIST);
- pthread_cleanup_pop(1);
- /* INIT_OK implies ret == PATHINFO_OK */
- if (pp->initialized == INIT_OK) {
- ev_add_path(pp, vecs, 1);
- pp->tick = 1;
- } else {
- if (ret == PATHINFO_SKIPPED)
- return -1;
- /*
- * We failed multiple times to initialize this
- * path properly. Don't re-check too often.
- */
- pp->checkint = max_checkint;
- }
+ if (!strlen(pp->wwid) &&
+ (pp->initialized == INIT_FAILED || pp->initialized == INIT_NEW) &&
+ (newstate == PATH_UP || newstate == PATH_GHOST)) {
+ condlog(2, "%s: add missing path", pp->dev);
+ conf = get_multipath_config();
+ pthread_cleanup_push(put_multipath_config, conf);
+ ret = pathinfo(pp, conf, DI_ALL | DI_BLACKLIST);
+ pthread_cleanup_pop(1);
+ /* INIT_OK implies ret == PATHINFO_OK */
+ if (pp->initialized == INIT_OK) {
+ ev_add_path(pp, vecs, 1);
+ pp->tick = 1;
+ } else {
+ if (ret == PATHINFO_SKIPPED)
+ return -1;
+ /*
+ * We failed multiple times to initialize this
+ * path properly. Don't re-check too often.
+ */
+ pp->checkint = max_checkint;
}
- return 0;
}
return 0;
}
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> --- multipathd/main.c | 51 +++++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 28 deletions(-)