As noted in the recently posted virObject changes:
https://www.redhat.com/archives/libvir-list/2017-June/msg00070.html
I believe I've found a way to handle the recursive lock situation that
made it "difficult" (at best) to convert the nwfilter to the common
object model. It does involve a bit of a circuitous route to "temporarily
implement" the refcnt in nwfilter, but that gets removed rather quickly.
Beyond that there's a bit of setup, the first few patches deal with
issues seen while working through this code and then more setup for
getting things to be more common with other drivers (so when they
disappear a bit further into the future) into some new object it'll
be obvious where/why they're there.
The middle few patches deal with an insane naming scheme for a single
function that seemed to keep prefixing "_" as a new function was created.
So it's a bit of name change, but makes it easier to think about.
The last 4 patches deal with the conversion to use a @ref, a change
to a list locking hash table model, the modificiation of the recursive
instantiation to use @refs rather than @locks, and finally the change
to use the existing lockable object.
I have run these through the various avacodo nwfilter tests that I could
find, but perhaps if someone that had a more "robust configuration" and
wants to be a bit adventurous and also give the patches a whirl - that
would be appreciated.
John Ferlan (17):
nwfilter: Fix return value comparison for
virNWFilterTriggerVMFilterRebuild
nwfilter: Fix possible corruption on failure path during LoadConfig
nwfilter: Fix possible locking problem in LoadConfig error path
nwfilter: Remove need for virNWFilterSaveXML
nwfilter: Move virNWFilterSaveConfig virnwfilterobj
nwfilter: Add configFile into virNWFilterObj
nwfilter: Add @def into virNWFilterObjNew
nwfilter: Clean up a couple nwfilter_driver error paths
nwfilter: Consistently name virNWFilterPtr in driver
nwfilter: Rename virNWFilterInstantiate
nwfilter: Rename __virNWFilterInstantiateFilter
nwfilter: Rename _virNWFilterInstantiateFilter
nwfilter: Introduce virNWFilterObjListFindInstantiateFilter
nwfilter: Add @refs logic to __virNWFilterObj
nwfilter: Convert _virNWFilterObjList to be a virObjectLockable
nwfilter: Remove recursive locking for nwfilter instantiation
nwfilter: Convert virNWFilterObj to use virObjectLockable
src/conf/nwfilter_conf.c | 43 ---
src/conf/nwfilter_conf.h | 9 -
src/conf/virnwfilterobj.c | 550 +++++++++++++++++++++++----------
src/conf/virnwfilterobj.h | 19 +-
src/libvirt_private.syms | 6 +-
src/nwfilter/nwfilter_driver.c | 51 ++-
src/nwfilter/nwfilter_gentech_driver.c | 276 +++++++----------
7 files changed, 542 insertions(+), 412 deletions(-)
--
2.9.4