WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH] Fix xm create command for wrong scheduler parame

To: Masaki Kanno <kanno.masaki@xxxxxxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH] Fix xm create command for wrong scheduler parameters
From: Ewan Mellor <ewan@xxxxxxxxxxxxx>
Date: Tue, 6 Feb 2007 16:03:22 +0000
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Tue, 06 Feb 2007 08:02:59 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <CAC749B58BF30Ekanno.masaki@xxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <CAC749B58BF30Ekanno.masaki@xxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.9i
On Tue, Feb 06, 2007 at 03:10:48PM +0900, Masaki Kanno wrote:

Content-Description: Mail message body
> Hi,
> 
> When I tested the xm create command with wrong scheduler parameters, 
> a domain existed with the paused state. Usually, if an error occurred 
> by the xm create command, the domain isn't created. 
> The xm start command also has same issue. 
> 
> # xm create /xen/vm1.conf cpu_weight=99999
> Using config file "/xen/vm1.conf".
> Error: weight is out of range
> # xm create /xen/vm2.conf cpu_cap=999
> Using config file "/xen/vm2.conf".
> Error: cap is out of range
> # xm list
> Name                                      ID   Mem VCPUs      State   Time(s)
> Domain-0                                   0   491     2     r-----    594.5
> vm1                                        6   256     1     --p---      0.0
> vm2                                        7   256     1     --p---      0.0
> 
> 
> This patch fixes the issue. If the xm create command fails with 
> wrong scheduler parameters, it destroys the domain in the proceeding 
> of xm create command. 
> 
> 
> Signed-off-by: Masaki Kanno <kanno.masaki@xxxxxxxxxxxxxx>
> 
> Best regards,
>  Kan
> 

> diff -r 8bc64a3a5054 tools/python/xen/xend/XendDomain.py
> --- a/tools/python/xen/xend/XendDomain.py     Mon Feb 05 16:40:19 2007 +0000
> +++ b/tools/python/xen/xend/XendDomain.py     Tue Feb 06 13:43:15 2007 +0900
> @@ -868,11 +868,15 @@ class XendDomain:
>              self._refresh()
>  
>              dominfo = XendDomainInfo.create(config)
> -            if XendNode.instance().xenschedinfo() == 'credit':
> -                self.domain_sched_credit_set(dominfo.getDomid(),
> -                                             dominfo.getWeight(),
> -                                             dominfo.getCap())
> -            return dominfo
> +            try:
> +                if XendNode.instance().xenschedinfo() == 'credit':
> +                    self.domain_sched_credit_set(dominfo.getDomid(),
> +                                                 dominfo.getWeight(),
> +                                                 dominfo.getCap())
> +                return dominfo
> +            except Exception, ex:
> +                self.domain_destroy(dominfo.getDomid())
> +                raise XendError(str(ex))
>          finally:
>              self.domains_lock.release()
>  
> @@ -945,10 +949,14 @@ class XendDomain:
>                                   POWER_STATE_NAMES[dominfo.state])
>              
>              dominfo.start(is_managed = True)
> -            if XendNode.instance().xenschedinfo() == 'credit':
> -                self.domain_sched_credit_set(dominfo.getDomid(),
> -                                             dominfo.getWeight(),
> -                                             dominfo.getCap())
> +            try:
> +                if XendNode.instance().xenschedinfo() == 'credit':
> +                    self.domain_sched_credit_set(dominfo.getDomid(),
> +                                                 dominfo.getWeight(),
> +                                                 dominfo.getCap())
> +            except Exception, ex:
> +                self.domain_destroy(dominfo.getDomid())
> +                raise XendError(str(ex))
>          finally:
>              self.domains_lock.release()
>          dominfo.waitForDevices()

I think that you should move this call to the end of XendDomainInfo.start(),
which already handles exceptions and destroys the domain if necessary.  That
would save duplicating the error handling here.

Ewan.



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel