[libvirt] [PATCH v2 0/8] virObject adjustments for common object

John Ferlan jferlan at redhat.com
Fri Jun 2 10:17:14 UTC 2017

v1: https://www.redhat.com/archives/libvir-list/2017-May/msg01178.html
rfc: https://www.redhat.com/archives/libvir-list/2017-April/msg00321.html

Now that 3.5.0 is out, hopefully this can be considered early and more
progress can be made this month.

Differences to v1:

  - Remove the magic_marker, replace with checks vs. existing magic without
    the object # specific value.  Also added a assert for the object# not
    exceeding 0xcafeffff.

  - Remove the recursive lock setup....  I believe I've had some success
    with removing the need for recursive locks in nwfilter. I'll post a
    series shortly with that removed for scrutiny.

Beyond that as in v1:

I'm "close enough" to at least convert secrets, nwfilters, nodedevs,
and interfaces to use a more common object methodolgy to add/store,
fetch/find, search, list, etc. the objects in something other than
a linear forward linked list. Converting the storage pool, storage volume,
and network is taking longer than hoped since there are so many patches
to get from pointA to pointB. So I'll focus on the 4 and work through
getting the complete model published/adopted as those have been in my
branches for a while now.

These patches get as far as the creation of the common object which
is a start. The first 4 patches are essentially setup. Patches 5-6 are
more or less what patch 7-8 were. Patches 7-8 are essentially the new
driver/common object extension.

Patches 5-6 from the RFC still exist in my branches and would be the next
logical step. It was a conscious decision to just use the "default" string
comparison for hash table key. That key could be a UUID, but since the
UUID can easily be converted from unsigned to signed - I believe it would
be far simpler to keep that mechanism rather than complexity introduced
by having "different" key search algorithms when the key isn't a char *.

John Ferlan (8):
  util: Formatting cleanups to virobject API
  util: Introduce virObjectGetLockableObj
  util: Generate a common internal only error print
  util: Add safety net of checks to ensure valid object
  util: Introduce virObjectPoolableHashElement
  util: Add virObjectPoolableHashElementGet*Key
  util: Introduce virObjectPoolableDef
  util: Add virObjectPoolableDef* accessor API's

 src/libvirt_private.syms |  11 ++
 src/util/virobject.c     | 458 +++++++++++++++++++++++++++++++++++++++++++----
 src/util/virobject.h     | 123 +++++++++++--
 3 files changed, 538 insertions(+), 54 deletions(-)


More information about the libvir-list mailing list