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 |