<div dir="ltr"><div><div><div>Well, actually that seems to be quite a different bug in there.<br><br></div>I will start a new thread.<br><br></div>In short: migration seems to be broken by commit 1a92c719101e5bfa6fe2b78006ad04c7f075ea28. This is because introduced job _MODIFY waits while MIGRATION_OUT is finished to change `mirrorState' variable. This deadlocks the libvirt.<br><br></div>Pavel<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Apr 28, 2015 at 6:29 AM, Pavel Boldin <span dir="ltr"><<a href="mailto:pboldin@mirantis.com" target="_blank">pboldin@mirantis.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div>Dear Libvirt Developers,<br><br></div>There seems to be a bug or at least a bad behavior in `src/qemu/qemu_monitor.c' lines 683-689 function `qemuMonitorIO':<br><br>            if (qemuMonitorIOWrite(mon) < 0) {<br>                error = true;<br>                if (errno == ECONNRESET)<br>                    hangup = true;<br>            }<br>            events &= ~VIR_EVENT_HANDLE_WRITABLE;<br><br></div>The `qemuMonitorIOWrite' is returning 0 in case 'write' returns EAGAIN thus 'events' is always cleared of `VIR_EVENT_HANDLE_WRITABLE' even in case no message have been sent indeed.<br><br></div>The question is: who is responsible for handling this? It seems like 'errno' is getting overwritten inside all of qemuMonitorJSON* functions so the caller can't rely on it and it needs to be fixed inside the `qemuMonitorIO'.<span class="HOEnZb"><font color="#888888"><br><br></font></span></div><span class="HOEnZb"><font color="#888888">Pavel<br></font></span></div>
</blockquote></div><br></div>