Bug 834196
Summary: | Domain restore fails from a saved state in a file with xml option. | |||
---|---|---|---|---|
Product: | Red Hat Enterprise Linux 6 | Reporter: | lei wang <leiwan> | |
Component: | libvirt | Assignee: | Ján Tomko <jtomko> | |
Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> | |
Severity: | medium | Docs Contact: | ||
Priority: | medium | |||
Version: | 6.3 | CC: | acathrow, cwei, dallan, dyuan, gsun, jdenemar, jsuchane, jtomko, lhuang, michal.skrivanek, mzhan, pkrempa, rhodain, shyu, zhwang | |
Target Milestone: | rc | Keywords: | Reopened, Upstream, ZStream | |
Target Release: | 6.3 | |||
Hardware: | x86_64 | |||
OS: | Linux | |||
Whiteboard: | ||||
Fixed In Version: | libvirt-0.10.2-48.el6 | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | ||
Clone Of: | ||||
: | 955484 1180521 (view as bug list) | Environment: | ||
Last Closed: | 2015-07-22 05:45:51 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: | 1153323, 1180147, 1180521 |
Description
lei wang
2012-06-21 07:47:32 UTC
Can you comment with the minimal steps to reproduce? It sounds to me like there are a bunch of steps in the description that aren't necessary. Update steps to reproduce: # virsh start rhel6q Domain rhel6q started # virsh dumpxml rhel6q > rhel6q.xml # vim rhel6q.xml ==> Change disk path to /tmp/rhel6q.img # virsh save rhel6q rhel6q.save --xml rhel6q.xml Domain rhel6q saved to rhel6q.save # virsh restore rhel6q.save --xml rhel6q.xml error: Failed to restore domain from rhel6q.save error: unsupported configuration: Target controller type usb does not match source ide Hi Dave, I remove some steps, it's minimal steps to reproduce. Upstream patch proposed: https://www.redhat.com/archives/libvir-list/2012-August/msg00201.html Now fixed upstream: commit 07966f6a8b5ccb5bb4c716b25deb8ba2e572cc67 Author: Ján Tomko <jtomko> AuthorDate: 2013-06-11 15:03:17 +0200 Commit: Ján Tomko <jtomko> CommitDate: 2013-06-13 16:58:30 +0200 qemu: allow restore with non-migratable XML input Convert input XML to migratable before using it in qemuDomainSaveImageOpen. XML in the save image is migratable, i.e. doesn't contain implicit controllers. If these controllers were in a non-default order in the input XML, the ABI check would fail. Removing and re-adding these controllers fixes it. https://bugzilla.redhat.com/show_bug.cgi?id=834196 git describe: v1.0.6-70-g07966f6 Downstream patch posted: http://post-office.corp.redhat.com/archives/rhvirt-patches/2013-June/msg00243.html We decided not to rebase libvirt in RHEL 6.5 to avoid stability issues we faced in 6.4. This bug has already been fixed upstream but it is considered unsuitable for backporting to RHEL 6.5 because this bug is not important enough to justify backporting non-trivial patches for it. Thus I'm pushing this bug to RHEL 6.6 (and setting Upstream keyword to indicate we have patches upstream) for now. If you don't agree with this resolution, please, give us reasons which you think are strong enough for us to reevaluate the decision not to backport patches for this bug. Backporting of the patch fixing this issue causes failures when reverting external snapshots. See: https://bugzilla.redhat.com/show_bug.cgi?id=1008340 Development Management has reviewed and declined this request. You may appeal this decision by reopening this request. Hi Jan The following steps were all my reproduce and verify steps, the verify steps have covered the 2 scratch builds. Please help check whethere they are enough or not to verify your scratch builds, thanks. Reproduce steps: 1.Prepare a guest xml without usb controller 2.Define the guest, after we define the guest, we could see the usb controller added in the guest's xml automatically #virsh define rhel67.xml #virsh dumpxml rhel67 |grep usb -- <controller type='usb' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> 3.Start the guest, then dump the guest's xml to 2 local file, 1 is the definition guest's xml, one is the migrable guest's xml #virsh start rhel67 # virsh dumpxml rhel67 >rhel67def.xml # virsh dumpxml rhel67 --migratable >rhel67mig.xml 4.Save the guest by specifying the defination guest's xml we get in step 3 # virsh save rhel67 rhel67.save --xml rhel67def.xml Domain rhel67 saved to rhel67.save 5.Edit the save file, we couldn found the xml stored in the save file was the same with the migrable guest's xml, but different with the defination guest's xml #vim rhel67.save 6.Restore the guest with the defination guest xml, the guest will fail to restart since the xml save in the save file wasn't compatible with the defination guest's xml # virsh restore rhel67.save --xml rhel67def.xml error: Failed to restore domain from rhel67.save error: unsupported configuration: Target device address type pci does not match source none # virsh restore rhel67.save --xml rhel67mig.xml Domain restored from rhel67.save 7.Fresh start the guest, then do external mem snapshot with the guest #virsh start rhel67 #virsh snapshot-create-as rhel67 sss1 --memspec file=/tmp/rhel67.sss1 Domain snapshot sss1 created 8.Edit the external mem snapshot file, we could found the guest's xml stored in the external mem snapshot file was the same with the defination guest'xml, but different with the migratable guest's xml #vim /tmp/rhel67.sss1 9.Revert the snapshot with the snapshot-revert command directly, it will report the following error # virsh snapshot-revert rhel67 sss1 error: revert requires force: Target device address type none does not match source pci 10.Destroy the guest, then revert the snapshot by using restoreFlags with migratable guest's xml, the guest couldn't be restored successfully, since the guest's xml stored in the external mem snapshot file wasn't compatible with the migrable guest's xml # virsh restore /tmp/rhel67.sss1 --xml rhel67mig.xml error: Failed to restore domain from /tmp/rhel67.sss1 error: unsupported configuration: Target device address type none does not match source pci 11.Revert the snapshot by using restoreFlags with defination guest's xml, the guest could be restored successfully # virsh restore /tmp/rhel67.sss1 --xml rhel67def.xml Domain restored from /tmp/rhel67.sss1 Verify this bug with the first scratch build #rpm -qa|grep libvirt libvirt-0.10.2-46.el6_6.2bz834196a.x86_64.rpm steps were the same with the reproduce steps 1.The guest could be restored successfully with both the defination guest's xml and the migratable guest's xml # virsh restore rhel67.save --xml rhel67def.xml Domain restored from rhel67.save # virsh restore rhel67.save --xml rhel67mig.xml Domain restored from rhel67.save 2.Do external mem snapshot with the guest, edit the external mem snapshot file, found the guest's xml stored in the snapshot file was the same with the migratable guest's xml # virsh snapshot-create-as rhel67 sss1 --memspec file=/tmp/rhel67.sss1 Domain snapshot sss1 created #vim /tmp/rhel67.sss1 3.Revert the snapshot with the snapshot-revert command directly, it will report the following error , also the guest will be paused while fail to do snapshot-revert. Could also hit the issue in libvirt-47. Found 2 exsiting bugs 1101987,1179532 about this issue in both rhel6 and rhel7, and the bug 1101987 in rhel7 has been fixed # virsh snapshot-revert rhel67 sss1 error: Requested operation is not valid: the snapshot 'sss1' does not exist, and was not loaded # virsh list Id Name State ---------------------------------------------------- 8 rhel67 paused 4.Destroy the guest, then revert the snapshot by using restoreFlags with both migratable and defination guest' xml, all of them could be restored successfully # virsh restore /tmp/rhel67.sss1 --xml rhel67def.xml Domain restored from /tmp/rhel67.sss1 -- # virsh restore /tmp/rhel67.sss1 --xml rhel67mig.xml Domain restored from /tmp/rhel67.sss1 Verify this bug with the second scratch build #rpm -qa|grep libvirt libvirt-0.10.2-46.el6_6.2bz834196revert.x86_64.rpm steps were the same with the reproduce steps 1.since this scratch build didn't include the patch which fix bug 834196, the issue in reproduce steps stay exsting # virsh restore rhel67.save --xml rhel67def.xml error: Failed to restore domain from rhel67.save error: unsupported configuration: Target device address type pci does not match source none # virsh restore rhel67.save --xml rhel67mig.xml Domain restored from rhel67.save 2.Do external mem snapshot with the guest, edit the external mem snapshot file, found the guest's xml stored in the snapshot file was still the same with the defination guest's xml # virsh snapshot-create-as rhel67 sss1 --memspec file=/tmp/rhel67.sss1 Domain snapshot sss1 created #vim /tmp/rhel67.sss1 3.Revert the snapshot with the snapshot-revert command directly, hit the same issue with first scratch build # virsh snapshot-revert rhel67 sss1 error: Requested operation is not valid: the snapshot 'sss1' does not exist, and was not loaded # virsh list Id Name State ---------------------------------------------------- 8 rhel67 paused 4.Destroy the guest, then revert the snapshot by using restoreFlags with both migratable and defination guest' xml, get the same result with the reproduce steps, the following issue maybe depends on the the patch which fix bug 834196 # virsh restore /tmp/rhel67.sss1 --xml rhel67def.xml Domain restored from /tmp/rhel67.sss1 -- # virsh restore /tmp/rhel67.sss1 --xml rhel67mig.xml error: Failed to restore domain from /tmp/rhel67.sss1 error: unsupported configuration: Target device address type none does not match source pci The verification steps look good to me. I can reproduce this issue with libvirt-0.10.2-46.el6.x86_64: 1. # virsh dumpxml r6 <controller type='usb' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='ccid' index='0'/> 2. # virsh start r6 3.# virsh dumpxml r6 > r6.xml 4.# virsh dumpxml r6 --migratable > r6mig.xml 5.edit r6.xml and r6mig.xml and change disk path to /tmp/r6.img # vim r6mig.xml # vim r6.xml 6.# virsh save r6 r6.save --xml r6.xml Domain r6 saved to r6.save 7. check the r6.save if the disk path have been changed: # vim r6.save 8. restore vm and will failed with r6.xml: # virsh restore r6.save --xml r6.xml error: Failed to restore domain from r6.save error: unsupported configuration: Target controller type usb does not match source ccid # virsh restore r6.save --xml r6mig.xml Domain restored from r6.save And verify this issue with libvirt-0.10.2-48.el6: 1.# virsh dumpxml r6 <controller type='usb' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='ccid' index='0'/> 2. # virsh start r6 Domain r6 started 3.# virsh dumpxml r6 > r6.xml 4.# virsh dumpxml r6 --migratable > r6mig.xml 5.edit r6.xml and r6mig.xml and change disk path to /tmp/r6.img # vim r6mig.xml # vim r6.xml 6.# virsh save r6 r6.save --xml r6.xml Domain r6 saved to r6.save 7. check the r6.save if the disk path have been changed: # vim r6.save 8. restore vm and will success with r6.xml and r6mig.xml: # virsh restore r6.save --xml r6.xml Domain restored from r6.save # virsh destroy r6 Domain r6 destroyed # virsh restore r6.save --xml r6mig.xml Domain restored from r6.save 9.do external snapshot: # virsh snapshot-create-as r6 s1 --memspec file=/tmp/r6.s1 Domain snapshot s1 created # virsh snapshot-revert r6 s1 error: unsupported configuration: revert to external snapshot not supported yet # virsh restore /tmp/r6.s1 --xml r6.xml Domain restored from /tmp/r6.s1 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/RHBA-2015-1252.html |