Bug 1554876
| Summary: | Device alias for input device do not take effect when hot-plugging | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | jiyan <jiyan> |
| Component: | libvirt | Assignee: | Michal Privoznik <mprivozn> |
| Status: | CLOSED ERRATA | QA Contact: | jiyan <jiyan> |
| Severity: | unspecified | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 7.5 | CC: | dyuan, jdenemar, jiyan, mprivozn, xuzhang |
| Target Milestone: | rc | Keywords: | Upstream |
| Target Release: | --- | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | libvirt-4.3.0-1.el7 | Doc Type: | If docs needed, set a value |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2018-10-30 09:53:14 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: | |||
I've just pushed the patch upstream:
commit a02a52751f72a1abac7d1024ecc3fcdb8b61a050
Author: Michal Privoznik <mprivozn>
AuthorDate: Tue Mar 13 13:01:11 2018 +0100
Commit: Michal Privoznik <mprivozn>
CommitDate: Tue Mar 13 15:17:19 2018 +0100
qemuAssignDeviceInputAlias: Be tolerant to pre-existent alias
https://bugzilla.redhat.com/show_bug.cgi?id=1554876
This is missing in 6bc4a371cf and therefore we are effectively
overwriting user provided aliases for <input/> devices.
Signed-off-by: Michal Privoznik <mprivozn>
v4.1.0-117-ga02a52751
Verified this bug in 'libvirt-4.3.0-1.el7.x86_64'
Version:
libvirt-4.3.0-1.el7.x86_64
qemu-kvm-rhev-2.10.0-21.el7_5.3.x86_64
kernel-3.10.0-893.el7.x86_64
Steps:
1. Prepare a shutdown VM with default configuration for input device, and the following 5 files
# virsh domstate test1
shut off
# virsh dumpxml test1 |grep "<input"
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
# cat *.xml
<input type='passthrough' bus='virtio'>
<source evdev='/dev/input/event0'/>
<alias name='ua-cf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
</input>
<input type='keyboard' bus='usb'>
<alias name='ua-usbkeyboardcf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
</input>
<input type='mouse' bus='usb'>
<alias name='ua-usbmousecf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
</input>
<input type='keyboard' bus='virtio'>
<alias name='ua-virtiokeyboardcf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
</input>
<input type='mouse' bus='virtio'>
<alias name='ua-virtiomousecf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
</input>
2. Cold-plug the 5 files above to VM -- Cold-plugging cmd returns successful
# for i in *.xml; do virsh attach-device test1 $i --config; done
Device attached successfully
Device attached successfully
Device attached successfully
Device attached successfully
Device attached successfully
3. Checking inactive xml whether the alias still exists (VM is down) -- exists
# virsh dumpxml test1 |grep "<input" -A3
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<input type='passthrough' bus='virtio'>
<source evdev='/dev/input/event0'/>
<alias name='ua-cf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</input>
<input type='keyboard' bus='usb'>
<alias name='ua-usbkeyboardcf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
<address type='usb' bus='0' port='3'/>
</input>
<input type='mouse' bus='usb'>
<alias name='ua-usbmousecf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
<address type='usb' bus='0' port='4'/>
</input>
<input type='keyboard' bus='virtio'>
<alias name='ua-virtiokeyboardcf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</input>
<input type='mouse' bus='virtio'>
<alias name='ua-virtiomousecf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</input>
4. Start the VM, after running, Checking inactive xml whether the alias still exists (VM is up) -- exists
# virsh dumpxml test1 |grep "<input" -A3
<input type='mouse' bus='ps2'>
<alias name='input0'/>
</input>
<input type='keyboard' bus='ps2'>
<alias name='input1'/>
</input>
<input type='passthrough' bus='virtio'>
<source evdev='/dev/input/event0'/>
<alias name='ua-cf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</input>
<input type='keyboard' bus='usb'>
<alias name='ua-usbkeyboardcf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
<address type='usb' bus='0' port='3'/>
</input>
<input type='mouse' bus='usb'>
<alias name='ua-usbmousecf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
<address type='usb' bus='0' port='4'/>
</input>
<input type='keyboard' bus='virtio'>
<alias name='ua-virtiokeyboardcf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</input>
<input type='mouse' bus='virtio'>
<alias name='ua-virtiomousecf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</input>
5. Hot-unplug the 5 files in VM -- Hot-plugging cmd returns successful and no related xml info exists in active xml
# for i in *.xml; do virsh detach-device test1 $i; done
Device detached successfully
Device detached successfully
Device detached successfully
Device detached successfully
Device detached successfully
# virsh dumpxml test1 |grep "<input" -A3
<input type='mouse' bus='ps2'>
<alias name='input0'/>
</input>
<input type='keyboard' bus='ps2'>
<alias name='input1'/>
</input>
6. Hot-plug the 5 files to VM and check whether the alias still exists -- exists
# for i in *.xml; do virsh attach-device test1 $i; done
Device attached successfully
Device attached successfully
Device attached successfully
Device attached successfully
Device attached successfully
# virsh dumpxml test1 |grep "<input" -A3
<input type='mouse' bus='ps2'>
<alias name='input0'/>
</input>
<input type='keyboard' bus='ps2'>
<alias name='input1'/>
</input>
<input type='passthrough' bus='virtio'>
<source evdev='/dev/input/event0'/>
<alias name='ua-cf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</input>
<input type='keyboard' bus='usb'>
<alias name='ua-usbkeyboardcf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
<address type='usb' bus='0' port='3'/>
</input>
<input type='mouse' bus='usb'>
<alias name='ua-usbmousecf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
<address type='usb' bus='0' port='4'/>
</input>
<input type='keyboard' bus='virtio'>
<alias name='ua-virtiokeyboardcf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</input>
<input type='mouse' bus='virtio'>
<alias name='ua-virtiomousecf99c3a1-ed5c-4d68-898b-0d45bdb6913d'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</input>
All the results are as expected, move this bug to be 'verified'.
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://access.redhat.com/errata/RHSA-2018:3113 |
Description of problem: Device alias for input device do not take effect when hot-plugging Version: kernel-3.10.0-860.el7.x86_64 qemu-kvm-rhev-2.10.0-21.el7.x86_64 libvirt-3.9.0-14.virtcov.el7.x86_64 Steps: For Cold-plug: 1. Prepare a shutdown VM and a xml file describing input device # virsh domstate test1 shut off # virsh dumpxml test1 |grep "<input" <input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> # cat input-0.xml <input type='passthrough' bus='virtio'> <source evdev='/dev/input/event8'/> <alias name='ua-input0'/> </input> 2. Cold-plug input device to VM # virsh attach-device test1 input-0.xml --config Device attached successfully # virsh dumpxml test1 |grep "<input" -A4 <input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> <input type='passthrough' bus='virtio'> <source evdev='/dev/input/event8'/> <alias name='ua-input0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </input> 3. Start VM and check the dumpxml file ]# virsh start test1 Domain test1 started # virsh dumpxml test1 |grep "<input" -A4 <input type='mouse' bus='ps2'> <alias name='input0'/> </input> <input type='keyboard' bus='ps2'> <alias name='input1'/> </input> <input type='passthrough' bus='virtio'> <source evdev='/dev/input/event8'/> <alias name='input2'/> ****changed here**** <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </input> For Hot-plug: 4. Prepare a running VM and hot-plug input device # virsh domstate test1 running # virsh dumpxml test1 |grep "<input" <input type='mouse' bus='ps2'> <input type='keyboard' bus='ps2'> # cat input-0.xml <input type='passthrough' bus='virtio'> <source evdev='/dev/input/event8'/> <alias name='ua-input0'/> </input> 5. Hot-plug input device and check the dumpxml file # virsh attach-device test1 input-0.xml Device attached successfully # virsh dumpxml test1 |grep "<input" -A4 <input type='mouse' bus='ps2'> <alias name='input0'/> </input> <input type='keyboard' bus='ps2'> <alias name='input1'/> </input> <input type='passthrough' bus='virtio'> <source evdev='/dev/input/event8'/> <alias name='input2'/> ****changed here**** <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </input> Actual results: As step-3 and step-5 show Expected results: 'ua-' alias should take effect in dumpxml file Additional info: