I'll test it tomorrow. I assume you want to avoid calling
event_notifier_set() until function is reentered via aio_pool?
Yes. But actually, I need to check if it's possible to fix
bdrv_drain_all. If you're in coroutine context, you can defer the
draining to a safe point using a bottom half. If you're not in
coroutine context, perhaps bdrv_drain_all has to be made illegal. Which
means a bunch of code auditing...
For what it's worth, your solution also works fine, I couldn't recreate
hang with it. Updated patch proposal posted earlier today.
--
mg