This fix prevents the subsequent domain build from failing due to an artificially low maxmem.
Signed-off-by: Jonathan Knowles <jonathan.knowles@eu.citrix.com>
Acked-by: Jonathan Ludlam <jonathan.ludlam@eu.citrix.com>
Acked-by: Dave Scott <dave.scott@eu.citrix.com>
let set_maxmem_noexn (xc, xs) domid m =
let per_domain = get_per_domain (xc, xs) domid in
if per_domain.maxmem <> m then begin
- debug "Xc.domain_setmaxmem domid=%d max=%Ld" domid m;
+ debug "Xc.domain_setmaxmem domid=%d max=%Ld (was=%Ld)" domid m per_domain.maxmem;
try
Xc.domain_setmaxmem xc domid m;
per_domain.maxmem <- m
with e ->
- error "Xc.domain_setmaxmem domid=%d max=%Ld: %s" domid m (Printexc.to_string e)
+ error "Xc.domain_setmaxmem domid=%d max=%Ld: (was=%Ld) %s" domid m per_domain.maxmem (Printexc.to_string e)
end
(** Read a particular domain's key, using the cache *)
let kib = xs.Xs.read (reservation_path _service session_id reservation_id) in
(* This code is single-threaded, no need to make this transactional: *)
xs.Xs.write (xs.Xs.getdomainpath domid ^ "/memory/initial-reservation") kib;
+ maybe
+ (fun maxmem -> Squeeze_xen.Domain.set_maxmem_noexn (xc, xs) domid maxmem)
+ (try Some (Int64.of_string kib) with _ -> None);
del_reservation xs _service session_id reservation_id;
[]
)