On 07/02/2018 11:22 AM, Markus Armbruster wrote:
When OOB is enabled, out-of-band commands are executed right away,
everything else is queued. This lets out-of-band commands "jump the
queue".
However, certain errors are always reported right away, and therefore
can jump the queue even when the erroneous input does not request
out-of-band execution. These errors are pretty unlikely to occur in
production, but it's wrong all the same. Mark FIXME.
Ouch.
Signed-off-by: Markus Armbruster <arm...@redhat.com>
---
monitor.c | 1 +
tests/qmp-test.c | 7 +++++++
2 files changed, 8 insertions(+)
+++ b/tests/qmp-test.c
@@ -239,6 +239,13 @@ static void test_qmp_oob(void)
unblock_blocked_cmd();
recv_cmd_id(qts, "ib-blocks-1");
recv_cmd_id(qts, "ib-quick-1");
+
+ /* FIXME certain in-band errors overtake slow in-band command */
+ send_cmd_that_blocks(qts, "blocks-2");
+ qtest_async_qmp(qts, "{ 'id': 'err-2' }");
Since this has neither 'execute' nor 'exec-oob', we can't state whether
it is in-band or out-of-band; back-compatibility says it should be
treated as in-band.
+ recv_cmd_id(qts, NULL);
+ unblock_blocked_cmd();
+ recv_cmd_id(qts, "blocks-2");
Thus, it should have been queued until after blocks-2 completed.
Useful test.
Reviewed-by: Eric Blake <ebl...@redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org