Bug 1601310

Summary: qemu-img map 'Aborted (core dumped)' when specifying a plain file
Product: Red Hat Enterprise Linux 7 Reporter: Tingting Mao <timao>
Component: qemu-kvm-rhevAssignee: Hanna Czenczek <hreitz>
Status: CLOSED ERRATA QA Contact: Tingting Mao <timao>
Severity: high Docs Contact:
Priority: medium    
Version: 7.6CC: areis, chaoyang, chayang, coli, eblake, juzhang, michen, mrezanin, ngu, pingl, timao, virt-maint
Target Milestone: rcKeywords: Regression
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: qemu-kvm-rhev-2.12.0-10.el7 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1639374 (view as bug list) Environment:
Last Closed: 2018-11-01 11:13:00 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: 1639374    
Attachments:
Description Flags
gdb backtrace none

Description Tingting Mao 2018-07-16 03:33:54 UTC
Created attachment 1459048 [details]
gdb backtrace

Description of problem:
The command "qemu-img map" results in 'core dumped' when specifying the tested file which is a plain file (i.e. not qcow2/raw image).

Version-Release number of selected component (if applicable):
qemu-kvm-rhev-2.12.0-7.el7
kernel-3.10.0-919.el7

How reproducible:
3/3

Steps to Reproduce:
1.Create a plain file
# cat test
ttttttttttt
tttttttt
2.Dump the metadata
# qemu-img map test 
Offset          Length          Mapped to       File
qemu-img: qemu-img.c:2765: get_block_status: Assertion `bytes' failed.
Aborted (core dumped)

Actual results:

Expected results:
No core dumped, and the metadata should be dumped successfully.


Additional info:
1.The result is expected in rhel7.5, so I think it should be a regression. And more details are listed below.

Tested packages:
qemu-kvm-rhev-2.10.0-21.el7_5.1
kernel-3.10.0-862.el7

Steps:
1.1 Create one plain file
# cat test 
tttttttttt

sssssss
1.2 Dump metadata of the file
# qemu-img map test 
Offset          Length          Mapped to       File
0               0x200           0               test
# qemu-img map test --output=json
[{ "start": 0, "length": 512, "depth": 0, "zero": false, "data": true, "offset": 0}]


2. It is successful to dump metadata for a qcow2/raw image file
Tested packages:
qemu-kvm-rhev-2.12.0-7.el7
kernel-3.10.0-919.el7

Steps:
2.1 # qemu-img create -f qcow2 base.qcow2 1G
Formatting 'base.qcow2', fmt=qcow2 size=1073741824 cluster_size=65536 lazy_refcounts=off refcount_bits=16
2.2 # qemu-io -c 'write 0 200M' base.qcow2 
wrote 209715200/209715200 bytes at offset 0
200 MiB, 1 ops; 0.1861 sec (1.049 GiB/sec and 5.3720 ops/sec)
2.3 # qemu-img map base.qcow2 
Offset          Length          Mapped to       File
0               0xc800000       0x50000         base.qcow2

Comment 3 Hanna Czenczek 2018-08-06 16:07:00 UTC
Fixed upstream, the commit (e0b371ed5e2db079051139136fd0478728b6a58f) mentions BZ 1589738.

Comment 5 Eric Blake 2018-08-06 20:40:35 UTC
bug 1613046 is tangentially related as another place where qemu has shortcomings dealing with a non-aligned raw file.

Comment 6 Miroslav Rezanina 2018-08-10 10:44:43 UTC
Fix included in qemu-kvm-rhev-2.12.0-10.el7

Comment 8 Tingting Mao 2018-08-14 03:26:35 UTC
Verify this issue like below:

Tested packages:
qemu-kvm-rhev-2.12.0-10.el7
kernel-3.10.0-931.el7

Scenario1
1.Find one temporary file
# cat test 
xxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxx
2.dump the metadata for the file, it works!
2.1 dump with human/default format
# qemu-img map test 
Offset          Length          Mapped to       File
0               0x26            0               test
2.2 dump with json format
# qemu-img map test --output=json
[{ "start": 0, "length": 38, "depth": 0, "zero": false, "data": true, "offset": 0},
{ "start": 38, "length": 474, "depth": 0, "zero": true, "data": false, "offset": 38}]


Scenario2
1. Get the source code
# brew download-build --rpm --arch=x86_64 qemu-kvm-rhev-2.12.0-10.el7.src.rpm
# rpm -ivhf qemu-kvm-rhev-2.12.0-10.el7.src.rpm
# rpmbuild -bp /root/rpmbuild/SPECS/qemu-kvm.spec --nodeps 
2. configure the env
# cd /root/rpmbuild/BUILD/qemu-2.12.0/
# ./configure 
# export QEMU_PROG=/usr/libexec/qemu-kvm
# export QEMU_IMG_PROG=/usr/bin/qemu-img
# export QEMU_IO_PROG=/usr/bin/qemu-io
# export QEMU_NBD_PROG=/usr/bin/qemu-nbd
3. test the 221th case
# cd tests/qemu-iotests/
# ./check -raw 221
QEMU          -- "/usr/libexec/qemu-kvm" -nodefaults -machine accel=qtest
QEMU_IMG      -- "/usr/bin/qemu-img" 
QEMU_IO       -- "/usr/bin/qemu-io"  --cache writeback -f raw
QEMU_NBD      -- "/usr/bin/qemu-nbd" 
IMGFMT        -- raw
IMGPROTO      -- file
PLATFORM      -- Linux/x86_64 lenovo-sr630-01 3.10.0-931.el7.x86_64
TEST_DIR      -- /root/rpmbuild/BUILD/qemu-2.12.0/tests/qemu-iotests/scratch
SOCKET_SCM_HELPER -- 

221 0s ...
Passed all 1 tests

Comment 9 Eric Blake 2018-08-21 12:30:47 UTC
*** Bug 1590024 has been marked as a duplicate of this bug. ***

Comment 10 errata-xmlrpc 2018-11-01 11:13:00 UTC
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/RHBA-2018:3443