[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] xend: avoid call to XendDomainInfo.recreate() while creating domain
# HG changeset patch # User Paolo Bonzini <pbonzini@xxxxxxxxxx> # Date 1300799548 -3600 # Node ID e1452f8088dc667ca57cc1c5a63983a5131d1314 # Parent c639f0afaa74591d1053677b0a6348503a14fd78 avoid call to XendDomainInfo.recreate() while creating domain. We observed xend failing to create a new domain on NUMA machines in some cases. The culprit is find_relaxed_node() which calls XendDomain.instance().list(): from xen.xend import XendDomain doms = XendDomain.instance().list('all') for dom in filter (lambda d: d.domid != self.domid, doms): Depending on the state of the XendDomain singleton, XendDomain._refresh may call XendDomainInfo.recreate(); this one fails because the domain info hasn't been initialized yet, so that self.info['memory'] is zero. XendDomain then decides things are broken beyond repair, and destroys the domain. This patch skips the refresh in this case, and fixes the problem. Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> diff --git a/tools/python/xen/xend/XendDomain.py b/tools/python/xen/xend/XendDomain.py --- a/tools/python/xen/xend/XendDomain.py +++ b/tools/python/xen/xend/XendDomain.py @@ -825,7 +825,7 @@ class XendDomain: # ------------------------------------------------------------ # Xen Legacy API - def list(self, state = DOM_STATE_RUNNING): + def list(self, state = DOM_STATE_RUNNING, refresh = True): """Get list of domain objects. @param: the state in which the VMs should be -- one of the @@ -844,7 +844,7 @@ class XendDomain: break count += 1 try: - if resu: + if resu and refresh: self._refresh(refresh_shutdown = False) # active domains diff --git a/tools/python/xen/xend/XendDomainInfo.py b/tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py +++ b/tools/python/xen/xend/XendDomainInfo.py @@ -2726,7 +2726,7 @@ class XendDomainInfo: nodeload = [0] nodeload = nodeload * nr_nodes from xen.xend import XendDomain - doms = XendDomain.instance().list('all') + doms = XendDomain.instance().list('all', False) for dom in filter (lambda d: d.domid != self.domid, doms): cpuinfo = dom.getVCPUInfo() for vcpu in sxp.children(cpuinfo, 'vcpu'): _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |