Red Hat Bugzilla – Bug 1492178
Non-top-level change-backing-file causes assertion failure
Last modified: 2018-06-15 12:37:53 EDT
The following was tested on upstream qemu.git master. 2.10 is affected. Steps to reproduce the assertion failure: 1. Create a backing file chain with at least three images: $ qemu-img create -f qcow2 /tmp/base.qcow2 64M $ qemu-img create -f qcow2 -b /tmp/base.qcow2 /tmp/mid.qcow2 $ qemu-img create -f qcow2 -b /tmp/mid.qcow2 /tmp/top.qcow2 2. Try to use the "change-backing-file" QMP command to change the backing file of mid.qcow2: $ LANG=C x86_64-softmmu/qemu-system-x86_64 -drive file=/tmp/top.qcow2,backing.node-name=mid -qmp stdio {"QMP": {"version": {"qemu": {"micro": 50, "minor": 10, "major": 2}, "package": " (v2.10.0-485-g6beb456cac)"}, "capabilities": []}} {"execute":"qmp_capabilities"} {"return": {}} {"execute":"change-backing-file", "arguments":{"device":"ide0-hd0","image-node-name":"mid","backing-file":"/dev/null"}} qemu-system-x86_64: block/io.c:1359: bdrv_aligned_pwritev: Assertion `child->perm & BLK_PERM_WRITE' failed. This will be fixed upstream with the following series: [PATCH 0/6] block: Fix permissions after ro/rw reopen https://lists.gnu.org/archive/html/qemu-block/2017-09/msg00449.html
Fix included in qemu-kvm-rhev-2.10.0-11.el7
Reproduced on qemu-kvm-rhev-10:2.10.0-9.el7: Steps: [root@dhcp-8-119 pkgs]# qemu-img create -f qcow2 /tmp/base.qcow2 64M [root@dhcp-8-119 pkgs]# qemu-img create -f qcow2 -b /tmp/base.qcow2 /tmp/mid.qcow2 [root@dhcp-8-119 pkgs]# qemu-img create -f qcow2 -b /tmp/mid.qcow2 /tmp/top.qcow2 [root@dhcp-8-119 pkgs]# /usr/libexec/qemu-kvm -drive file=/tmp/top.qcow2,backing.node-name=mid -qmp stdio {"QMP": {"version": {"qemu": {"micro": 0, "minor": 10, "major": 2}, "package": "(qemu-kvm-rhev-2.10.0-9.el7)"}, "capabilities": []}} VNC server running on ::1:5900 {"execute":"qmp_capabilities"} {"return": {}} {"execute":"change-backing-file", "arguments":{"device":"ide0-hd0","image-node-name":"mid","backing-file":"/dev/null"}} Result: qemu-kvm: block/io.c:1359: bdrv_aligned_pwritev: Assertion `child->perm & BLK_PERM_WRITE' failed. Aborted (core dumped) Verified on qemu-kvm-rhev-10:2.10.0-11.el7: Steps: Same as above. Result: Change backing file success. {"execute":"query-block"} "backing-filename": "/dev/null" Moving to VERIFIED based on above result.
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