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

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



>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

Attachment: xm_create_take2.patch
Description: Binary data

_______________________________________________
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®.