[libvirt] XenStore fix

Jonas Eriksson jonas.j.eriksson at ericsson.com
Thu Jul 30 11:51:40 UTC 2009


Hi again,

How should we tackle this? The discussions seems to have stopped,
but as this is a bug, it would be nice to have the fix in 0.7.0
if possible. Any suggestions of what an eveutual reworked patch
should contain, or is this in need of a discussion better saved
to a time where a release is not right around the corner?

Regards,
Jonas

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 }
> The domain with ID 2 is then removed when it is discovered that it is
> not a running domain, which leads to this:
> 
> xenhost# xm list
> Name                                        ID   Mem VCPUs      State   Time(s)
> Domain-0                                     0 14970     2     r-----   2544.7
> vm1                                          7   512     1     -b----   2191.7
> vm4                                              512     1                28.0
> vm5                                         12   512     1     -b----    467.1
> vm6                                              512     1                 0.0
> vm7                                              512     1               482.4
> xenhost# virsh list
>  Id Name                 State
> ----------------------------------
>   0 Domain-0             running
>   7 vm1                  idle
> xenhost# 
> 
> But where does "2" come from? If we check all "directories" in
> /local/domain which is queried by the xenstore driver, it is apparent
> that xenstore is not properly cleaned. We find the sequence {0, 2, 7}
> as the first entries:
> xenhost# xenstore ls /local/domain |grep '^[^ ]'
> 0 = ""
> 2 = ""
> 7 = ""
> 9 = ""
> 10 = ""
> 11 = ""
> 12 = ""
> xenhost#
> 
> This patch checks that the path found in /local/domain/<domid>/vm
> exists in xenstore before adding the domid to the return list. The
> same thing is done for xenStoreNumOfDomains.
> 
> I use SLES11 with Xen 3.3.1_18546_12-3.1.
> 
> /Jonas
> 
> --
> Libvir-list mailing list
> Libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list


--
Jonas Eriksson
Consultant at AS/EAB/FLJ/IL
Combitech AB
Älvsjö, Sweden




More information about the libvir-list mailing list