Bug 1196528
| Summary: | Libvirtd crashes when a storage file backed by gluster protocol lacking path | |||
|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Yang Yang <yanyang> | |
| Component: | libvirt | Assignee: | Peter Krempa <pkrempa> | |
| Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> | |
| Severity: | high | Docs Contact: | ||
| Priority: | high | |||
| Version: | 7.1 | CC: | dyuan, jsuchane, mzhan, pkrempa, rbalakri, xuzhang | |
| Target Milestone: | rc | Keywords: | ZStream | |
| Target Release: | --- | |||
| Hardware: | x86_64 | |||
| OS: | Linux | |||
| Whiteboard: | ||||
| Fixed In Version: | libvirt-1.2.13-1.el7 | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | ||
| Clone Of: | ||||
| : | 1198720 (view as bug list) | Environment: | ||
| Last Closed: | 2015-11-19 06:17:58 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: | 1198720 | |||
Fixed upstream:
Author: Peter Krempa <pkrempa>
Date: Thu Feb 26 10:28:21 2015 +0100
util: storagefile: Don't crash on gluster URIs without path
Similar to commit fdb80ed4f6563928b9942a0d1450e0c725aa6c06 libvirtd
would crash if a gluster URI without path would be used in the backing
chain of a volume. The crash happens in the gluster specific part of the
parser that extracts the gluster volume name from the path.
Fix the crash by checking that the PATH is NULL.
Verify it using libvirt-1.2.13-1.el7.x86_64
Steps:
1. create a qcow2 file
# qemu-img create -f qcow2 /var/lib/libvirt/images/gluster.img 100M
Formatting '/var/lib/libvirt/images/gluster.img', fmt=qcow2 size=104857600 encryption=off cluster_size=65536 lazy_refcounts=off
2. rewrite the qcow2 file to use gluster protocol lacking path as backend
# qemu-img rebase -u -f qcow2 -F raw -b gluster://10.66.4.164 /var/lib/libvirt/images/gluster.img
3.# qemu-img info /var/lib/libvirt/images/gluster.img
image: /var/lib/libvirt/images/gluster.img
file format: qcow2
virtual size: 100M (104857600 bytes)
disk size: 196K
cluster_size: 65536
backing file: gluster://10.66.4.164
backing file format: raw
Format specific information:
compat: 1.1
lazy refcounts: false
4. # ps -ef |grep libvirt
root 1067 1 0 17:04 ? 00:00:00 /usr/sbin/libvirtd
5. # virsh pool-refresh default
error: Failed to refresh pool default
error: unsupported configuration: missing volume name and path for gluster volume
6. # ps -ef |grep libvirt
root 1067 1 0 17:04 ? 00:00:00 /usr/sbin/libvirtd
Libvirt does not crash again.
Set it to verified status according to comment #3 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-2202.html |
Description of problem: Libvirtd crashes when a storage file backed by gluster://$IP lacking path Version-Release number of selected component (if applicable): qemu-img-rhev-2.1.2-23.el7_1.1.x86_64 kernel-3.10.0-229.el7.x86_64 libvirt-1.2.8-16.el7_1.1.x86_64 How reproducible: 100% Steps to Reproduce: 1. create a qcow2 file # qemu-img create -f qcow2 /var/lib/libvirt/images/gluster.img 100M Formatting '/var/lib/libvirt/images/gluster.img', fmt=qcow2 size=104857600 encryption=off cluster_size=65536 lazy_refcounts=off 2. rewrite the qcow2 file to use gluster protocol lacking path as backend # qemu-img rebase -u -f qcow2 -F raw -b gluster://10.66.4.164 /var/lib/libvirt/images/gluster.img 3.# qemu-img info /var/lib/libvirt/images/gluster.img image: /var/lib/libvirt/images/gluster.img file format: qcow2 virtual size: 100M (104857600 bytes) disk size: 196K cluster_size: 65536 backing file: gluster://10.66.4.164 backing file format: raw Format specific information: compat: 1.1 lazy refcounts: false 4. refresh default pool # virsh pool-refresh default error: Failed to refresh pool default error: End of file while reading data: Input/output error error: Failed to reconnect to the hypervisor Actual results: Libvirtd crashes Expected results: Additional info: