Bug 1320470
Summary: | Migrating guest with default guest agent socket path from 1.3.x to 1.2.17 failed | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Fangge Jin <fjin> | ||||||
Component: | libvirt | Assignee: | Jiri Denemark <jdenemar> | ||||||
Status: | CLOSED ERRATA | QA Contact: | |||||||
Severity: | medium | Docs Contact: | |||||||
Priority: | medium | ||||||||
Version: | 7.3 | CC: | dyuan, libvirt-maint, mzhan, rbalakri, yafu, zpeng | ||||||
Target Milestone: | rc | ||||||||
Target Release: | --- | ||||||||
Hardware: | x86_64 | ||||||||
OS: | Linux | ||||||||
Whiteboard: | |||||||||
Fixed In Version: | libvirt-2.0.0-3.el7 | Doc Type: | Bug Fix | ||||||
Doc Text: | Story Points: | --- | |||||||
Clone Of: | Environment: | ||||||||
Last Closed: | 2016-11-03 18:40:24 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: | |||||||||
Attachments: |
|
Created attachment 1139446 [details]
libvirtd log on source host
Created attachment 1139447 [details]
libvirtd log on target host
Patches sent for review upstream: https://www.redhat.com/archives/libvir-list/2016-July/msg00239.html This is now fixed upstream by commit b1305a6b8fcb807296a00458c5495ef321553cd0 Refs: v2.0.0-148-gb1305a6 Author: Jiri Denemark <jdenemar> AuthorDate: Fri Jul 8 16:44:02 2016 +0200 Commit: Jiri Denemark <jdenemar> CommitDate: Mon Jul 18 09:05:12 2016 +0200 qemu: Copy complete domain def in qemuDomainDefFormatBuf Playing directly with our live definition, updating it, and reverting it back once we are done is very nice and it's quite dangerous too. Let's just make a copy of the domain definition if needed and do all tricks on the copy. https://bugzilla.redhat.com/show_bug.cgi?id=1320470 Signed-off-by: Jiri Denemark <jdenemar> commit 08d566a0cf7ed052b6ab3c9bd93f04156999d80b Refs: v2.0.0-149-g08d566a Author: Jiri Denemark <jdenemar> AuthorDate: Fri Jul 8 17:25:03 2016 +0200 Commit: Jiri Denemark <jdenemar> CommitDate: Mon Jul 18 09:05:12 2016 +0200 qemu: Drop default channel path during migration Migration to an older libvirt (pre v1.3.0-175-g7140807) is broken because older versions of libvirt generated different channel paths and they didn't drop the default paths when parsing domain XMLs. We'd get such a nice error message: internal error: process exited while connecting to monitor: 2016-07-08T15:28:02.665706Z qemu-kvm: -chardev socket, id=charchannel0,path=/var/lib/libvirt/qemu/channel/target/ domain-3-nest/org.qemu.guest_agent.0,server,nowait: Failed to bind socket to /var/lib/libvirt/qemu/channel/target/domain-3-nest/ org.qemu.guest_agent.0: No such file or directory That said, we should not even format the default paths when generating a migratable XML. https://bugzilla.redhat.com/show_bug.cgi?id=1320470 Signed-off-by: Jiri Denemark <jdenemar> I can reproduce the bug with libvirt-1.3.5-1.el7.x86_64. Verified pass with libvirt-2.0.0-5.el7.x86_64: 1.On source host,start a guest with default guest agent socket path: <channel type='unix'> <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-4-mig1/org.qemu.guest_agent.0'/> <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/> <alias name='channel1'/> <address type='virtio-serial' controller='0' bus='0' port='2'/> </channel> 2.Do migration to a host installed libvirt-1.2.17-13.el7: #virsh migrate mig1 qemu+ssh://10.66.144.76/system --live --verbose root.144.76's password: Migration: [100 %] 3.Check the guest agent socket of the guest after migration completed: <channel type='unix'> <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-mig1/org.qemu.guest_agent.0'/> <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/> <alias name='channel1'/> <address type='virtio-serial' controller='0' bus='0' port='2'/> </channel> 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://rhn.redhat.com/errata/RHSA-2016-2577.html |
Created attachment 1139445 [details] qemu log on target Description of problem: Try to migrate a guest with default guest agent socket path from 1.3.x to 1.2.17, it failed. # virsh migrate rhel7.2-raw-2 qemu+ssh://10.66.82.251/system --live --verbose --unsafe root.82.251's password: error: internal error: process exited while connecting to monitor: 2016-03-22T12:28:10.951511Z qemu-kvm: -chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/channel/target/domain-1-rhel7.2-raw-2/org.qemu.guest_agent.0,server,nowait: Failed to bind socket to /var/lib/libvirt/qemu/channel/target/domain-1-rhel7.2-raw-2/org.qemu.guest_agent.0: No such file or directory Version-Release number of selected component: # git describe v1.3.2-229-g0c72459 How reproducible: 100% Steps to Reproduce: 0.On host A, install libvirt v1.3.2-229-g0c72459, and start a guest with default guest agent socket path: <channel type='unix'> <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-1-rhel7.2-raw-2/org.qemu.guest_agent.0'/> <target type='virtio' name='org.qemu.guest_agent.0' state='disconnected'/> <alias name='channel0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> 1.On host B, install libvirt-1.2.17-13.el7.x86_64 2. Migrate guest to host B. Actual results: Migration failed. Expected results: Migration succeed. Additional info: