From fb2a8ad55d2d01c3450ae43640fd3baa41667871 Mon Sep 17 00:00:00 2001 Message-Id: From: Martin Kletzander Date: Tue, 10 Dec 2013 10:03:58 +0100 Subject: [PATCH] conf: don't format memtune with unlimited values https://bugzilla.redhat.com/show_bug.cgi?id=1024272 When changing memtune limits to unlimited with AFFECT_CONFIG, the values in virDomainDef are set to PARAM_UNLIMITED, which causes the whole to be formatted. This can be changed in all drivers, but it also makes sense to use the default (0) as another value for "unlimited", since zero memory limit makes no sense. Signed-off-by: Martin Kletzander (cherry picked from commit ea130e3bf666397a05a674ffcf15b9ab170b2255) Signed-off-by: Jiri Denemark --- src/conf/domain_conf.c | 44 ++++++++++++---------- .../qemuxml2argv-memtune-unlimited.args | 6 +++ .../qemuxml2argv-memtune-unlimited.xml | 29 ++++++++++++++ tests/qemuxml2argvtest.c | 1 + .../qemuxml2xmlout-memtune-unlimited.xml | 27 +++++++++++++ tests/qemuxml2xmltest.c | 1 + 6 files changed, 88 insertions(+), 20 deletions(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-memtune-unlimited.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-memtune-unlimited.xml create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-memtune-unlimited.xml diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 6048640..f7c0274 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -16439,28 +16439,32 @@ virDomainDefFormatInternal(virDomainDefPtr def, } /* add memtune only if there are any */ - if (def->mem.hard_limit || def->mem.soft_limit || def->mem.min_guarantee || - def->mem.swap_hard_limit) + if ((def->mem.hard_limit && + def->mem.hard_limit != VIR_DOMAIN_MEMORY_PARAM_UNLIMITED) || + (def->mem.soft_limit && + def->mem.hard_limit != VIR_DOMAIN_MEMORY_PARAM_UNLIMITED) || + (def->mem.swap_hard_limit && + def->mem.hard_limit != VIR_DOMAIN_MEMORY_PARAM_UNLIMITED) || + def->mem.min_guarantee) { virBufferAddLit(buf, " \n"); - if (def->mem.hard_limit) { - virBufferAsprintf(buf, " " - "%llu\n", def->mem.hard_limit); - } - if (def->mem.soft_limit) { - virBufferAsprintf(buf, " " - "%llu\n", def->mem.soft_limit); - } - if (def->mem.min_guarantee) { - virBufferAsprintf(buf, " " - "%llu\n", def->mem.min_guarantee); - } - if (def->mem.swap_hard_limit) { - virBufferAsprintf(buf, " " - "%llu\n", def->mem.swap_hard_limit); - } - if (def->mem.hard_limit || def->mem.soft_limit || def->mem.min_guarantee || - def->mem.swap_hard_limit) + if (def->mem.hard_limit) { + virBufferAsprintf(buf, " " + "%llu\n", def->mem.hard_limit); + } + if (def->mem.soft_limit) { + virBufferAsprintf(buf, " " + "%llu\n", def->mem.soft_limit); + } + if (def->mem.min_guarantee) { + virBufferAsprintf(buf, " " + "%llu\n", def->mem.min_guarantee); + } + if (def->mem.swap_hard_limit) { + virBufferAsprintf(buf, " " + "%llu\n", def->mem.swap_hard_limit); + } virBufferAddLit(buf, " \n"); + } if (def->mem.hugepage_backed || def->mem.nosharepages || def->mem.locked) { virBufferAddLit(buf, " \n"); diff --git a/tests/qemuxml2argvdata/qemuxml2argv-memtune-unlimited.args b/tests/qemuxml2argvdata/qemuxml2argv-memtune-unlimited.args new file mode 100644 index 0000000..5bbde17 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-memtune-unlimited.args @@ -0,0 +1,6 @@ +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test \ +/usr/bin/qemu \ +-name QEMUGuest1 -S -M pc -m 214 -smp 1 -nographic -monitor \ +unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -usb \ +-hda /dev/HostVG/QEMUGuest1 -net none -serial \ +none -parallel none diff --git a/tests/qemuxml2argvdata/qemuxml2argv-memtune-unlimited.xml b/tests/qemuxml2argvdata/qemuxml2argv-memtune-unlimited.xml new file mode 100644 index 0000000..526129b --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-memtune-unlimited.xml @@ -0,0 +1,29 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 214 + 219136 + + 9007199254740991 + + 1 + + hvm + + + + destroy + restart + destroy + + /usr/bin/qemu + + + +
+ + + + + + diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 3042065..1beb49f 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -916,6 +916,7 @@ mymain(void) QEMU_CAPS_KVM, QEMU_CAPS_CPU_HOST); DO_TEST("memtune", QEMU_CAPS_NAME); + DO_TEST("memtune-unlimited", QEMU_CAPS_NAME); DO_TEST("blkiotune", QEMU_CAPS_NAME); DO_TEST("blkiotune-device", QEMU_CAPS_NAME); DO_TEST("cputune", QEMU_CAPS_NAME); diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-memtune-unlimited.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-memtune-unlimited.xml new file mode 100644 index 0000000..1d29fa7 --- /dev/null +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-memtune-unlimited.xml @@ -0,0 +1,27 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 219136 + 1 + + hvm + + + + destroy + restart + destroy + + /usr/bin/qemu + + + +
+ + + + + + + diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 6b984ad..4b6b01d 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -244,6 +244,7 @@ mymain(void) DO_TEST("encrypted-disk"); DO_TEST_DIFFERENT("memtune"); + DO_TEST_DIFFERENT("memtune-unlimited"); DO_TEST("blkiotune"); DO_TEST("blkiotune-device"); DO_TEST("cputune"); -- 1.8.5.1