On Thu, Mar 05, 2015 at 16:10:30 +0100, Pavel Hrdina wrote:
There was a mess in the way how we store unlimited value for memory
limits and how we handled values provided by user. Internally there
were two possible ways how to store unlimited value: as 0 value or as
VIR_DOMAIN_MEMORY_PARAM_UNLIMITED. Because we chose to store memory
limits as unsigned long long, we cannot use -1 to represent unlimited.
It's much easier for us to say that everything greater than
VIR_DOMAIN_MEMORY_PARAM_UNLIMITED means unlimited and leave 0 as valid
value despite that it makes no sense to set limit to 0.
Remove unnecessary function virCompareLimitUlong. The update of test
is to prevent the 0 to be miss-used as unlimited in future.
Resolves:
https://bugzilla.redhat.com/show_bug.cgi?id=1146539
Signed-off-by: Pavel Hrdina <phrdina(a)redhat.com>
---
docs/formatdomain.html.in | 4 +-
src/conf/domain_conf.c | 75 +++++++++++++++++-----
src/libvirt-domain.c | 3 +
src/libvirt_private.syms | 1 -
src/lxc/lxc_cgroup.c | 18 +++---
src/lxc/lxc_driver.c | 7 +-
src/lxc/lxc_fuse.c | 12 ++--
src/lxc/lxc_native.c | 6 +-
src/openvz/openvz_conf.c | 4 +-
src/openvz/openvz_driver.c | 4 +-
src/qemu/qemu_cgroup.c | 24 +++----
src/qemu/qemu_command.c | 8 ++-
src/qemu/qemu_driver.c | 10 +--
src/qemu/qemu_hotplug.c | 2 +-
src/qemu/qemu_migration.c | 5 +-
src/util/virutil.c | 23 -------
src/util/virutil.h | 2 -
tests/qemuxml2argvdata/qemuxml2argv-memtune.xml | 2 +-
.../qemuxml2xmloutdata/qemuxml2xmlout-memtune.xml | 2 +-
19 files changed, 118 insertions(+), 94 deletions(-)
...
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 20e40aa..782c13c 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -2986,7 +2986,8 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
QEMU_MIGRATION_COOKIE_NBD)))
goto cleanup;
- if (STREQ_NULLABLE(protocol, "rdma") &&
!vm->def->mem.hard_limit) {
+ if (STREQ_NULLABLE(protocol, "rdma") &&
+ virMemoryLimitIsSet(vm->def->mem.hard_limit)) {
You negated the condition above when adding the helper ...
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
_("cannot start RDMA migration with no memory hard "
"limit set"));
@@ -4102,7 +4103,7 @@ static int doNativeMigrate(virQEMUDriverPtr driver,
"with this QEMU binary"));
goto cleanup;
}
- if (!vm->def->mem.hard_limit) {
+ if (virMemoryLimitIsSet(vm->def->mem.hard_limit)) {
... here too.
virReportError(VIR_ERR_OPERATION_INVALID,
"%s",
_("cannot start RDMA migration with no memory hard
"
"limit set"));
ACK if you fix the two conditions above.
Peter