[libvirt] [PATCH 00/34] network events feature v2

Michal Privoznik mprivozn at redhat.com
Wed Dec 11 13:18:54 UTC 2013


On 29.11.2013 16:18, Cédric Bosdonnat wrote:
> This patch serie is replacing the previous one I sent. The improvements that
> were made in between are:
>   * splitting the 2 huge commits into smaller reviewable ones.
>   * Get rid of the huge union in virDomainEvent and use virObjects instead.
>   * No domain events-related code in object_event.c. I left the network events
>     related code there as it would be pretty small in a separate set of files.
>   * Rebased on the python split repository
> 
> I saw something weird in the domain events code when working on this:
> VIR_DOMAIN_EVENT_LAST is defined if VIR_ENUM_SENTINELS is defined, but is
> generally used independently of it. I did the same for the VIR_NETWORK_EVENT_LAST
> thought I'm not sure that's the correct thing to do.
> 
> These changes are all about bringing events for network object like the
> ones existing for domains. This feature is needed for virt-manager to
> refresh its UI when networks are started/destroyed/defined/undefined.
> 
> The network events are implemented in the test, bridge network and remote
> drivers ATM.
> 
> Cédric Bosdonnat (34):
>   Added domain start/stop/define/undefine event unit tests
>   Rename virDomainEventCallback to virObjectEventCallback
>   Renamed virDomainMeta to virObjectMeta
>   Renamed virDomainEventQueue to virObjectEventQueue
>   Renamed virDomainEventState to virObjectEventState
>   Renamed virDomainEventCallbackList* to virObjectEventCallbackList*
>   Created virObjectEventStateRegisterID
>   virObject-ified virDomainEvent
>   Create virDomainEventLifecycle to start removing the huge union
>   Renamed virDomainEventNew* to virDomainEventLifecycleNew*
>   Renamed virDomainEventNewInternal to virDomainEventNew
>   Create virDomainEventRTCChange to get rid of the huge union
>   Created virDomainEventWatchdog to get rid of the huge union
>   Created virDomainEventIOError
>   Created virDomainEventGraphics
>   Created virDomainEventBlockJob
>   Create virDomainEventDiskChange
>   Created virDomainEventTrayChange
>   Created virDomainEventBalloonChange
>   Created virDomainEventDeviceRemoved and removed the huge union
>   Changed the remaining domain event creation methods results to void*
>   Removed virDomainEventPtr in favor of virObjectEventPtr
>   Add object event namespaces for the event IDs
>   Renamed virDomainEventTimer to virObjectEventTimer
>   Split the virObjectEvent and virDomainEvent* to separate them after
>   Extracted common parts of domain_event.[ch] to object_event.[ch]
>   Added virNetworkEventLifecycle object
>   Added API for network events similar to the one from Domain events
>   test driver: renamed testDomainEventQueue into testObjectEventQueue
>   test driver: implemented network events
>   Add network events unit tests
>   daemon/remote.c: renamed remoteDispatchDomainEventSend
>   Add network events to the remote driver
>   Added network events to the bridged network driver
> 
>  .gitignore                           |    1 +
>  cfg.mk                               |    6 +-
>  daemon/libvirtd.h                    |    1 +
>  daemon/remote.c                      |  175 ++-
>  include/libvirt/libvirt.h.in         |   86 ++
>  src/Makefile.am                      |    6 +
>  src/conf/domain_event.c              | 1954 ++++++++++++++--------------------
>  src/conf/domain_event.h              |  219 ++--
>  src/conf/object_event.c              |  903 ++++++++++++++++
>  src/conf/object_event.h              |  113 ++
>  src/conf/object_event_private.h      |  113 ++
>  src/driver.h                         |   14 +
>  src/libvirt.c                        |  133 +++
>  src/libvirt_private.syms             |   25 +-
>  src/libvirt_public.syms              |    7 +
>  src/libxl/libxl_conf.h               |    2 +-
>  src/libxl/libxl_driver.c             |   46 +-
>  src/lxc/lxc_conf.h                   |    2 +-
>  src/lxc/lxc_driver.c                 |   54 +-
>  src/lxc/lxc_process.c                |   20 +-
>  src/network/bridge_driver.c          |   89 ++
>  src/network/bridge_driver_platform.h |    3 +
>  src/parallels/parallels_utils.h      |    2 +-
>  src/qemu/qemu_conf.h                 |    2 +-
>  src/qemu/qemu_domain.c               |    6 +-
>  src/qemu/qemu_domain.h               |    2 +-
>  src/qemu/qemu_driver.c               |  116 +-
>  src/qemu/qemu_hotplug.c              |   10 +-
>  src/qemu/qemu_migration.c            |   38 +-
>  src/qemu/qemu_process.c              |   70 +-
>  src/remote/remote_driver.c           |  178 +++-
>  src/remote/remote_protocol.x         |   46 +-
>  src/test/test_driver.c               |  197 ++--
>  src/uml/uml_conf.h                   |    2 +-
>  src/uml/uml_driver.c                 |   44 +-
>  src/vbox/vbox_tmpl.c                 |   22 +-
>  src/xen/xen_driver.c                 |   10 +-
>  src/xen/xen_driver.h                 |    4 +-
>  src/xen/xen_inotify.c                |   10 +-
>  src/xen/xs_internal.c                |   20 +-
>  tests/Makefile.am                    |    7 +
>  tests/objecteventtest.c              |  407 +++++++
>  tests/qemuhotplugtest.c              |    2 +-
>  43 files changed, 3525 insertions(+), 1642 deletions(-)
>  create mode 100644 src/conf/object_event.c
>  create mode 100644 src/conf/object_event.h
>  create mode 100644 src/conf/object_event_private.h
>  create mode 100644 tests/objecteventtest.c
> 

I'm getting some compile errors on ARM:

  CC       conf/libvirt_conf_la-domain_event.lo
conf/domain_event.c: In function 'virDomainEventDispatchDefaultFunc':
conf/domain_event.c:1148:30: error: cast increases required alignment of
target type [-Werror=cast-align]
             rtcChangeEvent = (virDomainEventRTCChangePtr)event;
                              ^
conf/domain_event.c:1264:34: error: cast increases required alignment of
target type [-Werror=cast-align]
             balloonChangeEvent = (virDomainEventBalloonChangePtr)event;
                                  ^

Michal




More information about the libvir-list mailing list