Bug 1554928
Summary: | 'update-device' with alias in disk did not work actually and 'cold-plug' device with alias to running VM will fail in dumpxml file [rhel-7.5.z] | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Oneata Mircea Teodor <toneata> |
Component: | libvirt | Assignee: | Michal Privoznik <mprivozn> |
Status: | CLOSED ERRATA | QA Contact: | jiyan <jiyan> |
Severity: | urgent | Docs Contact: | |
Priority: | urgent | ||
Version: | 7.5 | CC: | dyuan, hhan, jdenemar, jherrman, jiyan, jsuchane, lmen, meili, mprivozn, mtessun, rbalakri, salmy, xuzhang, yalzhang, yisun |
Target Milestone: | rc | Keywords: | Upstream, ZStream |
Target Release: | --- | ||
Hardware: | x86_64 | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | libvirt-3.9.0-14.el7_5.1 | Doc Type: | Bug Fix |
Doc Text: |
Previously, the libvirt service used the incorrect XML configuration when checking for a duplicate user alias. As a consequence, hot-plugging a device with a unique alias to a guest virtual machine in some cases failed with a "non unique alias" error message. With this update, libvirt uses the correct XML files for verifying the device alias, which prevents the problem from occurring.
|
Story Points: | --- |
Clone Of: | 1543775 | Environment: | |
Last Closed: | 2018-04-10 19:13:42 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: | |||
Bug Depends On: | 1543775 | ||
Bug Blocks: |
Description
Oneata Mircea Teodor
2018-03-13 15:15:47 UTC
To POST: http://post-office.corp.redhat.com/archives/rhvirt-patches/2018-March/msg00318.html Scratch build to test can be found here: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=15543618 Hi, Michal, I still can reproduce this issue: 'update-device' with alias in disk did not work actually. Could you please help to check it? Version: kernel-3.10.0-860.el7.x86_64 qemu-kvm-rhev-2.10.0-21.el7_5.1.x86_64 libvirt-3.9.0-14.virtcov.el7_5.1.x86_64 Step: # virsh domstate test1 shut off # virsh start test1 Domain test1 started # virsh dumpxml test1 |grep "<disk" -A7 <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/RHEL-7.5-x86_64-latest.qcow2'/> <backingStore/> <target dev='hda' bus='usb'/> <alias name='usb-disk0'/> <address type='usb' bus='0' port='1.3'/> </disk> # cat diskchangealias.xml <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/RHEL-7.5-x86_64-latest.qcow2'/> <backingStore/> <target dev='hda' bus='usb'/> <alias name='ua-disk2'/> </disk> # virsh update-device test1 diskchangealias.xml Device updated successfully # virsh dumpxml test1 |grep "<disk" -A7 <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/RHEL-7.5-x86_64-latest.qcow2'/> <backingStore/> <target dev='hda' bus='usb'/> <alias name='usb-disk0'/> ***Not changed here*** <address type='usb' bus='0' port='1.3'/> </disk> (In reply to jiyan from comment #5) > Hi, Michal, I still can reproduce this issue: 'update-device' with alias in > disk did not work actually. Could you please help to check it? > > Version: > kernel-3.10.0-860.el7.x86_64 > qemu-kvm-rhev-2.10.0-21.el7_5.1.x86_64 > libvirt-3.9.0-14.virtcov.el7_5.1.x86_64 > > Step: > # virsh domstate test1 > shut off > > # virsh start test1 > Domain test1 started > > # virsh dumpxml test1 |grep "<disk" -A7 > <disk type='file' device='disk'> > <driver name='qemu' type='qcow2'/> > <source file='/var/lib/libvirt/images/RHEL-7.5-x86_64-latest.qcow2'/> > <backingStore/> > <target dev='hda' bus='usb'/> > <alias name='usb-disk0'/> > <address type='usb' bus='0' port='1.3'/> > </disk> > > # cat diskchangealias.xml > <disk type='file' device='disk'> > <driver name='qemu' type='qcow2'/> > <source file='/var/lib/libvirt/images/RHEL-7.5-x86_64-latest.qcow2'/> > <backingStore/> > <target dev='hda' bus='usb'/> > <alias name='ua-disk2'/> > </disk> > > # virsh update-device test1 diskchangealias.xml > Device updated successfully > > # virsh dumpxml test1 |grep "<disk" -A7 > <disk type='file' device='disk'> > <driver name='qemu' type='qcow2'/> > <source file='/var/lib/libvirt/images/RHEL-7.5-x86_64-latest.qcow2'/> > <backingStore/> > <target dev='hda' bus='usb'/> > <alias name='usb-disk0'/> ***Not changed here*** > <address type='usb' bus='0' port='1.3'/> > </disk> This is harmless. I'm gonna post a patch that forbids changing alias for live domains. However, this shouldn't matter for RHEL-7.5.z. Version: qemu-kvm-rhev-2.10.0-21.el7_5.1.x86_64 kernel-3.10.0-861.el7.x86_64 libvirt-3.9.0-14.el7_5.1.x86_64 The following steps are trying to verify the Issue-2 in the bug description. Scenario: Cold-plug interface to running VM twice, then hot-plug the interface twice, at last, hot-unplug and cold-unplug the interface. Step1. Prepare a shutdown VM and a xml file as following # virsh domstate test1 shut off # virsh dumpxml test1 |grep "<interface" -A5 <interface type='network'> <mac address='52:54:00:32:e6:35'/> <source network='default'/> <model type='rtl8139'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> # cat interface.xml <interface type='network'> <mac address='22:54:00:32:e6:35'/> <source network='default'/> <model type='rtl8139'/> <alias name='ua-interface'/> </interface> Step2. Start VM and cold-plug the interface, check dumpxml file info # virsh start test1 Domain test1 started # virsh attach-device test1 interface.xml --config Device attached successfully # virsh dumpxml test1 |grep "<interface" -A7 <interface type='network'> <mac address='52:54:00:32:e6:35'/> <source network='default' bridge='virbr0'/> <target dev='vnet0'/> <model type='rtl8139'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> # virsh dumpxml test1 --inactive|grep "<interface" -A6 <interface type='network'> <mac address='52:54:00:32:e6:35'/> <source network='default'/> <model type='rtl8139'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <interface type='network'> <mac address='22:54:00:32:e6:35'/> <source network='default'/> <model type='rtl8139'/> <alias name='ua-interface'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </interface> Step3: Clod-plug the interface again, there should be some error info, the dumpxml file info shoule be same with Step-2 # virsh attach-device test1 interface.xml --config error: Failed to attach device from interface.xml error: XML error: non unique alias detected: ua-interface # virsh dumpxml test1 |grep "<interface" -A7 Same with Step-2 # virsh dumpxml test1 --inactive|grep "<interface" -A6 Same with Step-2 Step4: Hot-plug the interface again and check the dumpxml file info # virsh attach-device test1 interface.xml Device attached successfully # virsh dumpxml test1 |grep "<interface" -A7 <interface type='network'> <mac address='52:54:00:32:e6:35'/> <source network='default' bridge='virbr0'/> <target dev='vnet0'/> <model type='rtl8139'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <interface type='network'> <mac address='22:54:00:32:e6:35'/> <source network='default' bridge='virbr0'/> <target dev='vnet1'/> <model type='rtl8139'/> <alias name='ua-interface'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </interface> # virsh dumpxml test1 --inactive|grep "<interface" -A6 <interface type='network'> <mac address='52:54:00:32:e6:35'/> <source network='default'/> <model type='rtl8139'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <interface type='network'> <mac address='22:54:00:32:e6:35'/> <source network='default'/> <model type='rtl8139'/> <alias name='ua-interface'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </interface> Step5: Hot-plug the interface again, there should be some error info, the dumpxml file info shoule be same with Step-4 # virsh attach-device test1 interface.xml error: Failed to attach device from interface.xml error: XML error: non unique alias detected: ua-interface # virsh dumpxml test1 |grep "<interface" -A7 Same with Step-4 # virsh dumpxml test1 --inactive|grep "<interface" -A6 Same with Step-4 Step6: Hot-unplug the interface and check the dumpxml file info # virsh detach-device test1 interface.xml Device detached successfully # virsh dumpxml test1 --inactive|grep "<interface" -A6 <interface type='network'> <mac address='52:54:00:32:e6:35'/> <source network='default'/> <model type='rtl8139'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <interface type='network'> <mac address='22:54:00:32:e6:35'/> <source network='default'/> <model type='rtl8139'/> <alias name='ua-interface'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </interface> # virsh dumpxml test1|grep "<interface" -A7 <interface type='network'> <mac address='52:54:00:32:e6:35'/> <source network='default' bridge='virbr0'/> <target dev='vnet0'/> <model type='rtl8139'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> Step7: Hot-unplug the interface again, there should be some error info, the dumpxml file info shoule be same with Step-6 # virsh detach-device test1 interface.xml error: Failed to detach device from interface.xml error: operation failed: no device matching MAC address 22:54:00:32:e6:35 found # virsh dumpxml test1 |grep "<interface" -A7 Same with Step-6 # virsh dumpxml test1 --inactive|grep "<interface" -A6 Same with Step-6 Step8: Cold-unplug the interface and check the dumpxml file info # virsh detach-device test1 interface.xml --config Device detached successfully # virsh dumpxml test1|grep "<interface" -A7 <interface type='network'> <mac address='52:54:00:32:e6:35'/> <source network='default' bridge='virbr0'/> <target dev='vnet0'/> <model type='rtl8139'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> # virsh dumpxml test1 --inactive|grep "<interface" -A5 <interface type='network'> <mac address='52:54:00:32:e6:35'/> <source network='default'/> <model type='rtl8139'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> Step9: Cold-unplug the interface again, there should be some error info, the dumpxml file info shoule be same with Step-8 # virsh detach-device test1 interface.xml --config error: Failed to detach device from interface.xml error: operation failed: no device matching MAC address 22:54:00:32:e6:35 found # virsh dumpxml test1 |grep "<interface" -A7 Same with Step-8 # virsh dumpxml test1 --inactive|grep "<interface" -A5 Same with Step-8 All the results are as expected, move this bug to '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/RHBA-2018:1056 |