[Sheepdog] [PATCH 3/3] sheep: handle CPG_EVENT_DELIVER even if there are outstanding I/Os

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Thu Sep 1 18:37:52 CEST 2011


This patch prevents VM I/Os from blocking a CPG_EVENT_DELIVER event.

Signed-off-by: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
---
 sheep/group.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/sheep/group.c b/sheep/group.c
index ab253a6..eb0c4e2 100644
--- a/sheep/group.c
+++ b/sheep/group.c
@@ -1567,12 +1567,15 @@ do_retry:
 		goto do_retry;
 
 	if (cpg_event_running() || cpg_event_suspended() ||
-	    list_empty(&sys->cpg_event_siblings) || sys->nr_outstanding_io)
+	    list_empty(&sys->cpg_event_siblings))
 		return;
 
 	cevent = list_first_entry(&sys->cpg_event_siblings,
 				  struct cpg_event, cpg_event_list);
 
+	if (cevent->ctype == CPG_EVENT_CONCHG && sys->nr_outstanding_io)
+		return;
+
 	list_del(&cevent->cpg_event_list);
 	sys->cur_cevent = cevent;
 
-- 
1.7.2.5




More information about the sheepdog mailing list