Current stats cache uses same lock as domain cache, namely lock
of virDomainObjPtr. First this is not necessary, domain cache is
used to translate id of object of interest from libvirt to vzsdk
one. Besides this domain object is not used. Second this is risky
game as lock is dropped on waiting for stat events from sdk deep
down on stack so callers throughout the stack should be written
very carefully.
This patch series makes stats cache self locking and thus making
code much more solid. This is done thru introducing extra lock for
stats cache. Statistics API functions first use domain cache then
drop domain lock, query stats cache and unreference domain object.
Patches 1-4 conform API functions to this structure. Patches 5-7
makes subsidiary improvments. Patch 8 finally introduce new lock.
Last patches are cleanup[9] and bugfix[10].
Nikolay Shirokovskiy (10):
vz: pass string instead of disk definition to block stat function
vz: prepare disks names before getting all disks stats
vz: move getting stats in vzDomainGetVcpus to the end
vz: move getting stats in vzDomainGetInfo to the end
vz: use consistent naming for different domain object in vz_driver.c
vz: simplify refcount on sdkdom in prlsdkLoadDomain
vz: hold stats cache in a pointer in vzDomObj
vz: introduce stats cache lock
vz: extract on stats cache update into a function
vz: fix many stat request issue
src/vz/vz_driver.c | 397 +++++++++++++++++++++++++++++++++++------------------
src/vz/vz_sdk.c | 230 +++++++++++++++++++++----------
src/vz/vz_sdk.h | 15 +-
src/vz/vz_utils.c | 9 --
src/vz/vz_utils.h | 6 +-
5 files changed, 438 insertions(+), 219 deletions(-)
--
1.8.3.1