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(-) > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list