|
From: | Eric Blake |
Subject: | Re: [Qemu-devel] monitor: enable OOB by default |
Date: | Thu, 28 Jun 2018 06:43:01 -0500 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 |
On 06/28/2018 01:55 AM, Markus Armbruster wrote:
Changing an existing event from broadcast to unicast is an observable change in existing behavior. Compatibility break unless we can show nobody can use / uses the observation.
And no one could have been relying on the broadcast COMMAND_DROPPED event semantics, since OOB was previously experimental and since we just proved that they are wrong if not limited to one monitor.
Creating a new event is not a compatibility break by itself[*], regardless of broadcast vs. unicast.My current plan is that I can touch up scripts/qapi/events.py and related stuff to allow QMPEventFuncEmit to take a monitor parameter, then we pass in NULL when we want to send the event to all monitors. Would that work?Think so. Alternatively, a pair of functions: void qapi_event_bcast_EVENT(... event params ..., Error **errp); void qapi_event_send_EVENT(Monitor *mon, ... event params ..., Error **errp); Slightly more compact in the broadcast case, might be a bit easier to read.
Also, fewer NULL arguments to add into existing call sites (although existing call sites would change to use the _bcast_ form, so you're already touching all call sites, which brings back the topic from the other mail on dropping useless errp while at it).
[*] In the case of COMMAND_DROPPED, the compatibility break is dropping commands (the event's trigger), caused by the command queuing feature. That's why command queuing has to be opt-in. Details discussed elsewhere in this thread.
Indeed, and I thought the conclusion there was that we DO promise that COMMAND_DROPPED (and dropped commands in general) won't happen unless you negotiate oob at initial connection.
-- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
[Prev in Thread] | Current Thread | [Next in Thread] |