<div dir="ltr">Hannes,<div><br></div><div>I merged the patchset.</div><div><br></div><div>Can you post a patch to set return values to the multipathd/main.c::patch_check() exit points where it is not present.</div><div>This 11/12 patch adds one, and the "proactive path removal" patch adds the other.</div>
<div>This requirement was introduced by your earlier "check timing" patch.</div><div><br></div><div>Thanks,</div><div>Christophe Varoqui</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Dec 13, 2013 at 1:14 PM, Hannes Reinecke <span dir="ltr"><<a href="mailto:hare@suse.de" target="_blank">hare@suse.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">When a path is discovered in 'blocked' state it won't be added<br>
to the path list as we cannot get the path uuid.<br>
And any further check will fail here as the uuid won't be<br>
recovered. So add a check in checkerloop() to re-add the<br>
path if it gets out of a 'blocked' state.<br>
<br>
Signed-off-by: Hannes Reinecke <<a href="mailto:hare@suse.de">hare@suse.de</a>><br>
---<br>
 multipathd/main.c | 14 +++++++++++---<br>
 1 file changed, 11 insertions(+), 3 deletions(-)<br>
<br>
diff --git a/multipathd/main.c b/multipathd/main.c<br>
index 7058147..cc5cf67 100644<br>
--- a/multipathd/main.c<br>
+++ b/multipathd/main.c<br>
@@ -1111,9 +1111,6 @@ check_path (struct vectors * vecs, struct path * pp)<br>
        int chkr_new_path_up = 0;<br>
        int oldchkrstate = pp->chkrstate;<br>
<br>
-       if (!pp->mpp)<br>
-               return;<br>
-<br>
        if (pp->tick && --pp->tick)<br>
                return; /* don't check this path yet */<br>
<br>
@@ -1139,6 +1136,17 @@ check_path (struct vectors * vecs, struct path * pp)<br>
                pathinfo(pp, conf->hwtable, 0);<br>
                return;<br>
        }<br>
+       if (!pp->mpp) {<br>
+               if (!strlen(pp->wwid) &&<br>
+                   (newstate == PATH_UP || newstate == PATH_GHOST)) {<br>
+                       condlog(2, "%s: add missing path", pp->dev);<br>
+                       if (pathinfo(pp, conf->hwtable, DI_ALL) == 0) {<br>
+                               ev_add_path(pp, vecs);<br>
+                               pp->tick = 1;<br>
+                       }<br>
+               }<br>
+               return;<br>
+       }<br>
        /*<br>
         * Async IO in flight. Keep the previous path state<br>
         * and reschedule as soon as possible<br>
<span class="HOEnZb"><font color="#888888">--<br>
1.8.1.4<br>
<br>
--<br>
dm-devel mailing list<br>
<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/dm-devel" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
</font></span></blockquote></div><br></div>