On Wed, 05/06 14:07, Paolo Bonzini wrote: > > > On 06/05/2015 13:23, Fam Zheng wrote: > > virtio-blk now listens to op blocker change of the associated block > > backend. > > > > Up on setting op blocker on BLOCK_OP_TYPE_DEVICE_IO: > > > > non-dataplane: > > 1) Set VirtIOBlock.paused > > 2) In virtio_blk_handle_output, do nothing if VirtIOBlock.paused > > > > dataplane: > > 1) Clear the host event notifier > > 2) In handle_notify, do nothing if VirtIOBlock.paused > > > > Up on removing the op blocker: > > > > non-dataplane: > > 1) Clear VirtIOBlock.paused > > 2) Schedule a BH on the AioContext of the backend, which calls > > virtio_blk_handle_output, so that the previous unhandled kicks can > > make progress > > > > dataplane: > > 1) Set the host event notifier > > 2) Notify the host event notifier so that unhandled events are > > processed > > > > Signed-off-by: Fam Zheng <f...@redhat.com> > > Does non-dataplane need to do anything, since it uses iohandlers rather > than aio_set_event_notifier_handler?
I guess it's not for this specific bug. See this as an attempt on a general purpose "pause" mechanism to the device in investment for the future, for example, bdrv_aio_drain. ;-) I can drop it in v2 if you think the idea is not very helpful. Fam