[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v7 05/10] block: Introduce "drained begin/end" A
From: |
Fam Zheng |
Subject: |
Re: [Qemu-devel] [PATCH v7 05/10] block: Introduce "drained begin/end" API |
Date: |
Mon, 26 Oct 2015 09:35:56 +0800 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Fri, 10/23 16:13, Stefan Hajnoczi wrote:
> On Fri, Oct 23, 2015 at 11:08:09AM +0800, Fam Zheng wrote:
> > +void bdrv_drained_begin(BlockDriverState *bs)
> > +{
> > + if (!bs->quiesce_counter++) {
> > + aio_disable_external(bdrv_get_aio_context(bs));
> > + }
> > + bdrv_drain(bs);
> > +}
> > +
> > +void bdrv_drained_end(BlockDriverState *bs)
> > +{
> > + assert(bs->quiesce_counter > 0);
> > + if (--bs->quiesce_counter > 0) {
> > + return;
> > + }
> > + aio_enable_external(bdrv_get_aio_context(bs));
> > +}
>
> Why is quiesce_counter necessary? Can't we just rely on AioContext's
> disable_external_cnt?
It was added because bdrv_drain was conditional in a previous version, so yes
it can now be dropped, but we lose the explcitness of the assertion in
bdrv_drained_end. I was thinking that more "assert(!bs->quiesce_counter)" can
be useful in blk_aio_read/write etc..
Fam
- [Qemu-devel] [PATCH v7 00/10] block: Protect nested event loop with bdrv_drained_begin and bdrv_drained_end, Fam Zheng, 2015/10/22
- [Qemu-devel] [PATCH v7 02/10] nbd: Mark fd handlers client type as "external", Fam Zheng, 2015/10/22
- [Qemu-devel] [PATCH v7 03/10] dataplane: Mark host notifiers' client type as "external", Fam Zheng, 2015/10/22
- [Qemu-devel] [PATCH v7 01/10] aio: Add "is_external" flag for event handlers, Fam Zheng, 2015/10/22
- [Qemu-devel] [PATCH v7 04/10] aio: introduce aio_{disable, enable}_external, Fam Zheng, 2015/10/22
- [Qemu-devel] [PATCH v7 05/10] block: Introduce "drained begin/end" API, Fam Zheng, 2015/10/22
- [Qemu-devel] [PATCH v7 06/10] block: Add "drained begin/end" for transactional external snapshot, Fam Zheng, 2015/10/22
- [Qemu-devel] [PATCH v7 07/10] block: Add "drained begin/end" for transactional backup, Fam Zheng, 2015/10/22
- [Qemu-devel] [PATCH v7 08/10] block: Add "drained begin/end" for transactional blockdev-backup, Fam Zheng, 2015/10/22
- [Qemu-devel] [PATCH v7 09/10] block: Add "drained begin/end" for internal snapshot, Fam Zheng, 2015/10/22
- [Qemu-devel] [PATCH v7 10/10] tests: Add test case for aio_disable_external, Fam Zheng, 2015/10/22
- Re: [Qemu-devel] [PATCH v7 00/10] block: Protect nested event loop with bdrv_drained_begin and bdrv_drained_end, Kevin Wolf, 2015/10/23
- Re: [Qemu-devel] [PATCH v7 00/10] block: Protect nested event loop with bdrv_drained_begin and bdrv_drained_end, Stefan Hajnoczi, 2015/10/23