Bug 1316384 - libvirt report wrong error when parse vcpupin info
Summary: libvirt report wrong error when parse vcpupin info
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: libvirt
Version: 7.2
Hardware: x86_64
OS: Linux
medium
medium
Target Milestone: rc
: ---
Assignee: Peter Krempa
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2016-03-10 06:54 UTC by Luyao Huang
Modified: 2016-11-03 18:39 UTC (History)
3 users (show)

Fixed In Version: libvirt-1.3.3-1.el7
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2016-11-03 18:39:09 UTC
Target Upstream Version:


Attachments (Terms of Use)


Links
System ID Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2016:2577 normal SHIPPED_LIVE Moderate: libvirt security, bug fix, and enhancement update 2016-11-03 12:07:06 UTC

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


Note You need to log in before you can comment on or make changes to this bug.