<div dir="ltr">Merged,<div>Thanks.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 29, 2016 at 11:28 PM, Bart Van Assche <span dir="ltr"><<a href="mailto:bart.vanassche@sandisk.com" target="_blank">bart.vanassche@sandisk.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Calling pthread_cond_signal() without holding the associated<br>
mutex sporadically results in a lost wakeup. Hence call<br>
pthread_cond_signal() while holding the mutex used by<br>
pthread_cond_wait().<br>
<br>
Signed-off-by: Bart Van Assche <<a href="mailto:bart.vanassche@sandisk.com">bart.vanassche@sandisk.com</a>><br>
Cc: Mike Christie <<a href="mailto:mchristi@redhat.com">mchristi@redhat.com</a>><br>
---<br>
 libmultipath/checkers/rbd.c | 2 +-<br>
 libmultipath/checkers/tur.c | 2 +-<br>
 2 files changed, 2 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/libmultipath/checkers/rbd.c b/libmultipath/checkers/rbd.c<br>
index 874bcfa..41259c3 100644<br>
--- a/libmultipath/checkers/rbd.c<br>
+++ b/libmultipath/checkers/rbd.c<br>
@@ -527,8 +527,8 @@ static void *rbd_thread(void *ctx)<br>
        /* checker done */<br>
        pthread_mutex_lock(&ct->lock);<br>
        ct->state = state;<br>
-       pthread_mutex_unlock(&ct-><wbr>lock);<br>
        pthread_cond_signal(&ct-><wbr>active);<br>
+       pthread_mutex_unlock(&ct-><wbr>lock);<br>
<br>
        condlog(3, "rbd%d thead finished, state %s", ct->rbd_bus_id,<br>
                checker_state_name(state));<br>
diff --git a/libmultipath/checkers/tur.c b/libmultipath/checkers/tur.c<br>
index 8c1f633..94e4190 100644<br>
--- a/libmultipath/checkers/tur.c<br>
+++ b/libmultipath/checkers/tur.c<br>
@@ -225,8 +225,8 @@ static void *tur_thread(void *ctx)<br>
        /* TUR checker done */<br>
        pthread_mutex_lock(&ct->lock);<br>
        ct->state = state;<br>
-       pthread_mutex_unlock(&ct-><wbr>lock);<br>
        pthread_cond_signal(&ct-><wbr>active);<br>
+       pthread_mutex_unlock(&ct-><wbr>lock);<br>
<br>
        condlog(3, "%d:%d: tur checker finished, state %s",<br>
                TUR_DEVT(ct), checker_state_name(state));<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.10.0<br>
<br>
</font></span></blockquote></div><br></div>