[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH 07/14] aio-wait: Increase num_waiters even in home t
From: |
Kevin Wolf |
Subject: |
[Qemu-block] [PATCH 07/14] aio-wait: Increase num_waiters even in home thread |
Date: |
Fri, 7 Sep 2018 18:15:13 +0200 |
Even if AIO_WAIT_WHILE() is called in the home context of the
AioContext, we still want to allow the condition to change depending on
other threads as long as they kick the AioWait. Specfically block jobs
can be running in an I/O thread and should then be able to kick a drain
in the main loop context.
Signed-off-by: Kevin Wolf <address@hidden>
---
include/block/aio-wait.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/block/aio-wait.h b/include/block/aio-wait.h
index c85a62f798..46ba7f9111 100644
--- a/include/block/aio-wait.h
+++ b/include/block/aio-wait.h
@@ -77,10 +77,12 @@ typedef struct {
AioWait *wait_ = (wait); \
AioContext *ctx_ = (ctx); \
if (ctx_ && in_aio_context_home_thread(ctx_)) { \
+ atomic_inc(&wait_->num_waiters); \
while ((cond)) { \
aio_poll(ctx_, true); \
waited_ = true; \
} \
+ atomic_dec(&wait_->num_waiters); \
} else { \
assert(qemu_get_current_aio_context() == \
qemu_get_aio_context()); \
--
2.13.6
- [Qemu-block] [PATCH 00/14] Fix some jobs/drain/aio_poll related hangs, Kevin Wolf, 2018/09/07
- [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 <=
- [Qemu-block] [PATCH 05/14] test-bdrv-drain: Test AIO_WAIT_WHILE() in completion callback, Kevin Wolf, 2018/09/07
- [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