Paolo Bonzini c9d1a56174 block: only call aio_poll on the current thread's AioContext
aio_poll is not thread safe; for example bdrv_drain can hang if
the last in-flight I/O operation is completed in the I/O thread after
the main thread has checked bs->in_flight.

The bug remains latent as long as all of it is called within
aio_context_acquire/aio_context_release, but this will change soon.

To fix this, if bdrv_drain is called from outside the I/O thread,
signal the main AioContext through a dummy bottom half.  The event
loop then only runs in the I/O thread.

Reviewed-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <1477565348-5458-18-git-send-email-pbonzini@redhat.com>
Signed-off-by: Fam Zheng <famz@redhat.com>
2016-10-28 21:50:18 +08:00
..
2016-01-20 13:36:23 +01:00
2016-10-07 13:34:07 +02:00
2016-10-07 13:34:07 +02:00
2016-10-07 13:34:07 +02:00
2016-10-07 14:14:06 +02:00
2016-10-07 14:14:06 +02:00
2016-10-07 14:14:06 +02:00
2016-10-07 13:34:07 +02:00
2016-08-03 18:44:56 +02:00
2016-10-27 19:05:23 +02:00
2016-10-07 13:34:07 +02:00
2016-10-24 17:54:03 +02:00
2016-10-24 17:54:03 +02:00
2016-06-07 18:19:24 +03:00
2016-01-20 13:36:23 +01:00
2016-01-20 13:36:23 +01:00
2016-01-20 13:36:23 +01:00
2016-10-28 21:50:18 +08:00
2016-10-28 21:50:18 +08:00
2016-10-07 13:34:07 +02:00
2016-10-27 19:05:23 +02:00
2016-10-23 16:10:59 +02:00
2016-10-27 19:05:22 +02:00
2016-09-23 11:42:52 +08:00
2016-09-23 11:42:52 +08:00
2016-09-23 11:42:52 +08:00
2016-09-05 19:06:48 +02:00
2016-09-23 11:42:52 +08:00