Bug 1031883
Summary: | qemu-io error prompt "Operation is supported" is not expected | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 6 | Reporter: | xhan |
Component: | qemu-kvm | Assignee: | Jeff Cody <jcody> |
Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> |
Severity: | low | Docs Contact: | |
Priority: | medium | ||
Version: | 6.5 | CC: | bsarathy, chayang, jcody, juzhang, michen, mkenneth, qzhang, rbalakri, shu, virt-maint |
Target Milestone: | rc | Keywords: | Regression |
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | qemu-kvm-0.12.1.2-2.425.el6 | Doc Type: | Bug Fix |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2014-10-14 06:54:33 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
xhan
2013-11-19 04:39:52 UTC
Hi, Xiangming Is this a regressioin? Thanks. Have tested this issue on qemu-kvm-0.12.1.2-2.415.el6.x86_64. The issue exists on the version. So this is not regression imported on Z stream. After downgradation test, found the version which import this issue. qemu-kvm-390: pass qemu-kvm-391: fail It turns out this issue is a bit more complex than just an incorrect error message. This started to occur after commit f0d6b82: 'block: Produce zeros when protocols reading beyond end of file'. In that commit, rather than always calling the driver bdrv_co_readv() method, the length is checked by a call to bdrv_getlength(), and the number of sectors computed. If there are 0 sectors in the BDS file, the read is short circuited and the function returns success. When using a blkdebug filter, the initial length as recorded in the BDS is 0 after bdrv_open(). bdrv_getlength() will call the driver .bdrv_getlength() method, however in the current codebase the blkdebug driver did not have a .bdrv_getlength() method. The solution is to backport commit e130225587cb0d48b2c0b7c04b6bf9c95fe75ac9: 'blkdebug: pass getlength to underlying file', which implements .bdrv_getlength() by passing it along to its underlying file format. This will manifest itself also by incorrectly identifying the file as 'raw' rather than 'qcow2': ./qemu-img info blkdebug:blkdebug.cfg:blkdebug.qcow2 image: blkdebug:blkdebug.cfg:blkdebug.qcow2 file format: raw virtual size: 0 (0 bytes) disk size: 260K After the fix (backport of e130225): ./qemu-img info blkdebug:blkdebug.cfg:blkdebug.qcow2 image: blkdebug:blkdebug.cfg:blkdebug.qcow2 file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 260K cluster_size: 512 Fix included in qemu-kvm-0.12.1.2-2.425.el6 Verified on qemu-kvm-rhev-0.12.1.2-2.427.el6.x86_64: with steps in comment 0, after step 4: qemu-io> write -b 0 1G write failed: Operation not permitted 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. http://rhn.redhat.com/errata/RHBA-2014-1490.html |