[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 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |