Bug 1126685

Summary: Failed to start domain with specified cputune after decreasing vcpu number
Product: Red Hat Enterprise Linux 6 Reporter: hongming <honzhang>
Component: libvirtAssignee: Peter Krempa <pkrempa>
Status: CLOSED WONTFIX QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 6.6CC: dyuan, jmiao, mzhan, rbalakri
Target Milestone: rcKeywords: Upstream
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 1129372 (view as bug list) Environment:
Last Closed: 2015-01-20 09:15:38 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
libvirtd debug log
none
guest qemu log none

Description hongming 2014-08-05 05:27:12 UTC
Description of problem:
Failed to start domain with specified cputune and cpuset . 

Version-Release number of selected component (if applicable):
libvirt-0.10.2-42.el6.x86_64
kernel-2.6.32-486.el6.x86_64
qemu-kvm-0.12.1.2-2.427.el6.x86_64

How reproducible:
100%

Steps to Reproduce:
# virsh dumpxml r6.5|grep cpu
  <vcpu placement='static' cpuset='0-1'>4</vcpu>

# virsh setvcpus r6.5 1 --maximum --config

# virsh destroy r6.5
Domain r6.5 destroyed

# virsh dumpxml r6.5|grep cpu
  <vcpu placement='static' cpuset='0-1'>1</vcpu>

# virsh start r6.5
error: Failed to start domain r6.5
error: cannot set CPU affinity on process 32722: No such process


Actual results:
Failed to start domain with specified cputune and cpuset

Expected results:
Successfully start the domain

Additional info:

Comment 2 hongming 2014-08-05 05:32:51 UTC
Created attachment 924091 [details]
libvirtd debug log

Comment 3 hongming 2014-08-05 05:33:29 UTC
Created attachment 924092 [details]
guest qemu log

Comment 5 Peter Krempa 2014-08-18 15:52:31 UTC
Fixed with:

commit 482f4e596fcecff7a9b6ca3ee2b946acfdaf0823
Author: Peter Krempa <pkrempa>
Date:   Fri Aug 15 16:41:47 2014 +0200

    qemu: process: Pin on per-vcpu basis instead of per-vcpupin element
    
    Pin existing vcpus rather than existing vcpu pinning infos. This
    increases the complexity of the lookup, but avoids pinning cpus that are
    not enabled actually.

commit 60df621f75af6e29d721d95a738c8860eed5590e
Author: Peter Krempa <pkrempa>
Date:   Fri Aug 15 16:28:58 2014 +0200

    qemu: cpu: unplug: Remove vcpu pinning on cold cpu unplug
    
    Remove the pinning info when removing to CPU, otherwise when the VM will
    be started our code will try to pin non-existing vcpus as the definition
    wasn't updated.
    
    Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1129372

commit 64bbf4c33d8ad6b5ade5d538d79d15d4cae27a15
Author: Peter Krempa <pkrempa>
Date:   Thu Aug 14 14:38:06 2014 +0200

    conf: Refactor virDomainVcpuPinDefParseXML
    
    Tidy up control flow, change boolean argument to use 'bool', improve
    error message in case the function is used to parse emulator pinning
    info and avoid a few temp variables that made no sense.
    
    Also when the function is called to parse emulator pinning info, there's
    no need to check the processor ID in that case.

commit cb8a94bfa037b12b1c1896bd3c02f5bf6746d9e1
Author: Peter Krempa <pkrempa>
Date:   Thu Aug 14 14:20:37 2014 +0200

    conf: cpupin: Remove useless checking of vcpupin element count
    
    The check doesn't make much sense as right below it the entries are
    either checked for duplicity or ignored in some cases. Having this check
    doesn't actually forbid passing invalid values.

v1.2.7-150-g482f4e5