[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH 05/14] test-bdrv-drain: Test AIO_WAIT_WHILE() in com
From: |
Kevin Wolf |
Subject: |
[Qemu-block] [PATCH 05/14] test-bdrv-drain: Test AIO_WAIT_WHILE() in completion callback |
Date: |
Fri, 7 Sep 2018 18:15:11 +0200 |
This is a regression test for a deadlock that occurred in block job
completion callbacks (via job_defer_to_main_loop) because the AioContext
lock was taken twice: once in job_finish_sync() and then again in
job_defer_to_main_loop_bh(). This would cause AIO_WAIT_WHILE() to hang.
Signed-off-by: Kevin Wolf <address@hidden>
---
tests/test-bdrv-drain.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/tests/test-bdrv-drain.c b/tests/test-bdrv-drain.c
index ab055e85f8..9641a20dd8 100644
--- a/tests/test-bdrv-drain.c
+++ b/tests/test-bdrv-drain.c
@@ -776,6 +776,11 @@ typedef struct TestBlockJob {
static void test_job_completed(Job *job, void *opaque)
{
+ TestBlockJob *s = container_of(job, TestBlockJob, common.job);
+
+ /* Provoke an AIO_WAIT_WHILE() call to verify there is no deadlock */
+ blk_flush(s->common.blk);
+
job_completed(job, 0, NULL);
}
--
2.13.6
- [Qemu-block] [PATCH 03/14] test-blockjob: Acquire AioContext around job_finish_sync(), (continued)
- [Qemu-block] [PATCH 03/14] test-blockjob: Acquire AioContext around job_finish_sync(), Kevin Wolf, 2018/09/07
- [Qemu-block] [PATCH 01/14] blockjob: Wake up BDS when job becomes idle, Kevin Wolf, 2018/09/07
- [Qemu-block] [PATCH 04/14] job: Use AIO_WAIT_WHILE() in job_finish_sync(), Kevin Wolf, 2018/09/07
- [Qemu-block] [PATCH 02/14] test-bdrv-drain: Drain with block jobs in an I/O thread, Kevin Wolf, 2018/09/07
- [Qemu-block] [PATCH 07/14] aio-wait: Increase num_waiters even in home thread, Kevin Wolf, 2018/09/07
- [Qemu-block] [PATCH 05/14] test-bdrv-drain: Test AIO_WAIT_WHILE() in completion callback,
Kevin Wolf <=
- [Qemu-block] [PATCH 06/14] block: Add missing locking in bdrv_co_drain_bh_cb(), Kevin Wolf, 2018/09/07
[Qemu-block] [PATCH 08/14] block-backend: Add .drained_poll callback, Kevin Wolf, 2018/09/07
[Qemu-block] [PATCH 09/14] block-backend: Fix potential double blk_delete(), Kevin Wolf, 2018/09/07