Bug 1313272 - RFC: qemu: support redirdev hotunplug
RFC: qemu: support redirdev hotunplug
Status: NEW
Product: Virtualization Tools
Classification: Community
Component: libvirt (Show other bugs)
unspecified
Unspecified Unspecified
medium Severity medium
: ---
: ---
Assigned To: Libvirt Maintainers
LibvirtFirstBug
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2016-03-01 04:53 EST by Pei Zhang
Modified: 2016-04-20 19:47 EDT (History)
5 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed:
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Pei Zhang 2016-03-01 04:53:20 EST
Description of problem:
Since we already support attach redirdev, it's better to fix detach redirdev. 

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

How reproducible:
100%

Steps to Reproduce:
1.start a guest with redirdev

# virsh dumpxml vm1|grep redirdev -A 3
    <redirdev bus='usb' type='spicevmc'>
      <alias name='redir0'/>
    </redirdev>

2. prepare a redirdev xml like following

# cat usb-redir.xml 
<redirdev bus='usb' type='spicevmc'>
    </redirdev>

3.detach redirdev device

# virsh detach-device vm1 usb-redir.xml 
error: Failed to detach device from usb-redir.xml
error: Operation not supported: live detach of device 'redirdev' is not supported

# virsh detach-device vm1 usb-redir.xml --config
error: Failed to detach device from usb-redir.xml
error: Operation not supported: persistent detach of device 'redirdev' is not supported

Actual results:
As step3, fail to detach it.

Expected results:
It could be detached. 

Additional info:

using QMP to check :
before delete, using virt-viewer to open guest we could find that table "Redirect USB device" is useful. 
then we detach it via QMP
virsh # qemu-monitor-command vm1 --pretty '{"execute":"device_del","arguments":{"id":"redir0"}}'
{
    "return": {

    },
    "id": "libvirt-25"
}

Then using virt-viewer to open guest to check again, we will find that table "Redirect USB device" is gray and it cannot be used.So actually it could be detached.
Comment 1 Cole Robinson 2016-04-20 19:30:51 EDT
Fixing basically involves 2 places:

src/qemu/qemu_driver.c function qemuDomainDetachDeviceLive needs to handle REDIRDEV
a qemuDomainDetachRedirdevDevice function should be implemented in src/qemu/qemu_hotplug.c

The pattern to follow here is RNG devices and the qemuDomainDetachRNGDevice ... the actual qemu interaction logic will basically be identical, we just need to match that pattern and swap out the redirdev bits

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