Red Hat Bugzilla – Bug 1290324
libvirt should forbid set current cpu is 0 in xml
Last modified: 2016-11-03 14:49:33 EDT
Description of problem: libvirt should forbid set current cpu to 0 Version-Release number of selected component (if applicable): libvirt-1.2.17-13.el7_2.2.x86_64 How reproducible: 100% Steps to Reproduce: 1. prepare a inactive guest: # virsh list --all Id Name State ---------------------------------------------------- - RHEL71-lhuang-novhost shut off 2. edit guest xml and make current cpu to 0: <vcpu placement='static' current='0'>16</vcpu> # virsh edit RHEL71-lhuang-novhost error: XML document failed to validate against schema: Unable to validate doc against /usr/share/libvirt/schemas/domain.rng Extra element vcpu in interleave Invalid sequence in interleave Element domain failed to validate content Failed. Try again? [y,n,i,f,?]: Domain RHEL71-lhuang-novhost XML configuration edited. 3. check xml: # virsh dumpxml RHEL71-lhuang-novhost | grep current <currentMemory unit='KiB'>1153433</currentMemory> <vcpu placement='static' current='0'>16</vcpu> 4. try to start this guest: # virsh start RHEL71-lhuang-novhost error: Failed to start domain RHEL71-lhuang-novhost error: internal error: got wrong number of vCPU pids from QEMU monitor. got 16, wanted 0 5. try some command: # virsh vcpupin RHEL71-lhuang-novhost error: ncpumaps in virDomainGetVcpuPinInfo must be greater than zero # virsh vcpuinfo RHEL71-lhuang-novhost error: ncpumaps in virDomainGetVcpuPinInfo must be greater than zero Actual results: libvirt allow set current vcpu to 0, but it doesn't make sense Expected results: forbid it Additional info:
commit b3c91b8a50ac0d772f883e737252202d48658139 Author: Peter Krempa <pkrempa@redhat.com> Date: Wed Jan 6 16:27:45 2016 +0100 qemu: process: Disallow VMs with 0 vcpus Counterintuitively the user would end up with a VM with maximum number of vCPUs available. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1290324 v1.3.1-44-gb3c91b8
Verify this bug with libvirt-2.0.0-4.el7.x86_64: 1. edit guest with current vcpu = 0: # virsh dumpxml r7 |grep current= <vcpu placement='static' current='0'>10</vcpu> 2. try to start guest and libvirt report an error: # virsh start r7 error: Failed to start domain r7 error: unsupported configuration: Domain requires at least 1 vCPU 3. try other command: # virsh vcpucount r7 maximum config 10 # virsh vcpuinfo r7 error: ncpumaps in virDomainGetVcpuPinInfo must be greater than zero # virsh vcpupin r7 VCPU: CPU Affinity ---------------------------------- 0: 0-23 1: 0-23 2: 0-23 3: 0-23 4: 0-23 5: 0-23 6: 0-23 7: 0-23 8: 0-23 9: 0-23
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHSA-2016-2577.html