On 28/05/2015 13:16, Fam Zheng wrote: > > On 28/05/2015 03:46, Fam Zheng wrote: > > > The main context uses iohandler and aio_dispatch, neither calls > > > aio_set_dispatching(). However, if we have [2], they can be changed to > > > aio_poll(), then would this idea work? > > > > I think it's a bad idea to handle aio_poll for context B in a different > > way, just because you have an outer aio_poll for context A... > > But we already do something similar: ignoring slirp, main_loop_wait() is like > an iothread aio_poll() without the "outermost differentiation", while the > current aio_poll() in bdrv_drain() is roughly "main_loop_wait() minus > iohandlers".
Right, but the two sets of iohandlers are stored in different places, so it's obvious that you don't execute all of them. On the other hand, examining global state in aio_poll is really bad. Paolo