From: Joe Jin <joe.jin@oracle.com>
To: Matt Wilson <msw@amazon.com>, Keir Fraser <keir@xen.org>,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
Ian Jackson <ian.jackson@eu.citrix.com>,
Ian Campbell <ian.campbell@citrix.com>,
Roger Pau Monne <roger.pau@citrix.com>
Cc: Joe Jin <joe.jin@oracle.com>,
Sureshmon Nair <sureshmon.nair@oracle.com>,
xen-devel <xen-devel@lists.xen.org>
Subject: Re: [PATCH] xend: make xc.vcpu_getinfo() return None if guest not existed
Date: Tue, 03 Dec 2013 18:38:10 +0800 [thread overview]
Message-ID: <529DB492.3010701@oracle.com> (raw)
In-Reply-To: <528D7A24.4020009@oracle.com>
Hi Matt,
Can you please review the patch? or any other ideas to fix the race?
Thanks,
Joe
On 11/21/13 11:12, Joe Jin wrote:
> We hit failure when when reboot some guests at the same time,
> xend.log has below:
> [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 caused by one or more guests be rebooted between the call of
> find_relaxed_node()->list('all') and getVCPUInfo(). This patch will let
> xc.vcpu_getinfo() return None if guest not existed to avoid the failure.
>
> Signed-off-by: Joe Jin <joe.jin@oracle.com>
> Cc: Matt Wilson <msw@amazon.com>
> Cc: Keir Fraser <keir@xen.org>
> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> Cc: Ian Jackson <ian.jackson@eu.citrix.com>
> Cc: Ian Campbell <ian.campbell@citrix.com>
> Cc: Roger Pau Monne <roger.pau@citrix.com>
> ---
> tools/python/xen/lowlevel/xc/xc.c | 15 ++++++++++++---
> tools/python/xen/xend/XendDomainInfo.py | 2 +-
> 2 files changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/tools/python/xen/lowlevel/xc/xc.c b/tools/python/xen/lowlevel/xc/xc.c
> index 2625fc4..9a7e589 100644
> --- a/tools/python/xen/lowlevel/xc/xc.c
> +++ b/tools/python/xen/lowlevel/xc/xc.c
> @@ -396,8 +396,13 @@ static PyObject *pyxc_vcpu_getinfo(XcObject *self,
> return pyxc_error_to_exception(self->xc_handle);
>
> rc = xc_vcpu_getinfo(self->xc_handle, dom, vcpu, &info);
> - if ( rc < 0 )
> - return pyxc_error_to_exception(self->xc_handle);
> + if ( rc < 0)
> + {
> + if (errno == ESRCH)
> + return Py_BuildValue("");
> + else
> + return pyxc_error_to_exception(self->xc_handle);
> + }
>
> cpumap = xc_cpumap_alloc(self->xc_handle);
> if(cpumap == NULL)
> @@ -407,7 +412,11 @@ static PyObject *pyxc_vcpu_getinfo(XcObject *self,
> if ( rc < 0 )
> {
> free(cpumap);
> - return pyxc_error_to_exception(self->xc_handle);
> +
> + if (errno == ESRCH)
> + return Py_BuildValue("");
> + else
> + return pyxc_error_to_exception(self->xc_handle);
> }
>
> info_dict = Py_BuildValue("{s:i,s:i,s:i,s:L,s:i}",
> diff --git a/tools/python/xen/xend/XendDomainInfo.py b/tools/python/xen/xend/XendDomainInfo.py
> index e9d3e7e..6b5fd83 100644
> --- a/tools/python/xen/xend/XendDomainInfo.py
> +++ b/tools/python/xen/xend/XendDomainInfo.py
> @@ -1518,7 +1518,7 @@ class XendDomainInfo:
> for i in range(0, self.info['VCPUs_max']):
> if self.domid is not None:
> info = xc.vcpu_getinfo(self.domid, i)
> -
> + if info == None: continue
> sxpr.append(['vcpu',
> ['number', i],
> ['online', info['online']],
>
--
Oracle <http://www.oracle.com>
Joe Jin | Software Development Senior Manager | +8610.6106.5624
ORACLE | Linux and Virtualization
No. 24 Zhongguancun Software Park, Haidian District | 100193 Beijing
next prev parent reply other threads:[~2013-12-03 10:38 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-21 3:12 [PATCH] xend: make xc.vcpu_getinfo() return None if guest not existed Joe Jin
2013-11-26 1:25 ` Joe Jin
2013-12-03 10:38 ` Joe Jin [this message]
2013-12-08 23:52 ` Matt Wilson
2013-12-10 9:05 ` 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=529DB492.3010701@oracle.com \
--to=joe.jin@oracle.com \
--cc=ian.campbell@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=keir@xen.org \
--cc=konrad.wilk@oracle.com \
--cc=msw@amazon.com \
--cc=roger.pau@citrix.com \
--cc=sureshmon.nair@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.