[libvirt] [PATCH 0/4] Initial phase of domain obj add/remove cleanup

John Ferlan posted 4 patches 6 years ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20180329123410.11833-1-jferlan@redhat.com
Test syntax-check passed
src/conf/virdomainobjlist.c | 63 ++++++++++++++++++++++++++++-----------------
src/lxc/lxc_controller.c    |  2 +-
tests/qemuxml2xmltest.c     |  2 +-
3 files changed, 42 insertions(+), 25 deletions(-)
[libvirt] [PATCH 0/4] Initial phase of domain obj add/remove cleanup
Posted by John Ferlan 6 years ago
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(-)

-- 
2.13.6

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 0/4] Initial phase of domain obj add/remove cleanup
Posted by John Ferlan 6 years ago
ping?

Tks -

John

On 03/29/2018 08:34 AM, 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(-)
> 

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 0/4] Initial phase of domain obj add/remove cleanup
Posted by Michal Privoznik 6 years ago
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