Bug 1505701

Summary: -blockdev fails if a qcow2 image has backing store format and backing store is referenced via node-name
Product: Red Hat Enterprise Linux 7 Reporter: Peter Krempa <pkrempa>
Component: qemu-kvm-rhevAssignee: Kevin Wolf <kwolf>
Status: CLOSED ERRATA QA Contact: CongLi <coli>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.5CC: aliang, chayang, coli, juzhang, knoel, lmiksik, michen, ngu, pingl, virt-maint, xuwei
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: qemu-kvm-rhev-2.10.0-11.el7 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-04-11 00:44:15 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: 760547, 1558125    

Description Peter Krempa 2017-10-24 07:06:03 UTC
Description of problem:
qemu fails to start when disk storage is declared via -blockdev if an qcow2 image has backing store and the backing store format is recorded in the image itself. This happens as the code opening the image adds the format as an property when opening the image but the code opening the image via reference rejects properities if the reference (node-name) is given.

Version-Release number of selected component (if applicable):
2.9.0+ including current upstream

How reproducible:
100%


Steps to Reproduce:
1. Create qcow2 image with backing file while specifying backing store format:

$ qemu-img create -f raw /tmp/backing.raw 64M
$ qemu-img create -f qcow2 -F raw -b /tmp/backing.raw /tmp/test.qcow2

2. Try to start qemu while specifying the chain manually via -blockdev:

$ qemu-system-x86_64 \
  -blockdev driver=file,filename=/tmp/backing.raw,node-name=backing \
  -blockdev driver=qcow2,file.driver=file,file.filename=/tmp/test.qcow2,node-name=root,backing=backing
qemu-system-x86_64: -blockdev 
driver=qcow2,file.driver=file,file.filename=/tmp/test.qcow2,node-name=root,backing=backing:
 Could not open backing file: Cannot reference an existing block device with 
additional options or a new filename

Actual results:
qemu fails to start with: Could not open backing file: Cannot reference an existing block device with 
additional options or a new filename


Expected results:
qemu accepts the backing chain as specified


Additional info:
Patches posted to qemu-devel:

https://lists.gnu.org/archive/html/qemu-devel/2017-10/msg02872.html

Comment 1 Kevin Wolf 2017-10-29 08:51:01 UTC
This is fixed upstream in commit 6bff597bf ('block: don't add 'driver' to
options when referring to backing via node name').

Comment 3 Miroslav Rezanina 2017-12-05 12:59:27 UTC
Fix included in qemu-kvm-rhev-2.10.0-11.el7

Comment 5 CongLi 2017-12-07 05:26:56 UTC
Steps:
1. Create qcow2 image with backing file while specifying backing store format:

$ qemu-img create -f raw /tmp/backing.raw 64M
$ qemu-img create -f qcow2 -F raw -b /tmp/backing.raw /tmp/test.qcow2

2. Try to start qemu while specifying the chain manually via -blockdev:

$ /usr/libexec/qemu-kvm \
  -blockdev driver=file,filename=/tmp/backing.raw,node-name=backing \
  -blockdev driver=qcow2,file.driver=file,file.filename=/tmp/test.qcow2,node-name=root,backing=backing


Reproduced on:
qemu-kvm-rhev-2.10.0-10.el7.x86_64

qemu-kvm: -blockdev driver=qcow2,file.driver=file,file.filename=/tmp/test.qcow2,node-name=root,backing=backing: Could not open backing file: Cannot reference an existing block device with additional options or a new filename


Verified on:
qemu-kvm-rhev-2.10.0-11.el7.x86_64

$ /usr/libexec/qemu-kvm -blockdev driver=file,filename=/tmp/backing.raw,node-name=backing   -blockdev driver=qcow2,file.driver=file,file.filename=/tmp/test.qcow2,node-name=root,backing=backing
VNC server running on ::1:5900

Comment 7 errata-xmlrpc 2018-04-11 00:44:15 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/RHSA-2018:1104