v1: https://www.redhat.com/archives/libvir-list/2018-April/msg02616.html v2: https://www.redhat.com/archives/libvir-list/2018-May/msg01145.html v3: https://www.redhat.com/archives/libvir-list/2018-June/msg01121.html Today the nwfilter driver is entangled with the virt drivers in both directions. At various times when rebuilding filters nwfilter will call out to the virt driver to iterate over running guest's NICs. This has caused very complicated lock ordering rules to be required. If we are to split the virt drivers out into separate daemons we need to get rid of this coupling since we don't want the separate daemons calling each other, as that risks deadlock if all of the RPC workers are busy. The obvious way to solve this is to have the nwfilter driver remember all the filters it has active, avoiding the need to iterate over running guests. Changed in v4: - Merged already reviewed patches - Correctly handle nwfilter recreate on daemon startup - Added virsh docs Changed in v3: - Updated API version numbers - Use accessors for virNWFilterBindingObjPtr struct - Other fixes John mentioned Changed in v2: - The virNWFilterBindingPtr was renamed virNWFilterBindingDefPtr - New virNWFilterBindingObjPtr & virNWFilterBindingObjListPtr structs added to track the objects in the driver - New virNWFilterBindingPtr public API type was added - New public APIs for listing filter bindings, querying XML, and creating/deleting them - Convert the virt drivers to use the public API for creating and deleting bindings - Persistent active bindings out to disk so they're preserved across restarts - Added RNG schema and XML-2-XML test - New virsh commands for listing/querying XML/creating/deleting bindings Daniel P. Berrangé (6): virsh: add manpage docs for nwfilter-binding commands. nwfilter: keep track of active filter bindings nwfilter: remove virt driver callback layer for rebuilding filters nwfilter: wire up new APIs for listing and querying filter bindings nwfilter: wire up new APIs for creating and deleting nwfilter bindings nwfilter: convert virt drivers to use public API for nwfilter bindings src/conf/domain_nwfilter.c | 135 ++++++++++++-- src/conf/domain_nwfilter.h | 16 +- src/conf/nwfilter_conf.c | 136 ++------------ src/conf/nwfilter_conf.h | 51 +----- src/conf/virnwfilterobj.c | 4 +- src/conf/virnwfilterobj.h | 4 + src/libvirt_private.syms | 8 +- src/lxc/lxc_driver.c | 28 --- src/lxc/lxc_process.c | 2 +- src/nwfilter/nwfilter_driver.c | 236 ++++++++++++++++++++----- src/nwfilter/nwfilter_gentech_driver.c | 187 ++++++++++---------- src/nwfilter/nwfilter_gentech_driver.h | 8 +- src/qemu/qemu_driver.c | 25 --- src/qemu/qemu_hotplug.c | 4 +- src/qemu/qemu_interface.c | 4 +- src/qemu/qemu_process.c | 6 +- src/remote/remote_daemon.c | 1 + src/uml/uml_conf.c | 2 +- src/uml/uml_driver.c | 29 --- tools/virsh.pod | 35 ++++ 20 files changed, 478 insertions(+), 443 deletions(-) -- 2.17.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list