Red Hat Bugzilla – Bug 1505701
-blockdev fails if a qcow2 image has backing store format and backing store is referenced via node-name
Last modified: 2018-04-10 20:45:49 EDT
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
This is fixed upstream in commit 6bff597bf ('block: don't add 'driver' to options when referring to backing via node name').
Fix included in qemu-kvm-rhev-2.10.0-11.el7
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
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