[libvirt] [PATCHv2 02/14] event: make deregister return value match docs
John Ferlan
jferlan at redhat.com
Tue Jan 7 13:09:05 UTC 2014
On 01/06/2014 05:27 PM, Eric Blake wrote:
> Ever since their introduction (commit 1509b80 in v0.5.0 for
> virConnectDomainEventRegister, commit 4445723 in v0.8.0 for
> virConnectDomainEventDeregisterAny), the event deregistration
> functions have been documented as returning 0 on success;
> likewise for older registration (only the newer RegisterAny
> must return a non-zero callbackID). And now that we are
> adding virConnectNetworkEventDeregisterAny for v1.2.1, it
> should have the same semantics.
>
> Fortunately, all of the stateful drivers have been obeying
> the docs and returning 0, thanks to the way the remote_driver
> tracks things (in fact, the RPC wire protocol is unable to
> send a return value for DomainEventRegisterAny, at least not
> without adding a new RPC number). Well, except for vbox,
> which was always failing, due to failure to set the return
> value to anything besides its initial -1 value.
>
> But for local drivers, such as test:///default, we've been
> returning non-zero numbers; worse, the non-zero numbers have
> differed over time. For example, in Fedora 12 (libvirt 0.8.2),
> calling Register twice would return 0 and 1 [the callbackID
> generated under the hood]; while in Fedora 20 (libvirt 1.1.3),
> it returns 1 and 2 [the number of callbacks registered for
> that event type]. Since we have changed the behavior over
> time, and since it differs by local vs. remote, we can safely
> argue that no one could have been reasonably relying on any
> particular behavior, so we might as well obey the docs, as well
> as prepare callers that might deal with older clients to not be
> surprised if the docs are not strictly followed.
>
> For consistency, this patch fixes the code for all drivers,
> even though it only makes an impact for vbox and for local
> drivers. By fixing all drivers, future copy and paste from
> a remote driver to a local driver is less likely to
> reintroduce the bug.
>
> * src/libvirt.c (virConnectDomainEventRegister)
> (virConnectDomainEventDeregister)
> (virConnectDomainEventDeregisterAny): Clarify docs.
> * src/libxl/libxl_driver.c (libxlConnectDomainEventRegister)
> (libxlConnectDomainEventDeregister)
> (libxlConnectDomainEventDeregisterAny): Match documentation.
> * src/lxc/lxc_driver.c (lxcConnectDomainEventRegister)
> (lxcConnectDomainEventDeregister)
> (lxcConnectDomainEventDeregisterAny): Likewise.
> * src/test/test_driver.c (testConnectDomainEventRegister)
> (testConnectDomainEventDeregister)
> (testConnectDomainEventDeregisterAny)
> (testConnectNetworkEventDeregisterAny): Likewise.
> * src/uml/uml_driver.c (umlConnectDomainEventRegister)
> (umlConnectDomainEventDeregister)
> (umlConnectDomainEventDeregisterAny): Likewise.
> * src/vbox/vbox_tmpl.c (vboxConnectDomainEventRegister)
> (vboxConnectDomainEventDeregister)
> (vboxConnectDomainEventDeregisterAny): Likewise.
> * src/xen/xen_driver.c (xenUnifiedConnectDomainEventRegister)
> (xenUnifiedConnectDomainEventDeregister)
> (xenUnifiedConnectDomainEventDeregisterAny): Likewise.
> * src/network/bridge_driver.c
> (networkConnectNetworkEventDeregisterAny): Likewise.
>
> Signed-off-by: Eric Blake <eblake at redhat.com>
> ---
> src/libvirt.c | 17 +++++++++++------
> src/libxl/libxl_driver.c | 35 ++++++++++++++++++-----------------
> src/lxc/lxc_driver.c | 30 +++++++++++++++---------------
> src/network/bridge_driver.c | 11 +++++++----
> src/test/test_driver.c | 38 +++++++++++++++++++++-----------------
> src/uml/uml_driver.c | 29 ++++++++++++++++-------------
> src/vbox/vbox_tmpl.c | 32 ++++++++++++++++++++++----------
> src/xen/xen_driver.c | 25 ++++++++++++++-----------
> 8 files changed, 124 insertions(+), 93 deletions(-)
>
Since they're a match set... I'll ACK 1 & 2 together.
I was going to comment about vbox_tmpl.c, but some things are just
better left alone :-)
John
More information about the libvir-list
mailing list