Bug 1031883 - qemu-io error prompt "Operation is supported" is not expected
qemu-io error prompt "Operation is supported" is not expected
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: qemu-kvm (Show other bugs)
Unspecified Unspecified
medium Severity low
: rc
: ---
Assigned To: Jeff Cody
Virtualization Bugs
: Regression
Depends On:
  Show dependency treegraph
Reported: 2013-11-18 23:39 EST by xhan
Modified: 2014-10-14 02:54 EDT (History)
10 users (show)

See Also:
Fixed In Version: qemu-kvm-
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2014-10-14 02:54:33 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description xhan 2013-11-18 23:39:52 EST
Description of problem:

Trigger qemu-io error, the prompt "Operation is supported" is not expected.

Expected prompt is "Operation not permitted". 

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:
1. create qcow2 image 
qemu-img create -f qcow2 -o cluster_size=512 blkdebug.qcow2 1G

2. create the cfg file 

cat blkdebug.cfg
event = "refblock_update_part"
immediately = "off"
errno = "1"

3. open qemu-io session
qemu-io blkdebug:blkdebug.cfg:blkdebug.qcow2
4. trigger the error
write -b 0 1G
Actual results:
qemu-io> write -b 0 1G
write failed: Operation not supported

Expected results:
#define EPERM            1      /* Operation not permitted */

Additional info:
Comment 2 Qunfang Zhang 2013-11-19 03:59:56 EST
Hi, Xiangming

Is this a regressioin?  Thanks.
Comment 3 xhan 2013-11-19 04:41:20 EST
Have tested this issue on qemu-kvm- The issue exists on the version. 

So this is not regression imported on Z stream.
Comment 4 xhan 2013-11-19 04:57:54 EST
After downgradation test, found the version which import this issue. 

qemu-kvm-390: pass
qemu-kvm-391: fail
Comment 11 Jeff Cody 2014-04-14 16:14:11 EDT
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.
Comment 12 Jeff Cody 2014-04-14 16:34:39 EDT
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
Comment 14 Miroslav Rezanina 2014-04-29 02:01:33 EDT
Fix included in qemu-kvm-
Comment 17 Shaolong Hu 2014-06-20 01:19:30 EDT
Verified on qemu-kvm-rhev-

with steps in comment 0, after step 4:

qemu-io> write -b 0 1G
write failed: Operation not permitted

Comment 18 errata-xmlrpc 2014-10-14 02:54:33 EDT
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.


Note You need to log in before you can comment on or make changes to this bug.