]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Don't try to use hugepages if not enabled
authorMichal Privoznik <mprivozn@redhat.com>
Wed, 14 Jun 2017 08:40:20 +0000 (10:40 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 14 Jun 2017 14:47:14 +0000 (16:47 +0200)
https://bugzilla.redhat.com/show_bug.cgi?id=1214369

My fix 671d18594f4 was incomplete. If domain doesn't have
hugepages enabled, because of missing condition we would still be
putting hugepages path onto qemu cmd line. Clean up the
conditions so that it's more visible next time.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_command.c
tests/qemuxml2argvdata/qemuxml2argv-cpu-numa-memshared.args [new file with mode: 0644]
tests/qemuxml2argvtest.c

index 3e1552a1b593fb9ec0267a97193ef4ac3c54aaaa..8c12b2be086a565f11404facc8078b30dde70720 100644 (file)
@@ -3410,19 +3410,19 @@ qemuBuildMemoryBackendStr(virJSONValuePtr *backendProps,
         def->mem.source == VIR_DOMAIN_MEMORY_SOURCE_FILE) {
         *backendType = "memory-backend-file";
 
-        if (mem->nvdimmPath) {
+        if (pagesize) {
+            if (qemuGetDomainHupageMemPath(def, cfg, pagesize, &memPath) < 0)
+                goto cleanup;
+            prealloc = true;
+        } else if (mem->nvdimmPath) {
             if (VIR_STRDUP(memPath, mem->nvdimmPath) < 0)
                 goto cleanup;
             prealloc = true;
-        } else if (!pagesize && def->mem.source == VIR_DOMAIN_MEMORY_SOURCE_FILE) {
+        } else {
             /* We can have both pagesize and mem source. If that's the case,
              * prefer hugepages as those are more specific. */
             if (VIR_STRDUP(memPath, cfg->memoryBackingDir) < 0)
                 goto cleanup;
-        } else {
-            if (qemuGetDomainHupageMemPath(def, cfg, pagesize, &memPath) < 0)
-                goto cleanup;
-            prealloc = true;
         }
 
         if (virJSONValueObjectAdd(props,
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-numa-memshared.args b/tests/qemuxml2argvdata/qemuxml2argv-cpu-numa-memshared.args
new file mode 100644 (file)
index 0000000..cceffce
--- /dev/null
@@ -0,0 +1,26 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/home/test \
+USER=test \
+LOGNAME=test \
+QEMU_AUDIO_DRV=none \
+/usr/bin/qemu-system-x86_64 \
+-name QEMUGuest1 \
+-S \
+-M pc \
+-m 214 \
+-smp 16,sockets=2,cores=4,threads=2 \
+-object memory-backend-file,id=ram-node0,mem-path=/var/lib/libvirt/qemu/ram,\
+share=yes,size=112197632 \
+-numa node,nodeid=0,cpus=0-7,memdev=ram-node0 \
+-object memory-backend-file,id=ram-node1,mem-path=/var/lib/libvirt/qemu/ram,\
+share=no,size=112197632 \
+-numa node,nodeid=1,cpus=8-15,memdev=ram-node1 \
+-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+-nographic \
+-nodefaults \
+-monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \
+-no-acpi \
+-boot n \
+-usb \
+-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3
index 43d3f1bd3973575ca9a3518cd3eadd35a1b62c0e..799aea9faf54b98913b60b8b98005e86d466866a 100644 (file)
@@ -1541,6 +1541,7 @@ mymain(void)
     DO_TEST("cpu-numa-disjoint", QEMU_CAPS_NUMA);
     DO_TEST_FAILURE("cpu-numa-memshared", QEMU_CAPS_OBJECT_MEMORY_RAM);
     DO_TEST_FAILURE("cpu-numa-memshared", NONE);
+    DO_TEST("cpu-numa-memshared", QEMU_CAPS_OBJECT_MEMORY_FILE);
     DO_TEST("cpu-host-model", NONE);
     DO_TEST("cpu-host-model-vendor", NONE);
     skipLegacyCPUs = true;