Bug 1543775
| 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 | |||
|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | jiyan <jiyan> | |
| Component: | libvirt | Assignee: | Michal Privoznik <mprivozn> | |
| Status: | CLOSED ERRATA | QA Contact: | Han Han <hhan> | |
| Severity: | urgent | Docs Contact: | ||
| Priority: | urgent | |||
| Version: | 7.5 | CC: | dyuan, hhan, jdenemar, jherrman, jiyan, jsuchane, lmen, meili, mtessun, salmy, xuzhang, yalzhang, yisun | |
| Target Milestone: | rc | Keywords: | Upstream, ZStream | |
| Target Release: | --- | |||
| Hardware: | x86_64 | |||
| OS: | Linux | |||
| Whiteboard: | ||||
| Fixed In Version: | libvirt-4.3.0-1.el7 | 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: | ||||
| : | 1554928 (view as bug list) | Environment: | ||
| Last Closed: | 2018-10-30 09:52:39 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: | ||||
| Bug Depends On: | ||||
| Bug Blocks: | 1553075, 1554928 | |||
|
Description
jiyan
2018-02-09 10:04:35 UTC
(In reply to jiyan from comment #0) > This bug is trying to track some issues in BZ#1434451 > (https://bugzilla.redhat.com/show_bug.cgi?id=1434451#c34) that are not be > fixed in RHEL7.5 > > Description of problem: > 1. 'update-deive' with alias in disk did not work actually > 2. 'cold-plug' device with alias to running VM will fail in dumpxml file > while succeed in cmd > > Version-Release number of selected component (if applicable): > libvirt-3.9.0-12.virtcov.el7.x86_64 > qemu-kvm-rhev-2.10.0-20.el7.x86_64 > kernel-3.10.0-847.el7.x86_64 > > How reproducible: > 100% > > Steps to Reproduce: > Issue1: Prepare a VM with virtual disk in it and xml file describing virtual > disk with different alias from original disk in VM, then update device > # virsh domstate test > shut off > > # virsh start test > Domain test started > > # virsh dumpxml test |grep "<disk" -A8 > <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='virtio'/> > <alias name='virtio-disk0'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x08' > function='0x0'/> > </disk> > <disk type='file' device='disk'> > <driver name='qemu' type='raw'/> > <source file='/var/lib/libvirt/images/one.raw'/> > <backingStore/> > <target dev='hdb' bus='virtio'/> > <alias name='virtio-disk1'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x09' > function='0x0'/> > </disk> > > # cat hdb.xml > <disk type='file' device='disk'> > <driver name='qemu' type='raw'/> > <source file='/var/lib/libvirt/images/one.raw'/> > <target dev='hdb' bus='virtio'/> > <alias name='ua-disk-update1'/> > </disk> > > # virsh update-device test hdb.xml > Device updated successfully This should be fixed upstream by: commit d0204e373d8aec51b1fd63783eeaa9a2015832ac Author: Michal Privoznik <mprivozn> AuthorDate: Wed Dec 13 15:12:01 2017 +0100 Commit: Michal Privoznik <mprivozn> CommitDate: Fri Jan 5 14:22:45 2018 +0100 qemuDomainDiskChangeSupported: Forbid alias change Since we have user aliases it may happen that users want to change it using 'update-device'. Instead of ignoring it silently, error out loudly. Note that we don't limit the check just for "ua-" prefixes because users might try to change libvirt generated aliases too. Signed-off-by: Michal Privoznik <mprivozn> Reviewed-by: John Ferlan <jferlan> > > Issue2: Prepare a running VM with the following alias configuration, and xml > file describing interface device, cold-plug interface device to running VM > # virsh domstate test > running > > # virsh dumpxml test |grep alias > <alias name='virtio-disk0'/> > <alias name='virtio-disk1'/> > <alias name='usb'/> > <alias name='usb'/> > <alias name='usb'/> > <alias name='usb'/> > <alias name='pci.0'/> > <alias name='ua-IDE1'/> > <alias name='virtio-serial0'/> > <alias name='fdc0'/> > <alias name='net0'/> > <alias name='ua-myinterface'/> > <alias name='serial0'/> > <alias name='serial0'/> > <alias name='channel0'/> > <alias name='input0'/> > <alias name='input1'/> > <alias name='input2'/> > <alias name='sound0'/> > <alias name='video0'/> > <alias name='redir0'/> > <alias name='redir1'/> > <alias name='balloon0'/> > > # cat interface.xml > <interface type='network'> > <source network='default' bridge='virbr0'/> > <alias name='ua-myinterface'/> > </interface> > > # virsh attach-device test interface.xml --config > error: Failed to attach device from interface.xml > error: XML error: non unique alias detected: usb I think this is fixed by the following proposed patch: https://www.redhat.com/archives/libvir-list/2018-February/msg00282.html I've created a scratch build with those patches applied if you want to give it a try: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=15264067 *** Bug 1553162 has been marked as a duplicate of this bug. *** I've merged the fix upstream:
commit e5673ed44465edcfccdd906158136ad8dcb94b9b
Author: Michal Privoznik <mprivozn>
AuthorDate: Fri Mar 9 08:31:44 2018 +0100
Commit: Michal Privoznik <mprivozn>
CommitDate: Mon Mar 12 13:27:24 2018 +0100
virDomainDeviceValidateAliasForHotplug: Use correct domain defintion
https://bugzilla.redhat.com/show_bug.cgi?id=1553075
For some weird reason this function is getting live and
persistent def for domain but then accesses vm->def and
vm->newDef directly. This is rather unsafe as we can be
accessing NULL pointer.
Signed-off-by: Michal Privoznik <mprivozn>
v4.1.0-91-ge5673ed44
Verified on: libvirt-4.5.0-2.virtcov.el7.x86_64 qemu-kvm-rhev-2.12.0-7.el7.x86_64:
I. Try to update device alias lively:
1. Prepare a running VM, two device XMLs only their aliases differ
# virsh list
Id Name State
----------------------------------------------------
74 usb running
# cat /tmp/nic.xml
<interface type='network'>
<mac address='52:54:00:72:7a:34'/>
<source network='default'/>
<model type='virtio'/>
<alias name='ua-09f558d3-1223-4e82-9334-87b1eeb26925'/>
</interface>
# cat /tmp/nic-alias1.xml
<interface type='network'>
<mac address='52:54:00:72:7a:34'/>
<source network='default'/>
<model type='virtio'/>
<alias name='ua-Alias'/>
</interface>
2.Attach device, then try to change alias via update-device
# virsh attach-device usb /tmp/nic.xml
Device attached successfully
# virsh update-device usb /tmp/nic-alias1.xml
error: Failed to update device from /tmp/nic-alias1.xml
error: operation forbidden: changing device alias is not allowed
II. Try to update device alias inactively:
# virsh attach-device usb /tmp/nic.xml --config
Device attached successfully
# virsh update-device usb /tmp/nic-alias1.xml --config
Device updated successfully
# virsh dumpxml usb --inactive|awk '/<inter/,/<\/inter/'|grep ua
<alias name='ua-Alias'/>
Alias changed.
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 |