From: Anton Ivanov <antiv...@cisco.com>

Occasionally, under very heavy load inside UML, on host
or both one of the processes in UML will remain in D state
or will fail to reap a child which will sit in Z state.

This is very difficult to reproduce with stock UML because
the lseek()/read()|write()|fsync() in the ubd driver will
cause a constant "trickle" of memory synchronization regardless
of what UML is doing. It is possible though (3-4 hours of
loadavg >6 stress load with low memory can trigger it).

If lseek()/read()|write() are replaced with its equivalent
pread()|pwrite() the original bug becomes much easier to
reproduce. It now takes 5-10 minutes of heavy IO to cause it.

This fix seems to cure it. I am not sure if this is the best
place to invoke a memory barrier, this one works.

Signed-off-by: Anton Ivanov <antiv...@cisco.com>
---

This version takes into account the fact that uml picks up the 
correct define out of arch/x86/um/barrier.h so no need to invoke it 
directly - noted by Richard Weinberger

I still do not know if this is the correct location to hit it with a
mb(). This one seems to cure it.

 arch/um/kernel/exec.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/um/kernel/exec.c b/arch/um/kernel/exec.c
index 0d7103c..86b1dc1 100644
--- a/arch/um/kernel/exec.c
+++ b/arch/um/kernel/exec.c
@@ -27,6 +27,7 @@ void flush_thread(void)
        ret = unmap(&current->mm->context.id, 0, STUB_START, 0, &data);
        ret = ret || unmap(&current->mm->context.id, STUB_END,
                           host_task_size - STUB_END, 1, &data);
+       mb();
        if (ret) {
                printk(KERN_ERR "flush_thread - clearing address space failed, "
                       "err = %d\n", ret);
-- 
1.7.10.4


------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

Reply via email to