On 16/03/2016 11:10, Fam Zheng wrote: > An empty begin/end pair is almost the same as a bare bdrv_drain except > the aio_poll inside is wrapped by > aio_disable_external/aio_enable_external. > > This is safer, and is the only way to achieve quiescence in this > aio_poll(), because bdrv_drained_begin/end pair cannot span across > context detach/attach options, so it's not possible to do by the caller.
I'm still not sure about this patch. When starting dataplane, the ioeventfd is registered with iohandler.c so bdrv_drained_begin/end is not necessary. Likewise when stopping dataplane bdrv_set_aio_context is called after the thread has been stopped and thus the ioeventfd is not registered anymore as an external client. Paolo