[libvirt] [PATCH 0/7] Prepare for daemon split

Laine Stump laine at laine.org
Thu Apr 5 17:06:28 UTC 2018


On 03/28/2018 11:18 AM, Daniel P. Berrangé wrote:
> When we split up the daemons, libvirtd will need to forward different
> sets of APIs to different daemons. This means libvirtd is going to need
> to have multiple virConnectPtr instances open.

Have you done any thinking about what will need to be added to the
network driver API (or how)? I'd like to be involved with that.

One part that troubles me is that there will no longer be a parent-child
relationship between the process keeping track of network allocations
and the qemu process - currently if a qemu process dies, libvirtd knows
about it and can recover the resources that had been allocated, but with
the network driver in a separate process, qemu could die and
libvirtd-qemu might not be around to notify libvirtd-network (or
whatever we end up calling the processes).

Likewise, there is the nwfilter driver's complicated callback setup to
reload the iptables rules of all relevant domains when a filter's
definition is changed. I haven't thought about the details, but I think
that will need some "interesting" handling.

Also the network driver and nwfilter driver both use virfirewall.c,
which has a mutex to prevent simultaneous updates; either we'll need to
put that functionality into one of the drivers and have the other one
call it via a public API, or we'll need to rely on iptables -w (but even
that could lead to different results, since it's locking just during
application of a single rule rather than a complete transaction (as
defined by virfirewall.c).

>
> This series prepares for that by introducing "separate" connections,
> which are actually just an extra reference on the current single
> connection. This will facilitate later changes.
>
> Daniel P. Berrangé (7):
>   rpc: refactor way connection object is generated for remote dispatch
>   remote: use a separate connection for interface APIs
>   remote: use a separate connection for network APIs
>   remote: use a separate connection for nodedev APIs
>   remote: use a separate connection for nwfilter APIs
>   remote: use a separate connection for secret APIs
>   remote: use a separate connection for storage APIs
>
>  src/remote/remote_daemon.h          |  6 +++
>  src/remote/remote_daemon_dispatch.c | 81 +++++++++++++++++++------------
>  src/rpc/gendispatch.pl              | 95 ++++++++++++++++++++++++++++---------
>  3 files changed, 128 insertions(+), 54 deletions(-)
>




More information about the libvir-list mailing list