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

Reply via email to