Bug 1080613
| Summary: | Can't clone VM | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Tim Waugh <twaugh> | ||||
| Component: | virt-manager | Assignee: | Cole Robinson <crobinso> | ||||
| Status: | CLOSED INSUFFICIENT_DATA | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||
| Severity: | unspecified | Docs Contact: | |||||
| Priority: | unspecified | ||||||
| Version: | 20 | CC: | ayoung, berrange, crobinso, rjones, twaugh, virt-maint | ||||
| Target Milestone: | --- | ||||||
| Target Release: | --- | ||||||
| Hardware: | Unspecified | ||||||
| OS: | Unspecified | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | Doc Type: | Bug Fix | |||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | Environment: | ||||||
| Last Closed: | 2014-04-07 15:02:53 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: |
|
||||||
Please update to virt-manager 1.0.1 in updates-testing. Probably won't fix this though. Can you attach the virt-manager --debug output when reproducing? And 'sudo virsh vol-dumpxml $path' for every path that belongs to the VM you are trying to clone Created attachment 879132 [details]
virt-manager --debug &>output.log
virt-manager-1.0.1-1.fc20.noarch shows the same symptom.
Okay, a few bits: Does 'sudo virsh vol-dumpxml $path' fail in the same way for any of the disks attached to your VM? if not, can you try removing python-libguestfs and then see if the issue still reproduces? Finally, if it's still broken, try updating to latest libvirt with fedora-virt-preview and see if the issues reproduces: http://fedoraproject.org/wiki/Virtualization_Preview_Repository 'virsh vol-dumpxml ...' worked fine (sorrymissed that question before). After removing python-libguestfs cloning now works.
[Thu, 27 Mar 2014 13:56:47 virt-manager 6941] ERROR (inspection:158) qemu:///system:F20: exception while processing
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/inspection.py", line 148, in _process_vms
data = self._process(conn, vm, vmuuid)
File "/usr/share/virt-manager/virtManager/inspection.py", line 193, in _process
g.launch()
File "/usr/lib/python2.7/site-packages/guestfs.py", line 323, in launch
r = libguestfsmod.launch (self._o)
RuntimeError: could not create appliance through libvirt.
Try running qemu directly without libvirt using this environment variable:
export LIBGUESTFS_BACKEND=direct
Original error from libvirt: unable to set security context 'system_u:object_r:virt_content_t:s0' on '/var/lib/libvirt/images/f20-stack.qcow2': Operation not permitted [code=38 domain=24]
[Thu, 27 Mar 2014 13:56:47 virt-manager 6941] DEBUG (clone:172) Showing clone wizard
[Thu, 27 Mar 2014 13:56:47 virt-manager 6941] DEBUG (cloner:268) Validating original guest parameters
[Thu, 27 Mar 2014 13:56:47 virt-manager 6941] DEBUG (cloner:277) Original XML:
<domain type='kvm'>
<name>F20</name>
<uuid>0a6d57bd-06e8-4dd6-ba7c-8fcebdb7bc9f</uuid>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-1.6'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu mode='custom' match='exact'>
<model fallback='allow'>SandyBridge</model>
</cpu>
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/f20-stack.qcow2'/>
<target dev='hda' bus='ide'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hdb' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='1'/>
</disk>
<controller type='usb' index='0' model='ich9-ehci1'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci2'>
<master startport='2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci3'>
<master startport='4'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</controller>
<interface type='network'>
<mac address='52:54:00:3b:96:33'/>
<source network='default'/>
<model type='rtl8139'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<channel type='spicevmc'>
<target type='virtio' name='com.redhat.spice.0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>
<input type='mouse' bus='ps2'/>
<graphics type='spice' autoport='yes'/>
<sound model='ich6'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</sound>
<video>
<model type='qxl' ram='65536' vram='65536' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<redirdev bus='usb' type='spicevmc'>
</redirdev>
<redirdev bus='usb' type='spicevmc'>
</redirdev>
<redirdev bus='usb' type='spicevmc'>
</redirdev>
<redirdev bus='usb' type='spicevmc'>
</redirdev>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</memballoon>
</devices>
</domain>
[Thu, 27 Mar 2014 13:56:47 virt-manager 6941] DEBUG (cloner:287) Original paths: ['/var/lib/libvirt/images/f20-stack.qcow2']
[Thu, 27 Mar 2014 13:56:47 virt-manager 6941] DEBUG (cloner:289) Original sizes: [1079.0000009536743]
[Thu, 27 Mar 2014 13:56:47 virt-manager 6941] DEBUG (clone:412) Original path: /var/lib/libvirt/images/f20-stack.qcow2
Generated clone path: /var/lib/libvirt/images/f20-stack-clone.qcow2
[Thu, 27 Mar 2014 13:56:47 virt-manager 6941] DEBUG (diskbackend:171) Path '/var/lib/libvirt/images' is target for pool 'default'. Creating volume 'f20-stack-clone.qcow2'.
[Thu, 27 Mar 2014 13:56:47 virt-manager 6941] DEBUG (xmlbuilder:694) Error parsing xml=
<volume>
<name>AMEDD MC & DC O-6 Promotion Board Results.pdf</name>
<key>/home/ayoung/Downloads/AMEDD MC & DC O-6 Promotion Board Results.pdf</key>
<source>
</source>
<capacity unit='bytes'>194691</capacity>
<allocation unit='bytes'>196608</allocation>
<target>
<path>/home/ayoung/Downloads/AMEDD MC & DC O-6 Promotion Board Results.pdf</path>
<format type='raw'/>
<permissions>
<mode>0664</mode>
<owner>14370</owner>
<group>14370</group>
<label>unconfined_u:object_r:user_home_t:s0</label>
</permissions>
<timestamps>
<atime>1395927026.414478459</atime>
<mtime>1387467770.837491637</mtime>
<ctime>1389387966.728119838</ctime>
</timestamps>
</target>
</volume>
[Thu, 27 Mar 2014 13:56:48 virt-manager 6941] DEBUG (error:84) error dialog message:
summary=Error setting clone parameters: xmlParseDoc() failed
details=Error setting clone parameters: xmlParseDoc() failed
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/engine.py", line 915, in _do_show_clone
clone_window.show(src.topwin)
File "/usr/share/virt-manager/virtManager/clone.py", line 173, in show
self.reset_state()
File "/usr/share/virt-manager/virtManager/clone.py", line 243, in reset_state
self.storage_list, self.target_list = self.check_all_storage()
File "/usr/share/virt-manager/virtManager/clone.py", line 374, in check_all_storage
vol = self.conn.get_vol_by_path(path)
File "/usr/share/virt-manager/virtManager/connection.py", line 756, in get_vol_by_path
if vol.get_target_path() == path:
File "/usr/share/virt-manager/virtManager/storagepool.py", line 68, in get_target_path
return self.get_xmlobj().target_path or ""
File "/usr/share/virt-manager/virtManager/libvirtobject.py", line 151, in get_xmlobj
self._reparse_xml()
File "/usr/share/virt-manager/virtManager/libvirtobject.py", line 216, in _reparse_xml
self._xmlobj = self._build_xmlobj(self._get_raw_xml())
File "/usr/share/virt-manager/virtManager/libvirtobject.py", line 219, in _build_xmlobj
return self._parseclass(self.conn.get_backend(), parsexml=xml)
File "/usr/share/virt-manager/virtinst/storage.py", line 535, in __init__
_StorageObject.__init__(self, *args, **kwargs)
File "/usr/share/virt-manager/virtinst/xmlbuilder.py", line 777, in __init__
parent_xpath, relative_object_xpath)
File "/usr/share/virt-manager/virtinst/xmlbuilder.py", line 679, in __init__
self._parse(parsexml, parsexmlnode)
File "/usr/share/virt-manager/virtinst/xmlbuilder.py", line 692, in _parse
doc = libxml2.parseDoc(xml)
File "/usr/lib64/python2.7/site-packages/libxml2.py", line 1325, in parseDoc
if ret is None:raise parserError('xmlParseDoc() failed')
parserError: xmlParseDoc() failed
[Thu, 27 Mar 2014 13:56:48 virt-manager 6941] DEBUG (xmlbuilder:694) Error parsing xml=
<volume>
<name>AMEDD MC & DC O-6 Promotion Board Results.pdf</name>
<key>/home/ayoung/Downloads/AMEDD MC & DC O-6 Promotion Board Results.pdf</key>
<source>
</source>
<capacity unit='bytes'>194691</capacity>
<allocation unit='bytes'>196608</allocation>
<target>
<path>/home/ayoung/Downloads/AMEDD MC & DC O-6 Promotion Board Results.pdf</path>
<format type='raw'/>
<permissions>
<mode>0664</mode>
<owner>14370</owner>
<group>14370</group>
<label>unconfined_u:object_r:user_home_t:s0</label>
</permissions>
<timestamps>
<atime>1395927026.414478459</atime>
<mtime>1387467770.837491637</mtime>
<ctime>1389387966.728119838</ctime>
</timestamps>
</target>
</volume>
[Thu, 27 Mar 2014 13:56:48 virt-manager 6941] DEBUG (cli:182) Uncaught exception:
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/libvirtobject.py", line 216, in _reparse_xml
self._xmlobj = self._build_xmlobj(self._get_raw_xml())
File "/usr/share/virt-manager/virtManager/libvirtobject.py", line 219, in _build_xmlobj
return self._parseclass(self.conn.get_backend(), parsexml=xml)
File "/usr/share/virt-manager/virtinst/storage.py", line 535, in __init__
_StorageObject.__init__(self, *args, **kwargs)
File "/usr/share/virt-manager/virtinst/xmlbuilder.py", line 777, in __init__
parent_xpath, relative_object_xpath)
File "/usr/share/virt-manager/virtinst/xmlbuilder.py", line 679, in __init__
self._parse(parsexml, parsexmlnode)
File "/usr/share/virt-manager/virtinst/xmlbuilder.py", line 692, in _parse
doc = libxml2.parseDoc(xml)
File "/usr/lib64/python2.7/site-packages/libxml2.py", line 1325, in parseDoc
if ret is None:raise parserError('xmlParseDoc() failed')
parserError: xmlParseDoc() failed
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/libvirtobject.py", line 216, in _reparse_xml
self._xmlobj = self._build_xmlobj(self._get_raw_xml())
File "/usr/share/virt-manager/virtManager/libvirtobject.py", line 219, in _build_xmlobj
return self._parseclass(self.conn.get_backend(), parsexml=xml)
File "/usr/share/virt-manager/virtinst/storage.py", line 535, in __init__
_StorageObject.__init__(self, *args, **kwargs)
File "/usr/share/virt-manager/virtinst/xmlbuilder.py", line 777, in __init__
parent_xpath, relative_object_xpath)
File "/usr/share/virt-manager/virtinst/xmlbuilder.py", line 679, in __init__
self._parse(parsexml, parsexmlnode)
File "/usr/share/virt-manager/virtinst/xmlbuilder.py", line 692, in _parse
doc = libxml2.parseDoc(xml)
File "/usr/lib64/python2.7/site-packages/libxml2.py", line 1325, in parseDoc
if ret is None:raise parserError('xmlParseDoc() failed')
libxml2.parserError: xmlParseDoc() failed
(In reply to Adam Young from comment #5) > [Thu, 27 Mar 2014 13:56:47 virt-manager 6941] ERROR (inspection:158) > qemu:///system:F20: exception while processing > Traceback (most recent call last): > File "/usr/share/virt-manager/virtManager/inspection.py", line 148, in > _process_vms > data = self._process(conn, vm, vmuuid) > File "/usr/share/virt-manager/virtManager/inspection.py", line 193, in > _process > g.launch() > File "/usr/lib/python2.7/site-packages/guestfs.py", line 323, in launch > r = libguestfsmod.launch (self._o) > RuntimeError: could not create appliance through libvirt. > > Try running qemu directly without libvirt using this environment variable: > export LIBGUESTFS_BACKEND=direct > > Original error from libvirt: unable to set security context > 'system_u:object_r:virt_content_t:s0' on > '/var/lib/libvirt/images/f20-stack.qcow2': Operation not permitted [code=38 > domain=24] This is an instance of bug 1075164. However it should be a non-fatal error. Inspection is written to avoid causing any problems in virt-manager if it fails [except that one time we caused an actual segfault in the Python bindings ... which is fixed]. Actually rich, there's two bits here. Adam had that backtrace in his logs, but the original issue seems to be if libguestfs is inspecting a disk image while virt-manager is trying to clone it, cloning fails and libvirt doesn't properly register an error message. I still need to try and reproduce to at least fix the libvirt error reporting, and then see how we can avoid it in virt-manager. (In reply to Cole Robinson from comment #7) > Actually rich, there's two bits here. Adam had that backtrace in his logs, > but the original issue seems to be if libguestfs is inspecting a disk image > while virt-manager is trying to clone it, cloning fails and libvirt doesn't > properly register an error message. I still need to try and reproduce to at > least fix the libvirt error reporting, and then see how we can avoid it in > virt-manager. Perhaps inspection._run should acquire a lock inside that loop, and then clone could grab the same lock thus preventing inspection from happening at all for the duration of the clone. Note that the inspection._run runs as a background thread. Okay, I think i've found a code path in libvirt where we can hit that 'cause is unknown' error. But I still don't understand what side effect of libguestfs is causing the vol dumpxml to fail, and I can't reproduce. Tim, can you run: sudo service libvirtd stop sudo LIBVIRT_DEBUG=2 libvirtd reproduce the issue, and post the libvirtd stderr/stdout ? Sent some patches that probably fix the libvirt error reporting: http://www.redhat.com/archives/libvir-list/2014-March/msg01921.html (In reply to Cole Robinson from comment #9) > Tim, can you run: > > sudo service libvirtd stop > sudo LIBVIRT_DEBUG=2 libvirtd > > reproduce the issue, and post the libvirtd stderr/stdout ? Sorry, I tried this but was unable to reproduce the problem. Thanks for trying Tim. If anyone can reproduce, please reopen this bug |
Description of problem: When attempting to clone a VM using virt-manager I get an error dialog: ==> Error setting clone parameters: An error occurred, but the cause is unknown Traceback (most recent call last): File "/usr/share/virt-manager/virtManager/engine.py", line 915, in _do_show_clone clone_window.show(src.topwin) File "/usr/share/virt-manager/virtManager/clone.py", line 173, in show self.reset_state() File "/usr/share/virt-manager/virtManager/clone.py", line 243, in reset_state self.storage_list, self.target_list = self.check_all_storage() File "/usr/share/virt-manager/virtManager/clone.py", line 374, in check_all_storage vol = self.conn.get_vol_by_path(path) File "/usr/share/virt-manager/virtManager/connection.py", line 756, in get_vol_by_path if vol.get_target_path() == path: File "/usr/share/virt-manager/virtManager/storagepool.py", line 68, in get_target_path return self.get_xmlobj().target_path or "" File "/usr/share/virt-manager/virtManager/libvirtobject.py", line 141, in get_xmlobj xml = self._get_raw_xml(inactive, refresh_if_nec) File "/usr/share/virt-manager/virtManager/libvirtobject.py", line 197, in _get_raw_xml self.refresh_xml() File "/usr/share/virt-manager/virtManager/libvirtobject.py", line 160, in refresh_xml self._xml = self._XMLDesc(self._active_xml_flags) File "/usr/share/virt-manager/virtManager/storagepool.py", line 44, in _XMLDesc return self._backend.XMLDesc(flags) File "/usr/lib64/python2.7/site-packages/libvirt.py", line 2697, in XMLDesc if ret is None: raise libvirtError ('virStorageVolGetXMLDesc() failed', vol=self) libvirtError: An error occurred, but the cause is unknown <== Version-Release number of selected component (if applicable): libvirt-daemon-1.1.3.4-3.fc20.x86_64 virt-manager-1.0.0-6.fc20.noarch How reproducible: Happens every time I try. Steps to Reproduce: 1.In the virt-manager window, right-click on any VM and select Clone...