On 03/29/2018 02:34 PM, John Ferlan wrote:
> As evidenced by various code comments, the process of adding and
> removing objects to/from the domain object list is problematic.
>
> Long story short is that the Add logic doesn't generate enough
> object references and the Remove logic removes one extra than
> was added during Add and leaves the object unlocked upon return
> (as well as doing a small fire dance to ensure proper lock
> ordering). Some drivers (libxl, lxc, qemu, and vz) handle the
> not enough references by adding an virObjectRef to the object
> returned from the Add code, while others (bhyve, openvz, test,
> uml, and vmware) live rather vicariously and carefully, but at
> least don't reference the object after calling Remove.
>
> Fixing all this will take a few patch streams across a few
> mostly dormant driver modules and some coordination with the
> vir*FindBy{UUID|ID|Name} logic. Some of that was already posted
> previously, but only received minimal notice:
>
> https://www.redhat.com/archives/libvir-list/2018-March/msg00489.html
>
> So rather than (re)posting a 20-30 patch series on list which
> probably won't get reviewed, I'll take things in smaller batches
> of patches in the hopes that all this can be worked through so
> that the end result is "cleaner" (and agreed upon).
>
> John Ferlan (4):
> conf: Fix error path logic in virDomainObjListAddLocked
> conf: Fix error path logic in virDomainObjListLoadStatus
> conf: Introduce virDomainObjListAddObjLocked
> conf: Fix virDomainObjParseFile object handling
>
> src/conf/virdomainobjlist.c | 63 ++++++++++++++++++++++++++++-----------------
> src/lxc/lxc_controller.c | 2 +-
> tests/qemuxml2xmltest.c | 2 +-
> 3 files changed, 42 insertions(+), 25 deletions(-)
>
ACK series.
Michal
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list