From ea130e3bf666397a05a674ffcf15b9ab170b2255 Mon Sep 17 00:00:00 2001 From: Martin Kletzander Date: Mon, 9 Dec 2013 11:32:48 +0100 Subject: [PATCH] conf: don't format memtune with unlimited values 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 --- 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 b76cf26ac8..e0ab4b16a5 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -16643,28 +16643,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 0000000000..8bef546466 --- /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 QEMU_AUDIO_DRV=none \ +/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 0000000000..526129b767 --- /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 f9abf1bb49..f75e457c65 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1126,6 +1126,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 0000000000..1d29fa79c1 --- /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 ceaaf6a591..2a9849ce92 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -247,6 +247,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");