Bug 1451191
Summary: | qemu-img: block/gluster.c:1307: find_allocation: Assertion `offs >= start' failed. | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Suqin Huang <shuang> |
Component: | qemu-kvm-rhev | Assignee: | Jeff Cody <jcody> |
Status: | CLOSED ERRATA | QA Contact: | Suqin Huang <shuang> |
Severity: | unspecified | Docs Contact: | |
Priority: | unspecified | ||
Version: | 7.4 | CC: | aliang, chayang, coli, juzhang, knoel, michen, mrezanin, qzhang, shuang, virt-maint |
Target Milestone: | rc | ||
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | qemu-kvm-rhev-2.9.0-8.el7 | Doc Type: | If docs needed, set a value |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2017-08-02 04:38:29 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: |
Description
Suqin Huang
2017-05-16 05:46:01 UTC
Here is the code that is asserting: offs = glfs_lseek(s->fd, start, SEEK_HOLE); if (offs < 0) { return -errno; /* D1 and (H3 or H4) */ } assert(offs >= start); I think this means that glfs_lseek() is returning bad data. SEEK_HOLE means "Adjust the file offset to the next hole in the file greater than or equal to offset", i.e. for this call it means adjust the file offset to the next hole >= start. So the call to glfs_lseek() should either return error (offs < 0), or offs >= start. I can't think of any valid way glfs_lseek() could return offs < start && offs >= 0. That said, if versions of gluster already released are returning invalid glfs_lseek() results, we might need a more graceful way to handle it in QEMU. What version of libgfapi is installed on the host, and what version of gluster is the gluster server running? Also, could you make rhel74-64-virtio.qcow2 available? I have been unable to reproduce this with either gluster 3.8.11 or 3.11. I am able to reproduce this locally now, with source images > ~6GB. What is being returned is not offs == 0, but (offs > 0 && offs < start), which seems to be an invalid lseek return. This is a duplicate of BZ #1425293 (see comment #13 on that BZ), however I am leaving this BZ open for QEMU, because we will need some sort of workaround for gluster versions already released. Fix included in qemu-kvm-rhev-2.9.0-8.el7 Result: PASS convert the image successfully and boot up image successfully Package: qemu-kvm-rhev-2.9.0-8.el7.x86_64 Steps: 1. Convert image on glusterfs server qemu-img convert -f qcow2 -O raw gluster://bootp-73-199-200.lab.eng.pek2.redhat.com:0/gv0/rhel74-64-virtio.qcow2 convert.img 2. boot up convert.img image According to comment9, update bug status to VERIFIED 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-2017:2392 |