[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 07/16] block: change drain to look only at on
From: |
Fam Zheng |
Subject: |
Re: [Qemu-devel] [PATCH v2 07/16] block: change drain to look only at one child at a time |
Date: |
Thu, 17 Mar 2016 11:10:05 +0800 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Wed, 03/16 15:16, Paolo Bonzini wrote:
> bdrv_requests_pending is checking children to also wait until internal
> requests (such as metadata writes) have completed. However, checking
> children is in general overkill. Children requests can be of two kinds:
>
> - requests caused by an operation on bs, e.g. a bdrv_aio_write to bs
> causing a write to bs->file->bs. In this case, the parent's in_flight
> count will always be incremented by at least one for every request in
> the child.
>
> - asynchronous metadata writes or flushes. Such writes can be started
> even if bs's in_flight count is zero, but not after the .bdrv_drain
> callback has been invoked.
>
> This patch therefore changes bdrv_drain to finish I/O in the parent
> (after which the parent's in_flight will be locked to zero), call
> bdrv_drain (after which the parent will not generate I/O on the child
> anymore), and then wait for internal I/O in the children to complete.
>
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
> v1->v2: moved bdrv_drain callback after in_flight is 0
> in the parent [from QED drain discussion]
This is nice!
Reviewed-by: Fam Zheng <address@hidden>
- [Qemu-devel] [PATCH v2 03/16] block: introduce bdrv_no_throttling_begin/end, (continued)
- [Qemu-devel] [PATCH v2 03/16] block: introduce bdrv_no_throttling_begin/end, Paolo Bonzini, 2016/03/16
- [Qemu-devel] [PATCH v2 02/16] block: move restarting of throttled reqs to block/throttle-groups.c, Paolo Bonzini, 2016/03/16
- [Qemu-devel] [PATCH v2 04/16] block: plug whole tree at once, introduce bdrv_io_unplugged_begin/end, Paolo Bonzini, 2016/03/16
- [Qemu-devel] [PATCH v2 06/16] block: add BDS field to count in-flight requests, Paolo Bonzini, 2016/03/16
- [Qemu-devel] [PATCH v2 05/16] mirror: use bottom half to re-enter coroutine, Paolo Bonzini, 2016/03/16
- [Qemu-devel] [PATCH v2 07/16] block: change drain to look only at one child at a time, Paolo Bonzini, 2016/03/16
- Re: [Qemu-devel] [PATCH v2 07/16] block: change drain to look only at one child at a time,
Fam Zheng <=
- [Qemu-devel] [PATCH v2 09/16] block: wait for all pending I/O when doing synchronous requests, Paolo Bonzini, 2016/03/16
- [Qemu-devel] [PATCH v2 12/16] aio: introduce aio_context_in_iothread, Paolo Bonzini, 2016/03/16
- [Qemu-devel] [PATCH v2 11/16] sheepdog: disable dataplane, Paolo Bonzini, 2016/03/16
- [Qemu-devel] [PATCH v2 08/16] blockjob: introduce .drain callback for jobs, Paolo Bonzini, 2016/03/16
- [Qemu-devel] [PATCH v2 10/16] nfs: replace aio_poll with bdrv_drain, Paolo Bonzini, 2016/03/16
- [Qemu-devel] [PATCH v2 13/16] block: only call aio_poll from iothread, Paolo Bonzini, 2016/03/16
- [Qemu-devel] [PATCH v2 16/16] aio: convert from RFifoLock to QemuRecMutex, Paolo Bonzini, 2016/03/16