Bug 1251886

Summary: virDomainAddIOThread allow add iothread 0 which make guest have a broken settings
Product: Red Hat Enterprise Linux 7 Reporter: Luyao Huang <lhuang>
Component: libvirtAssignee: John Ferlan <jferlan>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.2CC: dyuan, hhan, honzhang, jferlan, mzhan, rbalakri
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: libvirt-1.2.17-6.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-11-19 06:50:35 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:

Description Luyao Huang 2015-08-10 08:42:05 UTC
Description of problem:
virDomainAddIOThread allow add iothread 0 which make guest have a broken settings

Version-Release number of selected component (if applicable):

libvirt-1.2.17-4.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1. prepare a guest
# virsh list 
 Id    Name                           State
----------------------------------------------------
 343   rhel7.0-rhel                   running


2. use python function addIOThread to add iothread 0:

# python
Python 2.7.5 (default, Sep  4 2014, 05:34:58) 
[GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import libvirt
>>> conn=libvirt.open()
>>> dom=conn.lookupByName("rhel7.0-rhel")
>>> dom.addIOThread(0)
0

3.
# virsh iothreadinfo rhel7.0-rhel
 IOThread ID     CPU Affinity   
---------------------------------------------------
 1               0-3
 2               0,2-3
 3               0-3
 0               0-3

4. restart libvirtd

# service libvirtd restart
Redirecting to /bin/systemctl restart  libvirtd.service

# virsh list 
 Id    Name                           State
----------------------------------------------------

and can find log in libvirtd.log:

2015-08-10 08:39:13.111+0000: 19847: error : virDomainIOThreadIDDefParseXML:13882 : XML error: invalid iothread 'id' value '0'


Actual results:
virDomainAddIOThread allow add iothread 0 which make guest have a broken settings


Expected results:
forbid add iothread 0 like deliotread

Additional info:

Comment 1 John Ferlan 2015-08-13 15:14:09 UTC
Posted some patches upstream:

http://www.redhat.com/archives/libvir-list/2015-August/msg00585.html

Comment 4 Han Han 2015-09-11 09:01:58 UTC
Hi John, I can reproduce the bug on libvirt-1.2.17-4.el7.x86_64
Verify it on libvirt-1.2.17-8.el7.x86_64


Steps to verify:
1. Prepare a runing guest
# virsh list
 Id    Name                           State
----------------------------------------------------
 13    t40                            running

2. Use python function addIOThread to add iothread 0:
# python
>>> import libvirt
>>> conn=libvirt.open()
>>> dom=conn.lookupByName("t40")
>>> dom.addIOThread(0)
libvirt: QEMU Driver error : invalid argument: invalid value of 0 for iothread_id
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/site-packages/libvirt.py", line 515, in addIOThread
    if ret == -1: raise libvirtError ('virDomainAddIOThread() failed', dom=self)
libvirt.libvirtError: invalid argument: invalid value of 0 for iothread_id

3. Check iothreadinfo
# virsh iothreadinfo t40
No IOThreads found for the domain

4. Restart libvirtd and check virsh list
# systemctl restart libvirtd
# virsh list                          
 Id    Name                           State
----------------------------------------------------
 15    t40                            running

Comment 6 errata-xmlrpc 2015-11-19 06:50:35 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/RHBA-2015-2202.html