diff options
author | Steven Hand <steven@xensource.com> | 2007-04-27 14:16:22 +0100 |
---|---|---|
committer | Steven Hand <steven@xensource.com> | 2007-04-27 14:16:22 +0100 |
commit | ec2ecedd08e3dd892074f39618ab873ee8a4ce04 (patch) | |
tree | fd018b014c1993a835339d650ce149a9a9a7882d | |
parent | 04b2c0721ad5584c5bc7f4f022963dad503f3d3b (diff) | |
download | xen-ec2ecedd08e3dd892074f39618ab873ee8a4ce04.tar.gz xen-ec2ecedd08e3dd892074f39618ab873ee8a4ce04.tar.bz2 xen-ec2ecedd08e3dd892074f39618ab873ee8a4ce04.zip |
Sanity check changes to memory dynamic/static min/max and ensure we cannot
get ourselves into an inconsistent state.
Signed-off-by: Steven Hand <steven@xensource.com>
-rw-r--r-- | tools/python/xen/xend/XendDomainInfo.py | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/tools/python/xen/xend/XendDomainInfo.py b/tools/python/xen/xend/XendDomainInfo.py index 3630fe61d4..ecca07a355 100644 --- a/tools/python/xen/xend/XendDomainInfo.py +++ b/tools/python/xen/xend/XendDomainInfo.py @@ -580,12 +580,9 @@ class XendDomainInfo: log.debug("Setting memory target of domain %s (%s) to %d MiB.", self.info['name_label'], str(self.domid), target) - if target <= 0: - raise XendError('Invalid memory size') - MiB = 1024 * 1024 - self.info['memory_dynamic_min'] = target * MiB - self.info['memory_dynamic_max'] = target * MiB + self._safe_set_memory('memory_dynamic_min', target * MiB) + self._safe_set_memory('memory_dynamic_max', target * MiB) if self.domid >= 0: self.storeVm("memory", target) @@ -2134,14 +2131,24 @@ class XendDomainInfo: def get_memory_dynamic_min(self): return self.info.get('memory_dynamic_min', 0) + # only update memory-related config values if they maintain sanity + def _safe_set_memory(self, key, newval): + oldval = self.info.get(key, 0) + try: + self.info[key] = newval + self.info._memory_sanity_check() + except Exception, ex: + self.info[key] = oldval + raise + def set_memory_static_max(self, val): - self.info['memory_static_max'] = val + self._safe_set_memory('memory_static_max', val) def set_memory_static_min(self, val): - self.info['memory_static_min'] = val + self._safe_set_memory('memory_static_min', val) def set_memory_dynamic_max(self, val): - self.info['memory_dynamic_max'] = val + self._safe_set_memory('memory_dynamic_max', val) def set_memory_dynamic_min(self, val): - self.info['memory_dynamic_min'] = val + self._safe_set_memory('memory_dynamic_min', val) def get_vcpus_params(self): if self.getDomid() is None: |