Bug 1440667
Summary: | The guest exit abnormally with data-plane when do "block-job-complete" after do "drive-mirror" in QMP. | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Yongxue Hong <yhong> |
Component: | qemu-kvm-rhev | Assignee: | Fam Zheng <famz> |
Status: | CLOSED ERRATA | QA Contact: | Qianqian Zhu <qizhu> |
Severity: | high | Docs Contact: | |
Priority: | high | ||
Version: | 7.4 | CC: | aliang, chayang, coli, juzhang, knoel, michen, mrezanin, pbonzini, qizhu, qzhang, virt-maint, xfu |
Target Milestone: | rc | ||
Target Release: | --- | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | qemu-kvm-rhev-2.9.0-1.el7 | Doc Type: | If docs needed, set a value |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2017-08-02 04:35:59 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: |
Description
Yongxue Hong
2017-04-10 08:47:27 UTC
The backtrace debug info : qemu-kvm: block/io.c:164: bdrv_drain_recurse: Assertion `qemu_get_current_aio_context() == qemu_get_aio_context()' failed. Program received signal SIGABRT, Aborted. [Switching to Thread 0x3fffb40feaa0 (LWP 20251)] 0x00003fffb6f2edc8 in raise () from /lib64/libc.so.6 Missing separate debuginfos, use: debuginfo-install libdb-5.3.21-20.el7.ppc64le (gdb) bt #0 0x00003fffb6f2edc8 in raise () from /lib64/libc.so.6 #1 0x00003fffb6f30f4c in abort () from /lib64/libc.so.6 #2 0x00003fffb6f24b44 in __assert_fail_base () from /lib64/libc.so.6 #3 0x00003fffb6f24c34 in __assert_fail () from /lib64/libc.so.6 #4 0x000000004a88a264 in bdrv_drain_recurse (bs=0x4bad6c00) at block/io.c:164 #5 0x000000004a88abd8 in bdrv_drained_begin (bs=0x4bad6c00) at block/io.c:231 #6 0x000000004a82deac in bdrv_child_cb_drained_begin (child=<optimized out>) at block.c:719 #7 0x000000004a88ac74 in bdrv_parent_drained_begin (bs=0x4bacd000) at block/io.c:53 #8 bdrv_drained_begin (bs=0x4bacd000) at block/io.c:228 #9 0x000000004a88b6ac in bdrv_co_drain_bh_cb (opaque=0x3ffda5adfd80) at block/io.c:190 #10 0x000000004a928d58 in aio_bh_call (bh=0x4b7c7d40) at util/async.c:90 #11 aio_bh_poll (ctx=0x4b8c1b80) at util/async.c:118 #12 0x000000004a92d934 in aio_poll (ctx=0x4b8c1b80, blocking=<optimized out>) at util/aio-posix.c:682 #13 0x000000004a70cde8 in iothread_run (opaque=0x4ba209a0) at iothread.c:59 #14 0x00003fffb70e8728 in start_thread () from /lib64/libpthread.so.0 #15 0x00003fffb70113d0 in clone () from /lib64/libc.so.6 (gdb) Upstream fix for this in QEMU 2.9: commit 19dd29e8a77cd820515de5289f566508e0ed4926 Author: Fam Zheng <famz> Date: Fri Apr 7 14:54:11 2017 +0800 mirror: Fix aio context of mirror_top_bs It should be moved to the same context as source, before inserting to the graph. Reviewed-by: Eric Blake <eblake> Reviewed-by: Kevin Wolf <kwolf> Signed-off-by: Fam Zheng <famz> Signed-off-by: Kevin Wolf <kwolf> Reproduced on qemu-kvm-rhev-2.8.0-5.el7.x86_64, and verified on qemu-kvm-rhev-2.9.0-1.el7.x86_64&kernel-3.10.0-640.el7.x86_64. Steps: 1. Launch guest with data-plane: /usr/libexec/qemu-kvm -name rhel7_4-9343 -m 1G -smp 2 -object iothread,id=iothread0 -drive file=/home/kvm_autotest_root/images/rhel74-64-virtio.qcow2,format=qcow2,if=none,cache=none,media=disk,werror=stop,rerror=stop,id=drive-0 -device virtio-blk-pci,drive=drive-0,id=virtio-blk-0,iothread=iothread0,bootindex=0 -monitor stdio -qmp tcp:0:5555,server,nowait -vnc :3 2. block mirror and reopen: { "execute": "drive-mirror", "arguments": { "device": "drive-0","target": "/home/mirror1.qcow2","sync": "full","format": "qcow2" } } {"return": {}} {"timestamp": {"seconds": 1493187904, "microseconds": 180627}, "event": "BLOCK_JOB_READY", "data": {"device": "drive-0", "len": 3761504256, "offset": 3761504256, "speed": 0, "type": "mirror"}} { "execute": "block-job-complete", "arguments": { "device": "drive-0"}} {"return": {}} {"timestamp": {"seconds": 1493187916, "microseconds": 974757}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "drive-0", "len": 3761504256, "offset": 3761504256, "speed": 0, "type": "mirror"}} Result: qemu-kvm-rhev-2.8.0-5.el7.x86_64: Both qemu and guest hang. qemu-kvm-rhev-2.9.0-1.el7.x86_64: Both qemu and guest work well. Therefore moving to VERIFIED. 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-2017:2392 |