diff options
author | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2007-07-19 17:15:49 +0100 |
---|---|---|
committer | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2007-07-19 17:15:49 +0100 |
commit | bd99184d5427f133f09ac870ac3e925c3377dce1 (patch) | |
tree | ba598f8b77d9ddd30e676a4049f42c560d990a4e /tools | |
parent | ab52a83704b90d42ac6a695b510e5a9fd7c2a838 (diff) | |
download | xen-bd99184d5427f133f09ac870ac3e925c3377dce1.tar.gz xen-bd99184d5427f133f09ac870ac3e925c3377dce1.tar.bz2 xen-bd99184d5427f133f09ac870ac3e925c3377dce1.zip |
xend: Give back memory to dom0 after a failed auto-balloon attempt.
Signed-off-by: Frank van der Linden <frank.vanderlinden@sun.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/python/xen/xend/balloon.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/tools/python/xen/xend/balloon.py b/tools/python/xen/xend/balloon.py index 9a57cf9ac9..69d91e2859 100644 --- a/tools/python/xen/xend/balloon.py +++ b/tools/python/xen/xend/balloon.py @@ -94,7 +94,9 @@ def free(need_mem): # track the last used value so that we don't trigger too many watches. xoptions = XendOptions.instance() + dom0 = XendDomain.instance().privilegedDomain() xc = xen.lowlevel.xc.xc() + dom0_start_alloc_mb = get_dom0_current_alloc() / 1024 try: dom0_min_mem = xoptions.get_dom0_min_mem() * 1024 @@ -133,7 +135,6 @@ def free(need_mem): new_alloc_mb = new_alloc / 1024 # Round down log.debug("Balloon: setting dom0 target to %d MiB.", new_alloc_mb) - dom0 = XendDomain.instance().privilegedDomain() dom0.setMemoryTarget(new_alloc_mb) last_new_alloc = new_alloc # Continue to retry, waiting for ballooning or scrubbing. @@ -158,7 +159,10 @@ def free(need_mem): (need_mem, dom0_min_mem, dom0_min_mem, free_mem + scrub_mem + dom0_alloc - dom0_min_mem)) else: - raise VmError('The privileged domain did not balloon!') + dom0.setMemoryTarget(dom0_start_alloc_mb) + raise VmError( + ('Not enough memory is available, and dom0 cannot' + ' be shrunk any further')) finally: del xc |