[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH for-2.9-rc5 v2] block: Drain BH in bdrv_drained_
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-block] [PATCH for-2.9-rc5 v2] block: Drain BH in bdrv_drained_begin |
Date: |
Fri, 14 Apr 2017 09:51:44 +0100 |
On Fri, Apr 14, 2017 at 9:02 AM, Fam Zheng <address@hidden> wrote:
> @@ -398,11 +399,15 @@ void bdrv_drain_all(void);
> */ \
> assert(!bs_->wakeup); \
> bs_->wakeup = true; \
> - while ((cond)) { \
> - aio_context_release(ctx_); \
> - aio_poll(qemu_get_aio_context(), true); \
> - aio_context_acquire(ctx_); \
> - waited_ = true; \
> + while (busy_) { \
> + if ((cond)) { \
> + waited_ = busy_ = true; \
> + aio_context_release(ctx_); \
> + aio_poll(qemu_get_aio_context(), true); \
> + aio_context_acquire(ctx_); \
> + } else { \
> + busy_ = aio_poll(ctx_, false); \
> + } \
Wait, I'm confused. The current thread is not in the BDS AioContext.
We're not allowed to call aio_poll(ctx_, false).
Did you mean aio_poll(qemu_get_aio_context(), false) in order to
process defer to main loop BHs?
Stefan