[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Fix mem-set, mem-max, and vcpu-set commands when used against inactive domains.
# HG changeset patch # User Ewan Mellor <ewan@xxxxxxxxxxxxx> # Node ID bc3ff220d24d083f8ff170969cc4eeed5fdb428f # Parent 779e99f810ca5239b8565db1ecd420f4d40a3bb0 Fix mem-set, mem-max, and vcpu-set commands when used against inactive domains. Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx> --- tools/python/xen/xend/XendDomain.py | 6 --- tools/python/xen/xend/XendDomainInfo.py | 57 +++++++++++++++++++++++------- tools/python/xen/xend/server/SrvDomain.py | 9 +--- 3 files changed, 48 insertions(+), 24 deletions(-) diff -r 779e99f810ca -r bc3ff220d24d tools/python/xen/xend/XendDomain.py --- a/tools/python/xen/xend/XendDomain.py Fri Dec 15 11:48:40 2006 +0000 +++ b/tools/python/xen/xend/XendDomain.py Fri Dec 15 11:50:04 2006 +0000 @@ -1339,11 +1339,7 @@ class XendDomain: dominfo = self.domain_lookup_nr(domid) if not dominfo: raise XendInvalidDomain(str(domid)) - maxmem = int(mem) * 1024 - try: - return xc.domain_setmaxmem(dominfo.getDomid(), maxmem) - except Exception, ex: - raise XendError(str(ex)) + dominfo.setMemoryMaximum(mem) def domain_ioport_range_enable(self, domid, first, last): """Enable access to a range of IO ports for a domain diff -r 779e99f810ca -r bc3ff220d24d tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Fri Dec 15 11:48:40 2006 +0000 +++ b/tools/python/xen/xend/XendDomainInfo.py Fri Dec 15 11:50:04 2006 +0000 @@ -551,8 +551,34 @@ class XendDomainInfo: raise XendError('Invalid memory size') self.info['memory_static_min'] = target - self.storeVm("memory", target) - self.storeDom("memory/target", target << 10) + if self.domid >= 0: + self.storeVm("memory", target) + self.storeDom("memory/target", target << 10) + else: + self.info['memory_dynamic_min'] = target + xen.xend.XendDomain.instance().managed_config_save(self) + + def setMemoryMaximum(self, limit): + """Set the maximum memory limit of this domain + @param limit: In MiB. + """ + log.debug("Setting memory maximum of domain %s (%d) to %d MiB.", + self.info['name_label'], self.domid, limit) + + if limit <= 0: + raise XendError('Invalid memory size') + + self.info['memory_static_max'] = limit + if self.domid >= 0: + maxmem = int(limit) * 1024 + try: + return xc.domain_setmaxmem(self.domid, maxmem) + except Exception, ex: + raise XendError(str(ex)) + else: + self.info['memory_dynamic_max'] = limit + xen.xend.XendDomain.instance().managed_config_save(self) + def getVCPUInfo(self): try: @@ -831,18 +857,23 @@ class XendDomainInfo: def setVCpuCount(self, vcpus): self.info['vcpu_avail'] = (1 << vcpus) - 1 - self.storeVm('vcpu_avail', self.info['vcpu_avail']) - # update dom differently depending on whether we are adjusting - # vcpu number up or down, otherwise _vcpuDomDetails does not - # disable the vcpus - if self.info['vcpus_number'] > vcpus: - # decreasing - self._writeDom(self._vcpuDomDetails()) + if self.domid >= 0: + self.storeVm('vcpu_avail', self.info['vcpu_avail']) + # update dom differently depending on whether we are adjusting + # vcpu number up or down, otherwise _vcpuDomDetails does not + # disable the vcpus + if self.info['vcpus_number'] > vcpus: + # decreasing + self._writeDom(self._vcpuDomDetails()) + self.info['vcpus_number'] = vcpus + else: + # same or increasing + self.info['vcpus_number'] = vcpus + self._writeDom(self._vcpuDomDetails()) + else: self.info['vcpus_number'] = vcpus - else: - # same or increasing - self.info['vcpus_number'] = vcpus - self._writeDom(self._vcpuDomDetails()) + self.info['online_vcpus'] = vcpus + xen.xend.XendDomain.instance().managed_config_save(self) def getLabel(self): return security.get_security_info(self.info, 'label') diff -r 779e99f810ca -r bc3ff220d24d tools/python/xen/xend/server/SrvDomain.py --- a/tools/python/xen/xend/server/SrvDomain.py Fri Dec 15 11:48:40 2006 +0000 +++ b/tools/python/xen/xend/server/SrvDomain.py Fri Dec 15 11:50:04 2006 +0000 @@ -160,12 +160,9 @@ class SrvDomain(SrvDir): return val def op_maxmem_set(self, _, req): - fn = FormFn(self.xd.domain_maxmem_set, - [['dom', 'int'], - ['memory', 'int']]) - val = fn(req.args, {'dom': self.dom.domid}) - return val - + return self.call(self.dom.setMemoryMaximum, + [['memory', 'int']], + req) def call(self, fn, args, req): return FormFn(fn, args)(req.args) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |