Bug 1316384

Summary: libvirt report wrong error when parse vcpupin info
Product: Red Hat Enterprise Linux 7 Reporter: Luyao Huang <lhuang>
Component: libvirtAssignee: Peter Krempa <pkrempa>
Status: CLOSED ERRATA QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: 7.2CC: jishao, pkrempa, rbalakri
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: libvirt-1.3.3-1.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-11-03 18:39:09 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:

Description Luyao Huang 2016-03-10 06:54:06 UTC
Description of problem:
libvirt report wrong error when parse vcpupin info

Version-Release number of selected component (if applicable):
libvirt-1.3.2-1.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1. prepare a guest:
# virsh dumpxml rhel7.0-rhel

  <vcpu placement='static' current='3'>4</vcpu>

2. try to add vcpupin for vcpu 4 (should not exist here)
# virsh edit rhel7.0-rhel

  <vcpu placement='static' current='3'>4</vcpu>
+  <cputune>
+    <vcpupin vcpu='4' cpuset='1'/>
+  </cputune>

3.save this will get error:

# virsh edit rhel7.0-rhel
error: internal error: duplicate vcpupin for vcpu '4'
Failed. Try again? [y,n,i,f,?]: 


Actual results:
vcpupin vcpu number < maxvcpunumber  OK
vcpupin vcpu number = maxvcpunumber  strange error
vcpupin vcpu number > maxvcpunumber  config disappear (expect)

Expected results:

vcpupin vcpu number < maxvcpunumber  OK
vcpupin vcpu number >= maxvcpunumber  config disappear (expect)

Additional info:

I guess this is a boundary program

Comment 1 Luyao Huang 2016-03-10 07:16:09 UTC
Sorry, i found i filled to wrong place, it should be a bug on upstream.

and it should be a upstream libvirt bug.

# git describe 
v1.3.2-98-gadefc56

Comment 3 Peter Krempa 2016-03-10 13:04:34 UTC
Fixed upstream:

commit 8c7b7c4b0bb0d58dfb2e3dcdf1855a7dc9c858d0
Author: Peter Krempa <pkrempa@redhat.com>
Date:   Thu Mar 10 09:46:53 2016 +0100

    conf: Fix off-by-one in virDomainDefGetVcpu
    
    Cpus are indexed starting from '0' so the check was invalid.
    
    Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1316384
    Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1316420

v1.3.2-101-g8c7b7c4

Comment 4 Mike McCune 2016-03-28 23:19:36 UTC
This bug was accidentally moved from POST to MODIFIED via an error in automation, please see mmccune@redhat.com with any questions

Comment 6 Jingjing Shao 2016-08-09 05:50:34 UTC
Verify this bug as below

# rpm -q libvirt
libvirt-2.0.0-3.el7.x86_64

# virsh dumpxml r7.1
<vcpu placement='static' current='3'>4</vcpu>

(1)
vcpupin vcpu number < maxvcpunumber
add xml info as below to the guest xml
  <cputune>
    <vcpupin vcpu='3' cpuset='3'/>
  </cputune>

# virsh dumpxml  r7.2 | grep vcpu -A 4
  <vcpu placement='static' current='3'>4</vcpu>
  <cputune>
    <vcpupin vcpu='3' cpuset='3'/>
  </cputune>

(2)vcpupin vcpu number = maxvcpunumber
add xml info as below to the guest xml
  <cputune>
    <vcpupin vcpu='4' cpuset='3'/>
  </cputune>


# virsh dumpxml  r7.2 | grep vcpu -A 4
  <vcpu placement='static' current='3'>4</vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-rhel7.2.0'>hvm</type>
    <boot dev='hd'/>
  </os>

(3)vcpupin vcpu number > maxvcpunumber
add xml info as below to the guest xml
   <cputune>
    <vcpupin vcpu='5' cpuset='3'/>
  </cputune>

# virsh dumpxml  r7.2 | grep vcpu -A 4
  <vcpu placement='static' current='3'>4</vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-rhel7.2.0'>hvm</type>
    <boot dev='hd'/>
  </os>

The results are as expect. so change the status to verified

Comment 8 errata-xmlrpc 2016-11-03 18:39:09 UTC
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