WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-api

[Xen-API] [PATCH] imported patch ca-35152-fix-the-fix

To: xen-api@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-API] [PATCH] imported patch ca-35152-fix-the-fix
From: Matthias Goergens <matthias.goergens@xxxxxxxxxx>
Date: Thu, 21 Oct 2010 16:29:22 +0100
Delivery-date: Thu, 21 Oct 2010 08:29:41 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-api-request@lists.xensource.com?subject=help>
List-id: Discussion of API issues surrounding Xen <xen-api.lists.xensource.com>
List-post: <mailto:xen-api@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-api>, <mailto:xen-api-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-api>, <mailto:xen-api-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-api-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mercurial-patchbomb/1.4.3
 ocaml/xapi/memory_check.ml |  51 ++++++++++++++++++++++++---------------------
 1 files changed, 27 insertions(+), 24 deletions(-)


# HG changeset patch
# User Matthias Goergens <matthias.goergens@xxxxxxxxxx>
# Date 1287674687 -3600
# Node ID bcef42a441473e7db163f0979f7903ce49ba6ede
# Parent  2dcda97ccb52332974cfbddd749b2b1063b623b3
imported patch ca-35152-fix-the-fix

diff --git a/ocaml/xapi/memory_check.ml b/ocaml/xapi/memory_check.ml
--- a/ocaml/xapi/memory_check.ml
+++ b/ocaml/xapi/memory_check.ml
@@ -62,6 +62,15 @@ type accounting_policy =
        | Dynamic_min
                (** use dynamic_min: liberal: assumes that guests always 
co-operate. *)
 
+(** Common logic of vm_compute_start_memory and vm_compute_used_memory *)
+let choose_memory_required ~policy ~ballooning_enabled ~memory_dynamic_min 
~memory_dynamic_max ~memory_static_max =
+       match (ballooning_enabled, policy) with
+               | (true, Dynamic_min) -> memory_dynamic_min
+               | (true, Dynamic_max) -> memory_dynamic_max
+               | (false, Dynamic_min)
+               | (false, Dynamic_max)
+               | (_, Static_max) -> memory_static_max
+
 (** Calculates the amount of memory required in both 'normal' and 'shadow'
 memory, to start a VM. If the given VM is a PV guest and if memory ballooning
 is enabled, this function returns values derived from the VM's dynamic memory
@@ -70,40 +79,34 @@ ballooning is not enabled or if the VM i
 values derived from the VM's static memory maximum (since currently HVM guests
 are not able to start in a pre-ballooned state). *)
 let vm_compute_start_memory ~__context ?(policy=Dynamic_min) vm_record =
-       if Xapi_fist.disable_memory_checks () then (0L, 0L) else
-       let ballooning_enabled =
-               Helpers.ballooning_enabled_for_vm ~__context vm_record in
-       let memory_static_max = vm_record.API.vM_memory_static_max in
-       let memory_dynamic_min = vm_record.API.vM_memory_dynamic_min in
-       let memory_dynamic_max = vm_record.API.vM_memory_dynamic_max in
-
-       let memory_required = match (ballooning_enabled, policy) with
-               | (true, Dynamic_min) -> memory_dynamic_min
-               | (true, Dynamic_max) -> memory_dynamic_max
-               | (_, _) -> memory_dynamic_max in
-       vm_compute_required_memory vm_record
-               (Memory.kib_of_bytes_used memory_required)
+       if Xapi_fist.disable_memory_checks ()
+       then (0L, 0L)
+       else
+               let memory_required = choose_memory_required
+                       ~policy: policy
+                       ~ballooning_enabled: (Helpers.ballooning_enabled_for_vm 
~__context vm_record)
+                       ~memory_dynamic_min: vm_record.API.vM_memory_dynamic_min
+                       ~memory_dynamic_max: vm_record.API.vM_memory_dynamic_max
+                       ~memory_static_max:  vm_record.API.vM_memory_static_max 
in
+               vm_compute_required_memory vm_record
+                       (Memory.kib_of_bytes_used memory_required)
 
 (** Calculates the amount of memory required in both 'normal' and 'shadow'
 memory, for a running VM. If the VM is currently subject to a memory balloon
 operation, this function returns the maximum amount of memory that the VM will
 need between now, and the point in future time when the operation completes. *)
-(* ToDo: Refactor out common functionality of vm_compute_used_memory and 
vm_compute_start_memory. *)
 let vm_compute_used_memory ~__context policy vm_ref =
        if Xapi_fist.disable_memory_checks () then 0L else
        let vm_main_record = Db.VM.get_record ~__context ~self:vm_ref in
        let vm_boot_record = Helpers.get_boot_record ~__context ~self:vm_ref in
-       let memory_static_max = vm_boot_record.API.vM_memory_static_max in
-       let memory_dynamic_min = vm_main_record.API.vM_memory_dynamic_min in
-       (* ToDo: Is vm_main_record or vm_boot_record the right thing here? *)
-       let memory_dynamic_max = vm_main_record.API.vM_memory_dynamic_max in
 
-       let ballooning_enabled =
-               Helpers.ballooning_enabled_for_vm ~__context vm_boot_record in
-       let memory_required = match (ballooning_enabled, policy) with
-               | (true, Dynamic_min) -> memory_dynamic_min
-               | (true, Dynamic_max) -> memory_dynamic_max
-               | (_, _) -> memory_dynamic_max in
+       let memory_required = choose_memory_required
+               ~policy: policy
+               ~ballooning_enabled: (Helpers.ballooning_enabled_for_vm 
~__context vm_boot_record)
+               ~memory_dynamic_min: vm_main_record.API.vM_memory_dynamic_min
+               (* ToDo: Is vm_main_record or vm_boot_record the right thing 
for dynamic_max? *)
+               ~memory_dynamic_max: vm_main_record.API.vM_memory_dynamic_max 
+               ~memory_static_max:  vm_boot_record.API.vM_memory_static_max in
        memory_required +++ vm_main_record.API.vM_memory_overhead
 
 let vm_compute_resume_memory ~__context vm_ref =
_______________________________________________
xen-api mailing list
xen-api@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/mailman/listinfo/xen-api
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-API] [PATCH] imported patch ca-35152-fix-the-fix, Matthias Goergens <=