[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v11 01/19] block: Add bdrv_drain_all_{begin, end
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [PATCH v11 01/19] block: Add bdrv_drain_all_{begin, end}() |
Date: |
Thu, 20 Oct 2016 11:11:21 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Am 20.10.2016 um 10:25 hat Alberto Garcia geschrieben:
> On Wed 19 Oct 2016 07:11:20 PM CEST, Kevin Wolf wrote:
> >> bdrv_drain_all() doesn't allow the caller to do anything after all
> >> pending requests have been completed but before block jobs are
> >> resumed.
> >>
> >> This patch splits bdrv_drain_all() into _begin() and _end() for that
> >> purpose. It also adds aio_{disable,enable}_external() calls to
> >> disable external clients in the meantime.
> >>
> >> Signed-off-by: Alberto Garcia <address@hidden>
> >
> > This looks okay as a first step, possibly enough for this series
> > (we'll have to review this carefully), but it leaves us with a rather
> > limited version of bdrv_drain_all_begin/end that excludes many useful
> > cases. One of them is that John wants to use it around QMP
> > transactions.
> >
> > Specifically, you can't add a new BDS or a new block job in a
> > drain_all section because then bdrv_drain_all_end() would try to
> > unpause the new thing even though it has never been paused. Depending
> > on what else we did with it, this will either corrupt the pause
> > counters or just directly fail an assertion.
>
> The problem is: do you want to be able to create a new block job and let
> it run? Because then you can end up having the same problem that this
> patch is trying to prevent if the new job attempts to reopen a
> BlockDriverState.
No, as I wrote it would have to be automatically paused on creation if
it is created in a drained_all section. It would only actually start to
run after bdrv_drain_all_end().
Kevin
- [Qemu-devel] [PATCH v11 00/19] Support streaming to an intermediate layer, Alberto Garcia, 2016/10/14
- [Qemu-devel] [PATCH v11 01/19] block: Add bdrv_drain_all_{begin, end}(), Alberto Garcia, 2016/10/14
- Re: [Qemu-devel] [PATCH v11 01/19] block: Add bdrv_drain_all_{begin, end}(), Paolo Bonzini, 2016/10/15
- Re: [Qemu-devel] [PATCH v11 01/19] block: Add bdrv_drain_all_{begin, end}(), Kevin Wolf, 2016/10/19
- Re: [Qemu-devel] [PATCH v11 01/19] block: Add bdrv_drain_all_{begin, end}(), Alberto Garcia, 2016/10/20
- Re: [Qemu-devel] [PATCH v11 01/19] block: Add bdrv_drain_all_{begin, end}(),
Kevin Wolf <=
- Re: [Qemu-devel] [PATCH v11 01/19] block: Add bdrv_drain_all_{begin, end}(), John Snow, 2016/10/21
- Re: [Qemu-devel] [PATCH v11 01/19] block: Add bdrv_drain_all_{begin, end}(), Alberto Garcia, 2016/10/21
- Re: [Qemu-devel] [PATCH v11 01/19] block: Add bdrv_drain_all_{begin, end}(), John Snow, 2016/10/21
- Re: [Qemu-devel] [PATCH v11 01/19] block: Add bdrv_drain_all_{begin, end}(), Paolo Bonzini, 2016/10/24
- Re: [Qemu-devel] [PATCH v11 01/19] block: Add bdrv_drain_all_{begin, end}(), Alberto Garcia, 2016/10/25
- Re: [Qemu-devel] [PATCH v11 01/19] block: Add bdrv_drain_all_{begin, end}(), Paolo Bonzini, 2016/10/25
- Re: [Qemu-devel] [PATCH v11 01/19] block: Add bdrv_drain_all_{begin, end}(), Kevin Wolf, 2016/10/25
- Re: [Qemu-devel] [PATCH v11 01/19] block: Add bdrv_drain_all_{begin, end}(), Paolo Bonzini, 2016/10/25
- Re: [Qemu-devel] [PATCH v11 01/19] block: Add bdrv_drain_all_{begin, end}(), Kevin Wolf, 2016/10/25
- Re: [Qemu-devel] [PATCH v11 01/19] block: Add bdrv_drain_all_{begin, end}(), Alberto Garcia, 2016/10/25