[libvirt] [PATCH v4 00/17] virObject adjustments for common object

John Ferlan jferlan at redhat.com
Fri Aug 18 21:50:24 UTC 2017

v3: https://www.redhat.com/archives/libvir-list/2017-June/msg00916.html

Changes since v3 - honestly it's been too long to remember exactly
what changes have taken place. This series provide the util/virobject
changes and the implementation for nodedev, secret, interface, and
network drivers/vir*obj's.  The nwfilter is awaiting more upstream
review and work and some more Storage Pool/Volume patches will be
posted in conjunction with these. These changes also use the rwlocks
Michal recently added to virobject as the means to provide locks
for the LookupHash table(s).

Although I understand it's not the preference of one reviewer, I've
kept with the virObject model. If that still doesn't pass muster and
someone else wants to create some other mechanism to combine the existing
drivers in a more sane manner, then have at it. This is the model I've
chosen. I personally don't see the value in just a shim API.

This set of patches moves away from using a strict "uuid/name" designation
in favor of using "key1" and "key2". While some may find that "too generic",
I think that's the whole purpose of it. After some soul searching I feel
using "name" or "uuid" is too restrictive and lends more towards the shim
API model. Besides for some consumers they don't have a uuid (nodedev,
interface, and nwfilter). In the long run it doesn't matter whether it's
a uuid, name, or whatever as long as it's a character string.

Patches 1, 12, and 16 could be easily separated out, but since I was
working in the area - they were added here as well.

John Ferlan (17):
  util: Use VIR_ERROR instead of VIR_WARN
  util: Introduce virObjectLookupKeys
  util: Introduce virObjectLookupHash
  util: Introduce virObjectLookupKeys*Active API's
  util: Introduce virObjectLookupHash{Add|Remove}
  util: Introduce virObjectLookupHashFind[Locked]
  util: Introduce virObjectLookupHashForEach
  util: Introduce virObjectLookupHashSearch[Locked]
  nodedev: Use virObjectLookup{Keys|Hash}
  secret: Use virObjectLookup{Keys|Hash}
  util: Introduce virObjectLookupHashClone
  Revert "interface: Consume @def in virInterfaceObjNew"
  interface: Use virObjectLookup{Keys|Hash}
  test: Clean up test driver Interface interactions
  util: Introduce virObjectLookupHashPrune
  network: Fix virNetworkObjBridgeInUse return type
  network: Use virObjectLookup{Keys|Hash}

 src/conf/virinterfaceobj.c  | 301 ++++++++++----------
 src/conf/virnetworkobj.c    | 293 ++++++--------------
 src/conf/virnetworkobj.h    |   5 +-
 src/conf/virnodedeviceobj.c | 286 ++++++-------------
 src/conf/virsecretobj.c     | 263 +++++-------------
 src/libvirt_private.syms    |  15 +
 src/test/test_driver.c      |  55 +---
 src/util/virobject.c        | 658 +++++++++++++++++++++++++++++++++++++++++++-
 src/util/virobject.h        | 119 ++++++++
 tests/networkxml2conftest.c |   4 +-
 10 files changed, 1190 insertions(+), 809 deletions(-)


More information about the libvir-list mailing list