[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] Fix xm create command for wrongschedulerparameters



Hi Ewan,

Could you apply this patch? Or do you have comment? 
This is small issue, but I would like to solve it for Xen 3.0.5. 

Best regards,
 Kan

>
>>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.
>
>Hi Ewan,
>
>Thanks for your advice. 
>I moved calling of domain_sched_credit_set() to the end of 
>XendDomainInfo.start(). How is this patch?
>
>
>Signed-off-by: Masaki Kanno <kanno.masaki@xxxxxxxxxxxxxx>
>
>Best regards,
> Kan
>
>
>-------------------------------text/plain-------------------------------
>_______________________________________________
>Xen-devel mailing list
>Xen-devel@xxxxxxxxxxxxxxxxxxx
>http://lists.xensource.com/xen-devel


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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.