[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] [RFC PATCH 0/8] util: virObject fixes and enhancements



Posted as RFC mainly for the benefit of patches 5-8.  The first 4 patches
could be considered non-RFC material, but posting half of each just didn't
seem reasonable.

Before I get "too far" into this virobject adjustment and inheritance model,
I wanted to be sure the chosen names were suitable and that I read the
comments from responses to patch 2 of my previous RFC correctly:

https://www.redhat.com/archives/libvir-list/2017-February/msg00521.html

at least with respect to how the inheritence should work. Secondarily,
like a "real object" - should the API's that act upon the object be
part of the object? Of course since virObjectLockable didn't do that
I figured I wouldn't do so either (eg, rather than virObjectLock and
virObjectUnlock, it could have been obj->Lock() and obj->Unlock()).

The next 'logical' step after patch 8 would be to create an object
that uses virObjectPoolableHashElement that would be able to effectly
look like my previous virPoolObj objects insomuch as it'd have the
'def' pointer, all the various flags, etc. That object then would be
consumed by each driver rather than virObjectLockable parent. That's
where the real fun begins. Once that's there - moving the add, remove,
search/find, etc. API's into virobject with callbacks to do vir*obj.c
specific things.

So far in my local branches I have a working model of the secret
driver using everything here. It's been a painful process to extract
out patches and move things along "more slowly", but it's allowed
at least one optimization that I didn't consider originally - using
primary/secondary names rather than assuming UUID/Name.

John Ferlan (8):
  util: Formatting cleanups to virobject API
  util: Introduce virObjectGetLockableObj
  util: Generate a common internal only error print
  util: Add magic_marker for all virObjects
  util: Introduce virObjectPoolableHashTable
  util: Add the hash tables to virObjectPoolableHashTable
  util: Introduce virObjectPoolableHashElement
  util: Add virObjectPoolableHashElementGet*Key

 src/libvirt_private.syms |   8 +
 src/util/virobject.c     | 375 ++++++++++++++++++++++++++++++++++++++++++-----
 src/util/virobject.h     | 132 ++++++++++++++---
 3 files changed, 461 insertions(+), 54 deletions(-)

-- 
2.9.3


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]