diff options
Diffstat (limited to '0172-RHBZ-1350931-no-active-add.patch')
-rw-r--r-- | 0172-RHBZ-1350931-no-active-add.patch | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/0172-RHBZ-1350931-no-active-add.patch b/0172-RHBZ-1350931-no-active-add.patch new file mode 100644 index 0000000..4e79e32 --- /dev/null +++ b/0172-RHBZ-1350931-no-active-add.patch @@ -0,0 +1,37 @@ +--- + multipathd/main.c | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) + +Index: multipath-tools-130222/multipathd/main.c +=================================================================== +--- multipath-tools-130222.orig/multipathd/main.c ++++ multipath-tools-130222/multipathd/main.c +@@ -530,9 +530,15 @@ ev_add_path (struct path * pp, struct ve + } + mpp = find_mp_by_wwid(vecs->mpvec, pp->wwid); + if (mpp && mpp->wait_for_udev) { +- mpp->wait_for_udev = 2; +- orphan_path(pp); +- return 0; ++ if (pathcount(mpp, PATH_UP) == 0 && ++ (pathcount(mpp, PATH_GHOST) == 0 || ++ pp->tpgs == TPGS_IMPLICIT)) ++ mpp->force_udev_reload = 1; ++ else { ++ mpp->wait_for_udev = 2; ++ orphan_path(pp); ++ return 0; ++ } + } + + pp->mpp = mpp; +@@ -551,7 +557,8 @@ rescan: + + condlog(4,"%s: adopting all paths for path %s", + mpp->alias, pp->dev); +- mpp->force_udev_reload = !pathcount(mpp, PATH_WILD); ++ if (pathcount(mpp, PATH_WILD) == 0) ++ mpp->force_udev_reload = 1; + if (adopt_paths(vecs->pathvec, mpp, 1)) + goto fail; /* leave path added to pathvec */ + |