[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 19/23] docs: mark nested AioContext locking as a lega
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PULL 19/23] docs: mark nested AioContext locking as a legacy API |
Date: |
Mon, 18 Dec 2017 14:35:26 +0000 |
See the patch for why nested AioContext locking is no longer allowed.
Signed-off-by: Stefan Hajnoczi <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
docs/devel/multiple-iothreads.txt | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/docs/devel/multiple-iothreads.txt
b/docs/devel/multiple-iothreads.txt
index e4d340bbb7..4f9012d154 100644
--- a/docs/devel/multiple-iothreads.txt
+++ b/docs/devel/multiple-iothreads.txt
@@ -1,4 +1,4 @@
-Copyright (c) 2014 Red Hat Inc.
+Copyright (c) 2014-2017 Red Hat Inc.
This work is licensed under the terms of the GNU GPL, version 2 or later. See
the COPYING file in the top-level directory.
@@ -92,8 +92,9 @@ aio_context_acquire()/aio_context_release() for mutual
exclusion. Once the
context is acquired no other thread can access it or run event loop iterations
in this AioContext.
-aio_context_acquire()/aio_context_release() calls may be nested. This
-means you can call them if you're not sure whether #2 applies.
+Legacy code sometimes nests aio_context_acquire()/aio_context_release() calls.
+Do not use nesting anymore, it is incompatible with the BDRV_POLL_WHILE() macro
+used in the block layer and can lead to hangs.
There is currently no lock ordering rule if a thread needs to acquire multiple
AioContexts simultaneously. Therefore, it is only safe for code holding the
--
2.14.3
- [Qemu-devel] [PULL 08/23] block: don't keep AioContext acquired after external_snapshot_prepare(), (continued)
- [Qemu-devel] [PULL 08/23] block: don't keep AioContext acquired after external_snapshot_prepare(), Stefan Hajnoczi, 2017/12/18
- [Qemu-devel] [PULL 10/23] block: don't keep AioContext acquired after blockdev_backup_prepare(), Stefan Hajnoczi, 2017/12/18
- [Qemu-devel] [PULL 11/23] block: don't keep AioContext acquired after internal_snapshot_prepare(), Stefan Hajnoczi, 2017/12/18
- [Qemu-devel] [PULL 12/23] block: drop unused BlockDirtyBitmapState->aio_context field, Stefan Hajnoczi, 2017/12/18
- [Qemu-devel] [PULL 13/23] iothread: add iothread_by_id() API, Stefan Hajnoczi, 2017/12/18
- [Qemu-devel] [PULL 14/23] blockdev: add x-blockdev-set-iothread testing command, Stefan Hajnoczi, 2017/12/18
- [Qemu-devel] [PULL 15/23] qemu-iotests: add 202 external snapshots IOThread test, Stefan Hajnoczi, 2017/12/18
- [Qemu-devel] [PULL 16/23] virtio-blk: make queue size configurable, Stefan Hajnoczi, 2017/12/18
- [Qemu-devel] [PULL 17/23] virtio-blk: reject configs with logical block size > physical block size, Stefan Hajnoczi, 2017/12/18
- [Qemu-devel] [PULL 18/23] block: avoid recursive AioContext acquire in bdrv_inactivate_all(), Stefan Hajnoczi, 2017/12/18
- [Qemu-devel] [PULL 19/23] docs: mark nested AioContext locking as a legacy API,
Stefan Hajnoczi <=
- [Qemu-devel] [PULL 20/23] blockdev: add x-blockdev-set-iothread force boolean, Stefan Hajnoczi, 2017/12/18
- [Qemu-devel] [PULL 21/23] iotests: add VM.add_object(), Stefan Hajnoczi, 2017/12/18
- [Qemu-devel] [PULL 22/23] iothread: fix iothread_stop() race condition, Stefan Hajnoczi, 2017/12/18
- [Qemu-devel] [PULL 23/23] qemu-iotests: add 203 savevm with IOThreads test, Stefan Hajnoczi, 2017/12/18
- Re: [Qemu-devel] [PULL 00/23] Block patches, Peter Maydell, 2017/12/18