On 05/29/2015 04:53 AM, Fam Zheng wrote:
> For various purposes, BDS users call bdrv_drain or bdrv_drain_all to make sure
> there are no pending requests duringA a series of operations on the BDS. But 
> in

s/duringA/during/

> the middle of operations, the caller may 1) yield from a coroutine 
> (mirror_run);
> 2) defer the next part of work to a BH (mirror_run); 3) call nested aio_poll
> (qmp_transaction); etc..
> 
> This lock/unlock API is introduced to help assure above complications won't
> spoil the purpose of the bdrv_drain(): bdrv_lock should help quiesce other
> readers and writers in the beginning of such operations, and bdrv_unlock 
> should
> resume the blocked requests.
> 
> A notifier list is added to allow devices to cooperate with the lock and pause
> themselves, for example, by not processing more requests on the NBD export.
> 
> Signed-off-by: Fam Zheng <f...@redhat.com>
> ---
>  block.c                   | 10 +++++++
>  block/io.c                | 69 
> +++++++++++++++++++++++++++++++++++++++++++++++
>  include/block/block.h     | 39 +++++++++++++++++++++++++++
>  include/block/block_int.h |  5 ++++
>  4 files changed, 123 insertions(+)
> 

I'll leave the technical review on this series to those more familiar
with coroutines.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to