On Thu, Dec 10, 2015 at 20:26:31 +0530, Shivaprasad G Bhat wrote: > As of now, the cur_ballon is set to actual memory if not specified by the user. > When the user specified memory is not aligned the cur_balloon alone ends up > unaligned. For qemu in function qemuDomainAttachMemory(), the cur_balloon > wouldn't add up to the actual memory as the cur_ballon was not aligned. > So, there is need for explicit setmem post attach-device for such guests. > > The decision as to whether to align the cur_balloon memory or not is > not possible if we set it to actual memory by default in post-parse. > Move the default cur_balloon assignment to their respective drivers during > domain start wherever possible. For qemu align the cur_balloon too iow assign > the aligned actual memory when not specified by the user. > > Signed-off-by: Shivaprasad G Bhat <sbhat@xxxxxxxxxxxxxxxxxx> > --- Sorry for the delay. I was on christmas hollidays and I'm catching up with stuff that nappened earlier. > src/conf/domain_conf.c | 3 +-- > src/libxl/libxl_conf.c | 2 ++ > src/lxc/lxc_process.c | 3 +++ > src/openvz/openvz_driver.c | 13 +++++++------ > src/phyp/phyp_driver.c | 10 +++------- > src/qemu/qemu_domain.c | 3 +++ > src/uml/uml_conf.c | 3 +++ > src/vbox/vbox_common.c | 3 +++ > src/vmx/vmx.c | 3 +++ > src/vz/vz_sdk.c | 3 +++ > src/xenconfig/xen_common.c | 3 +++ > src/xenconfig/xen_sxpr.c | 4 ++++ > 12 files changed, 38 insertions(+), 15 deletions(-) So at first: This breaks lxcconf2xmltest: TEST: lxcconf2xmltest !.!!!!!!!!!! 12 FAIL > > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > index 2f5c0ed..68338f4 100644 > --- a/src/conf/domain_conf.c > +++ b/src/conf/domain_conf.c > @@ -3527,8 +3527,7 @@ virDomainDefPostParseMemory(virDomainDefPtr def, > return -1; > } > > - if (def->mem.cur_balloon > virDomainDefGetMemoryActual(def) || > - def->mem.cur_balloon == 0) > + if (def->mem.cur_balloon > virDomainDefGetMemoryActual(def)) > def->mem.cur_balloon = virDomainDefGetMemoryActual(def); It probably would be better to add a bool that signalizes that this field was not provided by the user (at the point where cur_balloon gets parsed) and then just modify the qemu code when starting to override the number. > > if ((def->mem.max_memory || def->mem.memory_slots) && > diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c > index 4eed5ca..6b6e764 100644 > --- a/src/libxl/libxl_conf.c > +++ b/src/libxl/libxl_conf.c > @@ -665,6 +665,8 @@ libxlMakeDomBuildInfo(virDomainDefPtr def, > } > b_info->sched_params.weight = 1000; > b_info->max_memkb = virDomainDefGetMemoryInitial(def); > + if (!def->mem.cur_balloon) > + def->mem.cur_balloon = virDomainDefGetMemoryInitial(def); You then won't have to change any other driver, while making it work for qemu. Additionally it will not break the lxc test. > b_info->target_memkb = def->mem.cur_balloon; > if (hvm) { > char bootorder[VIR_DOMAIN_BOOT_LAST + 1];
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list