On 03/20/2013 11:39 PM, Wenchao Xia wrote:
From cimtest, Calling to virEventRegisterDefaultImpl() of libvirt
API,
resulting random fail in cases, which seems most likely tog-pegasus's
internal data is damaged. The root cause may be:
1 libvirt event API have a bug, we called it from thread A and then
do other things in thread B, maybe it did not handle this well.
2 tog-pegasus have confilict with libvirt's event.
3 Potential requirement in libvirt event API or tog-pegasus's thread,
which is not document so we used them in a wrong way.
Most possible is that tog-pegasus tries to manage all threads
resulting the error.
This patch bring back libvirt-cim's own old event implemention, which
is by default used now. CSI from libvirt can still be activated with
a macro.
This patch also have changed some buglike code of old libvirt-cim's event
implemention.
Tested with cimtest on following Env, no more strange error found:
RH6.3
libvirt-0.9.10-21.el6.x86_64
tog-pegasus-2.11.0-3.el6.x86_64
Note that to make review easy, this patch try move the code
as little as possible, a following "clean up" patch will
move the code together.
Signed-off-by: Wenchao Xia <xiawenc(a)linux.vnet.ibm.com>
---
src/Virt_ComputerSystem.c | 60 +++-
src/Virt_ComputerSystemIndication.c | 663 ++++++++++++++++++++++++++++-
src/Virt_VirtualSystemManagementService.c | 57 +++-
3 files changed, 777 insertions(+), 3 deletions(-)
ACK
John