[libvirt] XenStore fix

Jonas Eriksson jonas.j.eriksson at ericsson.com
Tue Jul 28 08:37:56 UTC 2009


On Tue, Jul 28, 2009 at 10:15:10AM +0200 Daniel Veillard wrote:
> On Tue, Jul 28, 2009 at 08:30:12AM +0200, Jonas Eriksson wrote:
> > Hi,
> > 
> > I have been examining a bug where libvirtd (and virsh) does not show
> > all virtual machines on a xen host. This proved to be because of this
> > program flow:
> > 1. virConnectNumOfDomains -> .. -> xenUnifiedNumOfDomains
> >    -> xenHypervisorNumOfDomains => 3
> > 2. virConnectListDomains(max=3) -> .. -> xenUnifiedListDomains(max=3)
> >    -> xenStoreNumOfDomains(max=3) => { 0, 2, 7 }
> 
>   Actually the problem I see is that ListDomains should really go
> through the Hypervisor API i.e. xenHypervisorListDomains(), which
> is *way* faster and garanteed to be acurate. We should try the
> hypervisor first, IMHO, the function code was modified end of last year
> to avoid Xend not properly cleaning up:
> 
> http://www.mail-archive.com/libvir-list@redhat.com/msg09855.html

Ah, yes.. This seems very related. I remember seeing this earlier
but never had the time to look into it back then.

>   The problem is that we have put xenstore driver call first, while
> it's clearly slower and has a higher chance of getting things wrong than
> the hypervisor itself (if the HV get it wrong I guess there is no cure :-)
> 
>   Could you try changing xenUnifiedListDomains() and make the
> xenHypervisorListDomains try first, then check if it still works with
> 3.3, if yes that's even better. Now the patch looks reasonable to me
> but I think the reorder should be done too if this works, and will lead
> to really good results ... as long as the hypercall works.

Yes, this works. I tried with the reordering in
xenUnifiedListDomains, both with and without my patch to make
sure that libvirt used the Hypervisor interface instead of
XenStore. Do you want a revised patch for this? In that case, I
think that XenStore should be last in the prio-list due to both
the performance issues, not helped by my patch, and because it
behaves..differently.

/Jonas

--
Jonas Eriksson
Consultant at AS/EAB/FLJ/IL
Phone: +46 8 58086281
Combitech AB
Älvsjö, Sweden




More information about the libvir-list mailing list