[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 1/6] block: avoid recursive AioContext acquir
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH v2 1/6] block: avoid recursive AioContext acquire in bdrv_inactivate_all() |
Date: |
Thu, 7 Dec 2017 16:04:49 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 |
On 12/07/2017 02:13 PM, Stefan Hajnoczi wrote:
> From: Paolo Bonzini <address@hidden>
>
> BDRV_POLL_WHILE() does not support recursive AioContext locking. It
> only releases the AioContext lock once regardless of how many times the
> caller has acquired it. This results in a hang since the IOThread does
> not make progress while the AioContext is still locked.
>
> The following steps trigger the hang:
>
> $ qemu-system-x86_64 -M accel=kvm -m 1G -cpu host \
> -object iothread,id=iothread0 \
> -device virtio-scsi-pci,iothread=iothread0 \
> -drive if=none,id=drive0,file=test.img,format=raw \
> -device scsi-hd,drive=drive0 \
> -drive if=none,id=drive1,file=test.img,format=raw \
> -device scsi-hd,drive=drive1
> $ qemu-system-x86_64 ...same options... \
> -incoming tcp::1234
> (qemu) migrate tcp:127.0.0.1:1234
> ...hang...
>
> Tested-by: Stefan Hajnoczi <address@hidden>
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
> block.c | 14 +++++++++++---
> 1 file changed, 11 insertions(+), 3 deletions(-)
>
Reviewed-by: Eric Blake <address@hidden>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] [PATCH v2 0/6] block: avoid recursive AioContext acquire in bdrv_inactivate_all(), Stefan Hajnoczi, 2017/12/07
- [Qemu-devel] [PATCH v2 1/6] block: avoid recursive AioContext acquire in bdrv_inactivate_all(), Stefan Hajnoczi, 2017/12/07
- Re: [Qemu-devel] [PATCH v2 1/6] block: avoid recursive AioContext acquire in bdrv_inactivate_all(),
Eric Blake <=
- [Qemu-devel] [PATCH v2 2/6] docs: mark nested AioContext locking as a legacy API, Stefan Hajnoczi, 2017/12/07
- [Qemu-devel] [PATCH v2 3/6] blockdev: add x-blockdev-set-iothread force boolean, Stefan Hajnoczi, 2017/12/07
- [Qemu-devel] [PATCH v2 4/6] iotests: add VM.add_object(), Stefan Hajnoczi, 2017/12/07
- [Qemu-devel] [PATCH v2 5/6] iothread: fix iothread_stop() race condition, Stefan Hajnoczi, 2017/12/07
- [Qemu-devel] [PATCH v2 6/6] qemu-iotests: add 203 savevm with IOThreads test, Stefan Hajnoczi, 2017/12/07