[libvirt] [PATCH 01/21] Convert virDomainObjListPtr to use a hash of domain objects
Daniel Veillard
veillard at redhat.com
Wed Oct 28 16:10:22 UTC 2009
On Fri, Oct 23, 2009 at 02:05:30PM +0100, Daniel P. Berrange wrote:
> The current virDomainObjListPtr object stores domain objects in
> an array. This means that to find a particular objects requires
> O(n) time, and more critically acquiring O(n) mutex locks.
>
> The new impl replaces the array with a virHashTable, keyed off
> UUID. Finding a object based on UUID is now O(1) time, and only
> requires a single mutex lock. Finding by name/id is unchanged
> in complexity.
>
> In changing this, all code which iterates over the array had
> to be updated to use a hash table iterator function callback.
> Several of the functions which were identically duplicating
> across all drivers were pulled into domain_conf.c
>
> * src/conf/domain_conf.h, src/conf/domain_conf.c: Change
> virDomainObjListPtr to use virHashTable. Add a initializer
> method virDomainObjListInit, and rename virDomainObjListFree
> to virDomainObjListDeinit, since its not actually freeing
> the container, only its contents. Also add some convenient
> methods virDomainObjListGetInactiveNames,
> virDomainObjListGetActiveIDs and virDomainObjListNumOfDomains
> which can be used to implement the correspondingly named
> public API entry points in drivers
> * src/libvirt_private.syms: Export new methods from domain_conf.h
> * src/lxc/lxc_driver.c, src/opennebula/one_driver.c,
> src/openvz/openvz_conf.c, src/openvz/openvz_driver.c,
> src/qemu/qemu_driver.c, src/test/test_driver.c,
> src/uml/uml_driver.c, src/vbox/vbox_tmpl.c: Update all code
> to deal with hash tables instead of arrays for domains
> ---
> src/conf/domain_conf.c | 274 ++++++++++++++++++++++++++++++-------------
> src/conf/domain_conf.h | 19 +++-
> src/libvirt_private.syms | 6 +-
> src/lxc/lxc_driver.c | 247 +++++++++++++++++----------------------
> src/opennebula/one_driver.c | 68 +++--------
> src/openvz/openvz_conf.c | 7 +-
> src/openvz/openvz_driver.c | 25 ++---
> src/qemu/qemu_driver.c | 221 ++++++++++++++--------------------
> src/test/test_driver.c | 60 +++-------
> src/uml/uml_driver.c | 125 +++++++++-----------
> src/vbox/vbox_tmpl.c | 2 -
> 11 files changed, 519 insertions(+), 535 deletions(-)
Okay, this is a fairly intrusive patch, I looked but didn't spot
anything, I guess this is best handled by testing it as much as
possible. Since this is not directly related to the monitor handling
change, I would suggest to push it now to benefit from amximum testing.
ACK,
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list