On Wed, Sep 18, 2013 at 09:23:09AM +0100, Alex Bligh wrote: > Paolo, > > On 18 Sep 2013, at 08:57, Paolo Bonzini wrote: > > > Il 17/09/2013 19:32, Alex Bligh ha scritto: > >> > >> On 17 Sep 2013, at 18:04, Paolo Bonzini wrote: > >> > >>> Alex, what's missing before block.c and QED can use aio_timer_new on > >>> the main AioContext, instead of timer_new? > >> > >> If we assume at this stage the threading is no different, very little > >> I think. Off the top of my head it should be a case of: > >> > >> 1. Audit timer routines to ensure they are safe to call from > >> inside aio_poll rather than mainloop. EG if there is a timer > >> routine that itself calls aio_poll, that would presumably > >> be bad. A quick check suggests we need to think about the > >> coroutine stuff carefully here if we don't want recursion. > >> > >> 2. Replace timer_new by aio_timer_new > >> > >> 3. Cross fingers and hope for the best. > > > > Yes, that was my understanding too. Can we do it for 1.7? > > Don't see why not. I'd need to immerse myself in coroutines > and understand how they all work and am off on vacation for > a week tomorrow, so someone else (Stefan?) may be able to > do it faster than me. I expect it's just a case of saying > "yup, that will work" for someone who knows the co-routine > call-graph. If not, I'll have a look at it on my return.
Sorry I wasn't following this thread. But I will put together patches to convert existing block layer timers to use AioContext timers and finally let drain work without spinning. Stefan