[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [RFC PATCH 02/12] block: Introduce bdrv_lo
From: |
Eric Blake |
Subject: |
Re: [Qemu-block] [Qemu-devel] [RFC PATCH 02/12] block: Introduce bdrv_lock and bdrv_unlock API |
Date: |
Fri, 29 May 2015 10:57:15 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 |
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 <address@hidden>
> ---
> 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
signature.asc
Description: OpenPGP digital signature
- [Qemu-block] [RFC PATCH 00/12] block: Protect block jobs with lock / unlock API, Fam Zheng, 2015/05/29
- [Qemu-block] [RFC PATCH 01/12] block: Use bdrv_drain to replace uncessary bdrv_drain_all, Fam Zheng, 2015/05/29
- [Qemu-block] [RFC PATCH 02/12] block: Introduce bdrv_lock and bdrv_unlock API, Fam Zheng, 2015/05/29
- Re: [Qemu-block] [Qemu-devel] [RFC PATCH 02/12] block: Introduce bdrv_lock and bdrv_unlock API,
Eric Blake <=
- [Qemu-block] [RFC PATCH 03/12] blockdev: Lock BDS during internal snapshot transaction, Fam Zheng, 2015/05/29
- [Qemu-block] [RFC PATCH 04/12] blockdev: Lock BDS during external snapshot transaction, Fam Zheng, 2015/05/29
- [Qemu-block] [RFC PATCH 05/12] blockdev: Lock BDS during drive-backup transaction, Fam Zheng, 2015/05/29
- [Qemu-block] [RFC PATCH 06/12] blockdev: Lock BDS during blockdev-backup transaction, Fam Zheng, 2015/05/29
- [Qemu-block] [RFC PATCH 07/12] block-backend: Add blk_add_lock_unlock_notifier, Fam Zheng, 2015/05/29
- [Qemu-block] [RFC PATCH 08/12] virtio-blk: Move complete_request to 'ops' structure, Fam Zheng, 2015/05/29
- [Qemu-block] [RFC PATCH 09/12] virtio-blk: Don't handle output when backend is locked, Fam Zheng, 2015/05/29
- [Qemu-block] [RFC PATCH 10/12] virtio-scsi-dataplane: Add backend lock listener, Fam Zheng, 2015/05/29
- [Qemu-block] [RFC PATCH 11/12] nbd-server: Clear "can_read" when backend is locked, Fam Zheng, 2015/05/29