All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Joe Jin <joe.jin@oracle.com>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	ian.jackson@eu.citrix.com, Ian Campbell <ian.campbell@citrix.com>,
	Keir Fraser <keir@xen.org>
Cc: xen-devel <xen-devel@lists.xen.org>
Subject: Re: [PATCH] xend: do not polling vcpus info if guest state is not RUNNING or PAUSED
Date: Tue, 19 Nov 2013 09:03:27 +0100	[thread overview]
Message-ID: <528B1B4F.2010102@citrix.com> (raw)
In-Reply-To: <528B017D.5020202@oracle.com>

On 19/11/13 07:13, Joe Jin wrote:
> When created new guest on NUMA server, xend tried to get the best node by
> calculated all vcpus info, the race is if other geust is rebooting, the
> guest in the list when entered find_relaxed_node(), but when call
> getVCPUInfo() the guest be terminated, then getVCPUInfo() will fail with
> below error:
> 
> [2013-09-04 20:01:26 6254] ERROR (XendDomainInfo:496) VM start failed
> Traceback (most recent call last):
>   File "/usr/lib64/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 482, in start
>     XendTask.log_progress(31, 60, self._initDomain)
>   File "/usr/lib64/python2.4/site-packages/xen/xend/XendTask.py", line 209, in log_progress
>     retval = func(*args, **kwds)
>   File "/usr/lib64/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 2918, in _initDomain
>     node = self._setCPUAffinity()
>   File "/usr/lib64/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 2835, in _setCPUAffinity
>     best_node = find_relaxed_node(candidate_node_list)[0]
>   File "/usr/lib64/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 2803, in find_relaxed_node
>     cpuinfo = dom.getVCPUInfo()
>   File "/usr/lib64/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 1600, in getVCPUInfo
>     raise XendError(str(exn))
> XendError: (3, 'No such process')
> 
> This patch will let find_relaxed_node() only polling the RUNNING or PAUSED
> guest vpus info to avoid the race.
> 
> Signed-off-by: Joe Jin <joe.jin@oracle.com>
> ---
>  tools/python/xen/xend/XendDomainInfo.py |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
> 
> diff --git a/tools/python/xen/xend/XendDomainInfo.py b/tools/python/xen/xend/XendDomainInfo.py
> index e9d3e7e..66e4b9f 100644
> --- a/tools/python/xen/xend/XendDomainInfo.py
> +++ b/tools/python/xen/xend/XendDomainInfo.py
> @@ -2734,6 +2734,8 @@ class XendDomainInfo:
>                  from xen.xend import XendDomain
>                  doms = XendDomain.instance().list('all')
>                  for dom in filter (lambda d: d.domid != self.domid, doms):
> +                    if dom._stateGet() not in (DOM_STATE_RUNNING,DOM_STATE_PAUSED):
> +                        continue

Isn't it possible that the domain has rebooted and is no longer there
between this two calls?

IMHO it's very unlikely, but there's still a window where getVCPUInfo
could fail.

>                      cpuinfo = dom.getVCPUInfo()
>                      for vcpu in sxp.children(cpuinfo, 'vcpu'):
>                          if sxp.child_value(vcpu, 'online') == 0: continue
> 

  parent reply	other threads:[~2013-11-19  8:03 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-19  6:13 [PATCH] xend: do not polling vcpus info if guest state is not RUNNING or PAUSED Joe Jin
2013-11-19  7:06 ` Dario Faggioli
2013-11-19  8:03 ` Roger Pau Monné [this message]
2013-11-19 10:41   ` Joe Jin
2013-11-19 14:06     ` Konrad Rzeszutek Wilk
2013-11-19 16:26       ` Matt Wilson
2013-11-20  2:27         ` Joe Jin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=528B1B4F.2010102@citrix.com \
    --to=roger.pau@citrix.com \
    --cc=ian.campbell@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=joe.jin@oracle.com \
    --cc=keir@xen.org \
    --cc=konrad.wilk@oracle.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.