<div>if a CPG_EVENT_CONCHG event occured in the time window between a CPG_EVENT_DELIVER & CPG_EVENT_REQUEST event pair(for example, a vdi lookup operation followed by a  vdi meta object read operation)</div><div>cluster will hang forever for the meta object read event be blocked. </div>
<div><br></div><div>Yibin Shen</div><div class="gmail_quote">On Fri, Sep 2, 2011 at 12:37 AM, MORITA Kazutaka <span dir="ltr"><<a href="mailto:morita.kazutaka@lab.ntt.co.jp">morita.kazutaka@lab.ntt.co.jp</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">This patch prevents a CPG_EVENT_DELIVER event from blocking VM I/Os.<br>
<br>
Signed-off-by: MORITA Kazutaka <<a href="mailto:morita.kazutaka@lab.ntt.co.jp">morita.kazutaka@lab.ntt.co.jp</a>><br>
---<br>
 sheep/group.c |    4 +++-<br>
 1 files changed, 3 insertions(+), 1 deletions(-)<br>
<br>
diff --git a/sheep/group.c b/sheep/group.c<br>
index 6690125..ab253a6 100644<br>
--- a/sheep/group.c<br>
+++ b/sheep/group.c<br>
@@ -1487,7 +1487,9 @@ do_retry:<br>
        list_for_each_entry_safe(cevent, n, &sys->cpg_event_siblings, cpg_event_list) {<br>
                struct request *req = container_of(cevent, struct request, cev);<br>
<br>
-               if (cevent->ctype != CPG_EVENT_REQUEST)<br>
+               if (cevent->ctype == CPG_EVENT_DELIVER)<br>
+                       continue;<br>
+               if (cevent->ctype == CPG_EVENT_CONCHG)<br>
                        break;<br>
<br>
                list_del(&cevent->cpg_event_list);<br>
--<br>
1.7.2.5<br>
<font color="#888888"><br>
--<br>
sheepdog mailing list<br>
<a href="mailto:sheepdog@lists.wpkg.org">sheepdog@lists.wpkg.org</a><br>
<a href="http://lists.wpkg.org/mailman/listinfo/sheepdog" target="_blank">http://lists.wpkg.org/mailman/listinfo/sheepdog</a><br>
</font></blockquote></div><br>